すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:セッション永続性の設定

最終更新日:Sep 18, 2024

一部のアプリケーションでは、ショッピングカート、ログオン情報、ユーザーの好み、ゲームなどのユーザーデータを保護するために、ユーザーセッションの永続性を維持する必要があります。 同じクライアントからのリクエストが異なるサーバーに配信されると、ユーザーデータが失われる可能性があります。 これは、ユーザ体験を損なう。 Application Load Balancer (ALB) インスタンスのセッション維持を有効にすると、同じクライアントからのリクエストが同じバックエンドサーバーに転送され、データの一貫性が確保され、ユーザーエクスペリエンスが向上します。

背景情報

デフォルトでは、ALBはリクエストを異なるバックエンドサーバーに配信します。 セッション永続化機能を有効にすると、同じクライアントからのリクエストが同じバックエンドサーバーに転送されます。 これにより、バックエンドサーバーはステータス情報を維持し、クライアントに継続的なサービスを提供できます。

  • セッション維持無効: 同じクライアントからのリクエストは、ALBの異なるバックエンドサーバーに配信される可能性があります。 バックエンドサーバーにログインしてインタラクション情報を取得するシナリオなど、一部のシナリオでは、バックエンドサーバーに複数回ログインする必要がある場合があります。

  • セッション持続性が有効: 同じクライアントからのリクエストは、ALBの同じバックエンドサーバーに配信されます。 バックエンドサーバーにログインしてインタラクション情報を取得するシナリオなど、一部のシナリオでは、バックエンドサーバーに複数回ログインする必要はありません。

ALBインスタンスのセッション維持を有効にするには、Cookieを管理する方法を選択する必要があります。 次の方法がサポートされています。

  • Cookieの挿入: ALBは、クライアントに送信される最初の応答にSERVERIDおよびSERVERCORSID Cookieを挿入します。 SERVERCORSIDクッキーは、SERVERIDクッキーに基づいて生成され、samesite=None属性を有する。 クライアントからの後続の要求は、クッキーを搬送し、ALBは、要求を記録されたバックエンドサーバに転送する。

    説明

    セッション永続性が有効になっている場合、SameSite=Noneは自動的にCookieに設定されます。 属性を手動で設定する必要はありません。 これにより、ALBの転送ルールでクロスオリジンリソース共有 (CORS) が設定されている場合、ブラウザはCookieを保存できます。

  • cookieの書き換え: ALBがユーザー定義のcookieを検出すると、ALBは元のcookieをユーザー定義のcookieに書き換えます。 クライアントからの後続のリクエストはユーザー定義のcookieを持ち、ALBはそのリクエストを記録されたバックエンドサーバーに転送します。

制限事項

Function Computeタイプのサーバーグループを使用する場合、セッション永続性を設定する必要はありません。 詳細については、「サーバーグループの作成」をご参照ください。

前提条件

  • インターネット向けALBインスタンスが作成され、実行中です。 詳細については、「ALBインスタンスの作成」をご参照ください。

  • Function ComputeまたはIPタイプのサーバーグループが作成されます。 詳細については、「サーバーグループの作成」をご参照ください。

  • ECS01とECS02という名前の2つのElastic Compute Service (ECS) インスタンスが、リクエストを受信するバックエンドサーバーとして指定されています。 異なるバックエンドサービスがECS01とECS02にデプロイされています。 ECS01およびECS02への要求は、異なる応答を受け取る。 たとえば、ECS01は「Hello World! 」を返します。 これはECS01 "であり、ECS02は" Hello World! これはECS02 "です。 ECSインスタンスのセキュリティグループが、バックエンドサービスで使用されるポートへのリクエストを許可していることを確認します。

  • サーバグループにECS01とECS02が追加されます。 詳細については、「バックエンドサーバーの追加」をご参照ください。

  • ALBインスタンスのリスナーが作成されます。 詳細については、「HTTPリスナーの追加」、「HTTPSリスナーの追加」、および「QUICリスナーの追加」をご参照ください。

手順1: ALBインスタンスのセッション維持の設定

  1. ALB コンソールにログインします。

  2. 上部のナビゲーションバーで、サーバーグループを作成するリージョンを選択します。

  3. 左側のナビゲーションウィンドウで、ALB > サーバーグループを選択します。

  4. [サーバーグループ] ページで、管理するサーバーグループを見つけ、[操作] 列の [基本情報の変更] をクリックします。

  5. [基本情報の変更] ダイアログボックスで、[セッション永続性] をオンにします。

    Session Persistence: Session Persistenceをオンにし、Cookie Persistenceパラメーターを設定します。

    • [Cookieの挿入] を選択した場合、[Session Persistence Timeout Period] パラメーターを設定し、[Save] をクリックします。

    • [Cookieの書き換え] を選択した場合、[Cookie名] パラメーターを設定し、[保存] をクリックします。

      この例では、cookieの名前はBACKEND_SERVERです。 ビジネス要件に基づいて名前を指定できます。

(オプション) 手順2: バックエンドサーバーのCookieの設定

セッション維持を有効にし、cookieオプションをRewrite Cookieに設定した場合、バックエンドサーバーのcookieを設定する必要があります。

  1. ECSインスタンスにリモートでログインします。 詳細については、「ECS インスタンスへの接続」をご参照ください。

  2. webサーバーのCookieを設定します。

    説明

    Cookieの設定方法は、webサーバーの種類によって異なります。 次の手順では、一般的に使用されるwebサーバーでCookieを設定する方法を示します。 別のwebサーバを使用する場合は、webサーバのユーザーガイドを参照してください。

    Nginx

    この例では、CentOS 7.9オペレーティングシステムとNGINX 1.20.1が使用されています。 使用する環境に基づいて設定を調整します。

    1. NGINX設定ファイルを変更して保存します。 次のコードブロックは、例を示しています。 nginx -tコマンドを実行して、設定ファイルのパスを照会します。 ほとんどの場合、設定ファイルのパスは /etc/nginx/nginx.confです。 パスは、使用する環境によって異なる場合があります。

      http {
        # ...
        server {
          listen       80;
          # Set BACKEND_SERVER to the cookie name used to rewrite cookies. Set value to a custom string. 
          add_header Set-Cookie "BACKEND_SERVER=value";
          # ...
        }
      }
      
    2. 次のコマンドを実行して、NGINX設定ファイルをリロードします。

      sudo nginx -s reload

    Apache

    この例では、CentOS 7.9オペレーティングシステムとApache 2.4.6が使用されています。 使用する環境に基づいて設定を調整します。

    1. Apache設定ファイルを変更して保存します。 次のコードブロックは、例を示しています。 設定ファイルのデフォルトパスは /etc/httpd/conf/httpd.confです。 パスは、使用する環境によって異なる場合があります。

      # ...
      Listen 80
      # Set BACKEND_SERVER to the cookie name used to rewrite cookies. Set value to a custom string. 
      Header always set Set-Cookie "BACKEND_SERVER=value"
      # ...
    2. 次のコマンドを実行して、設定を有効にするためにApache設定ファイルをリロードします。

       sudo systemctl reload httpd.service
  3. 上記の手順を繰り返して、サーバーグループ内の他のバックエンドサーバーの設定を変更します。

ステップ3: セッション維持が有効かどうかをテストする

  1. ALB コンソールにログインします。

  2. 上部のナビゲーションバーで、ALBインスタンスがデプロイされているリージョンを選択します。 管理するALBインスタンスのドメイン名をコピーします。

  3. ブラウザからドメイン名にアクセスし、ページを更新して、同じサーバーにアクセスするかどうかをテストします。

    たとえば、最初のリクエストはECS01に送信されます。 ページを更新して、後続の要求もECS01に送信されるかどうかをテストします。

    ECS01验证结果

    リクエストがECS01とECS02の間で配信される場合、セッションの永続化は失敗します。 セッション永続化の設定を確認し、もう一度お試しください。

関連ドキュメント