スティッキーセッションとは
- ロードバランサーがクライアント状態を管理するために使用する情報。
- ロードバランサーを用いて負荷分散を行う場合に、セッション管理を行う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 

