PCNE#255(configure-network)
あるオンラインストアでは、ログインユーザーごとのカート状態をバックエンドで保持するため、同一クライアントからのリクエストを可能な限り同じインスタンスへ送りたいと考えています。外部アプリケーション ロードバランサーで設定すべきセッション アフィニティはどれですか。
正解:A
正解の根拠
HTTP(S) ベースのアプリケーション ロードバランサーで Cookie ベースのアフィニティを使う場合、`GENERATED_COOKIE` を選択するとロードバランサーが GCLB Cookie を発行し、同一ブラウザからのリクエストを同じバックエンドへ向けます。NAT 配下のクライアントが多い環境でも安定的にアフィニティが維持できます。
| アフィニティ | 用途 |
|---|---|
| NONE | ステートレス API、純粋分散 |
| CLIENT_IP | 送信元 IP ベース、NAT に弱い |
| GENERATED_COOKIE | HTTP 用、最も汎用 |
| HEADER_FIELD | 任意ヘッダー値、API ゲートウェイ向け |
| HTTP_COOKIE | アプリ提供の任意 Cookie |
不正解の理由
- B: NONE はアフィニティを保持しないためカート状態が散逸します。
- C: External App LB では CLIENT_IP_PORT_PROTO はサポートされません (Network LB の概念です)。
- D: ホストヘッダーはクライアントごとに変わらないため分散の偏りを生みます。
参考: https://cloud.google.com/load-balancing/docs/backend-service#session_affinity

コメント