スティッキーセッションとは
- ロードバランサーがクライアント状態を管理するために使用する情報。
- ロードバランサーを用いて負荷分散を行う場合に、セッション管理を行うWebアプリなどで毎回同じサーバーにアクセスさせるために利用する。
AWS ALBのスティッキーセッション
- AWS ALB(Application Load Balancer)ではCookieを利用したスティッキーセッション機能を利用することができる。
- 次の2種類のスティッキーセッション機能を提供している。
期間ベースCookie
-
ロードバランサーが生成した Cookie (
AWSALB
) を使用し、ターゲットグループ内の同じターゲットにリクエストをルーティングする。 -
フロー
アプリケーションベースCookie
-
アプリケーション側で生成した独自のCookieをALB設定に指定し、そのCookieを使用して、ターゲットグループ内の同じターゲットにリクエストをルーティングする。
- 期間ベースよりもより柔軟なセッション維持が可能。
-
フロー
-
ロードバランサーはターゲットグループ内のターゲットに最初のリクエストをルーティングする。
-
ターゲットは、ロードバランサーで設定したCookieと同じアプリケーションCookieをレスポンスに設定する。
-
ロードバランサーは、ターゲットからアプリケーションCookie を受信すると、持続性情報をキャプチャする新しい暗号化されたアプリケーションCookieを生成する。
-
クライアントは、両方のCookieをセットして後続のリクエストを行う。
-
ロードバランサーは、アプリケーションCookieを復号し、設定した持続期間が有効かどうかを確認する。その後、Cookie内の情報を使用して、ターゲットグループ内の同じターゲットにリクエストを送信する。
-
AWS CLIでの設定
-
期間ベースCookie
aws elbv2 modify-target-group-attributes --target-group-arn ARN --attributes Key=stickiness.enabled,Value=true Key=stickiness.lb_cookie.duration_seconds,Value=time-in-seconds
-
アプリケーションベースCookie
aws elbv2 modify-target-group-attributes --target-group-arn ARN --attributes Key=stickiness.enabled,Value=true Key=stickiness.type,Value=app_cookie Key=stickiness.app_cookie.cookie_name Value=my-cookie-name Key=stickiness.app_cookie.duration_seconds Value=time-in-seconds