セッション持続性は何に使用されますか?
セッション維持は、同じクライアントからの要求を同じバックエンドサーバーに転送する方法です。
セッション維持を有効にするにはどうすればよいですか。
クラシックロードバランサー (CLB) リスナーを設定するときに、セッション維持を有効にできます。 リスナーごとに異なるセッション永続化ポリシーを設定できます。 セッションは最大で86400秒間持続できます。これは24時間に相当します。
CLB はどのタイプのセッション持続性をサポートしますか?
CLB は、レイヤー4のソースIPアドレスに基づいてTCPセッションとUDPセッションを持続します。 セッションは、レイヤ4で最大3600秒間持続させることができる。

CLB は、レイヤー7のCookieに基づいてHTTPおよびHTTPSセッションを持続します。 クッキーベースのセッションは、最大で86400秒間持続できます。これは24時間に相当します。

クッキーを処理するために使用できる方法は何ですか?
HTTPおよびHTTPSリスナーは、cookieの挿入とcookieの書き換えをサポートしています。
cookieの挿入: このオプションを選択した場合、cookieのタイムアウト期間を指定するだけで済みます。 CLB は、クライアントに送信される最初のHTTPまたはHTTPS応答パケットにcookie (SERVERID) を挿入します。 クライアントからの次のリクエストにはこのcookieが含まれているCLB、このリクエストは記録されたElastic Compute Service (ECS) インスタンスに転送されます。
cookieの書き換え: このオプションをオンにすると、HTTPまたはHTTPSレスポンスに含まれるcookieを指定できます。 ECSインスタンスのcookieのタイムアウト期間と有効期間を設定する必要があります。 CLB がユーザー定義cookieを検出すると、CLBは元のcookieをユーザー定義cookieで上書きします。 クライアントからの次の要求は、ユーザ定義のクッキーを搬送し、CLB、この要求を記録されたバックエンドサーバに転送する。 サーバーでCookieを設定する方法の詳細については、「セッション永続性の設定」をご参照ください。
CLBはドメイン名に基づいてセッションを永続化できますか?
はい、CLBはドメイン名に基づいてセッションを保持できます。
CLB は、ドメイン名に基づいてセッションを永続化するためにCookieを書き換えることができます。
cookieのタイムアウト期間はどのくらいですか?
CLBが挿入するcookie (SERVERID) のタイムアウト時間は、コンソールで1〜86400秒で指定できます。

CLBを上書きするユーザー定義cookieの場合、ECSインスタンスのタイムアウト期間を設定する必要があります。
クッキーを表示するには?
ブラウザを開き、F12を押して、SERVERIDまたはユーザー定義のcookieが応答に挿入されているかどうかを確認します。 cur l www.example.com -c /tmp/cookie123コマンドを実行してcookieを保存し、cur l www.example.com -b /tmp/cookie123コマンドを実行してcookieを表示することもできます。
一部のシナリオでセッションの永続性が失敗するのはなぜですか?
リスナーのセッション維持が有効かどうかを確認します。
HTTPおよびHTTPSリスナーは、4xxステータスコードを持つレスポンスにCookieを挿入してセッションを保持できません。
解決策: HTTPまたはHTTPSリスナーの代わりにTCPリスナーを使用します。 TCPリスナーは、クライアントIPアドレスに基づいてセッションを持続します。 バックエンドサーバーは、Cookieを挿入または検証して、セッションが永続化されることを確認できます。
HTTP 302リダイレクトは、セッションを永続化するためのSERVERID文字列を変更します。
CLBがHTTPステータスコード302を運ぶ応答にクッキーを挿入すると、SERVERID文字列が変更されます。 その結果、セッションを持続させることができない。
原因を确认するには、ブラウザまたはパケットキャプチャソフトウェアを使用してリクエストとレスポンスを确认してください。 次に、302ステータスコードがパケットに含まれているかどうか、およびcookieのSERVERID文字列が変更されているかどうかを確認します。
解決策: HTTPまたはHTTPSリスナーの代わりにTCPリスナーを使用します。 TCPリスナーは、クライアントIPアドレスに基づいてセッションを持続します。 バックエンドサーバーは、Cookieを挿入または検証して、セッションが永続化されることを確認できます。
タイムアウト時間は小さい値に設定される。 タイムアウト期間をより大きな値に設定できます。
Linux curlコマンドを使用してセッションの永続性をテストする方法?
テストページを作成します。
各バックエンドサーバーにテストページを作成します。 テストページでバックエンドサーバーのプライベートIPアドレスを確認できます。 次の図は、出力パラメーターの例を示しています。 プライベートIPアドレスは、リクエストが配信されるバックエンドサーバーを示します。 プライベートIPアドレスは、CLBがセッションを保持できるかどうかをテストするために使用されます。

Linuxでcurlコマンドを実行します。
この例では、Linuxを実行するCLBインスタンスのIPアドレスは10.170.XX.XXで、作成されたページのURLは
http:// 10.170.XX.XX/check.jspです。Linuxを実行しているサーバーにログオンします。
次のコマンドを実行して、バックエンドサーバーによって挿入されたcookieを照会します。
curl -c test.cookie http://10.170.XX.XX/check.jsp説明デフォルトでは、CLBはCookieを挿入してセッションを保持します。 ただし、カールはクッキーを送信または保存しません。 したがって、テストを実行する前にcookieを保存する必要があります。 そうでない場合、curlテスト結果は、セッション持続性が無効であることを示す。
cookieを保存した後、次のコマンドを実行します。
for ((a=1;a<=30;a++)); do curl -b test.cookie http://10.170.XX.XX/check.jsp | grep '10.170.XX.XX'; sleep 1; done説明a<=30は、実行するテストの数を示します。 この値は、ビジネス要件に基づいて設定できます。
grep '10.170.XX. XX'のIPアドレスをECSインスタンスのプライベートIPアドレスに設定します。上記のテストで返されたIPアドレスを確認します。 同じIPアドレスが返された場合は、CLBがセッションを永続化できることを示します。