AWS ANS-C01 対策 ALB スティッキーセッション(セッション維持)
ALBの背後でセッションが切れる問題の解決策「スティッキーセッション」を解説。なぜこの問題が起きるのか、そして期間ベースとアプリケーションベースの2種類のセッション維持機能の使い分けを、実践的な問題を通じて学びます。
この記事のポイント
- 1ステートフルなアプリケーションでセッション維持が必要な理由を理解する
- 2ALBのスティッキーセッション機能の設定方法を把握する
- 3期間ベースとアプリケーションベースのスティッキネスの違いを説明できる
目次
なぜセッションが切れるのか?
Application Load Balancer (ALB) は、通常、受け取ったリクエストをターゲットグループ内のEC2インスタンスに均等に分散させます。これはステートレスなアプリケーション(各リクエストが独立している)には最適です。
しかし、ログイン情報やショッピングカートの中身など、ユーザーごとのセッション情報をサーバー側で保持するステートフルなアプリケーションでは問題が発生します。1回目のリクエスト(ログイン)がサーバーAに、2回目のリクエスト(カート追加)がサーバーBに送られると、サーバーBはログイン情報を知らないため、ユーザーはログアウトされたように見えてしまいます。
解決策:スティッキーセッション
この問題を解決するのが、ALBのターゲットグループで設定できるスティッキーセッション(セッションの維持)機能です。
この機能を有効にすると、ALBは最初のリクエストを処理した際に、クライアントのブラウザに特別なCookieを発行します。クライアントからの後続のリクエストにそのCookieが含まれている場合、ALBはリクエストを同じターゲットインスタンスに転送します。これにより、セッション中、ユーザーは常に同じサーバーと通信することになり、セッション情報が維持されます。
実装方法1:期間ベースの維持
ALBが自動的にCookie(AWSALB
)を生成し、管理する方法です。管理者はセッションを維持したい期間(秒単位)を指定するだけで、簡単に設定できます。最も手軽な方法です。
実装方法2:アプリケーションベースの維持
アプリケーション自身が生成するカスタムCookieを利用する方法です。ALBに対して、セッション維持の判断に使うCookieの名前を指定します。アプリケーション側でセッションの有効期限をより細かく制御したい場合に適しています。
問題文に「アプリケーションコードの変更は避けたい」といった制約がある場合、ALBが自動でCookieを管理する期間ベースの維持が最適解となることが多いです。
実践問題で確認
ここまで学んだスティッキーセッションの知識を、実践的な問題で確認しましょう。
AWS認定高度なネットワーキング - 専門知識
練習問題
AWS認定高度なネットワーキング - 専門知識
練習問題
AWS認定高度なネットワーキング - 専門知識
練習問題
まとめ
ALBの背後にある複数のサーバーでアプリケーションを動かす際、「ログインが維持されない」「カートが空になる」といった問題が発生したら、それはステートフルなセッション管理ができていないサインです。
この問題の最も直接的で一般的な解決策が、ALBのターゲットグループで設定するスティッキーセッションです。問題文からこのパターンを読み取ることが、迅速な正解への鍵となります。
「ログイン後に
ALBの
理解度チェック
なぜステートフルなアプリケーションをALBの背後でそのまま動かすと問題が起きるのか説明できるか?
スティッキーセッションがCookieを使ってどのようにセッションを維持するのか説明できるか?