Sticky Session とは?
ELBにクライアントとバインド先を固定するスティッキーセッションという機能があります。
HTTPレスポンスにELBでCookieを埋め込んで、
そのクッキーを基にバインド先のインスタンスを固定するというものです。
Cookieの情報をもとに、それぞれのClient PCは毎回同じserverからサービスを受ける。
サーバーが別のサーバーに変わってしまうと、Cookieの情報が失われてしまうので、アクセスごとにアクセスサーバーを変更しないことでユーザーの体験向上が見込める。
下記githubのCloudFormationで必要なリソースを作成できる。(EC2のインスタンスを3つ)
sticky-session-tutorial-keypairという名前でKeyPairを作成する必要があります。
github source:
https://github.com/yuks0810/aws-cfn-templates/blob/main/aws/cfn-templates/sticky-session-tutorial/sticky-session-tutorial.yml
Target Group作成
- target group name:
- sticky-session-tutorial-tg
- VPCは、
sticky-session-vpc
を選択 - Specify group detailsでinstancesを選択
- プロトコルは、HTTP/1, HTTP/2, gRPC好きなものを(今回はHTTP/1)
- Health check path
- /index.html
以下のようにpendingリストに追加。
ALBの作成
ELBの作成画面から、以下の設定でALBを作成
- Application Load Balancerを設定
- Load balancer name:
- sticky-session-tutorial-alb
- VPC:
- sticky-session-vpcを選択
- Mappings:
- 3つのCluodFormationで作成したinstanceを選択する
- Listeners and routing
- sticky-session-tutorial-tgを選択
- Protocol: HTTP
- Port: 80
- Security Group
- sticky-session-ec2-ec2-sgを選択
ここまで作成したら、ALBのDNSにアクセスすると3つのEC2インスタンスにそれぞれ接続できる。
現状ではsticky session未設定なので、それぞれのAZに振り分けてアクセスされる。
Sticky Sessionを設定していく
Target Groupから、この部分を変更していく。
stikynessにチェックを入れて、保存する。
これで、1分間アクセスするEC2が固定される。
1分後に再度アクセスすると別のinstanceが表示される。
終了。