LinuCレベル3 プラットフォームスペシャリスト 高可用性プラットフォームの構築 問6
高可用性プラットフォームの構築/Webサーバーによる負荷分散nginxのupstreamブロックにおけるip_hashディレクティブの役割として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「高可用性プラットフォームの構築」に対応。実際の試験問題ではありません)
- AクライアントのIPアドレスからハッシュ値を計算し、同じクライアントを毎回同じサーバーへ振り分ける
- Bリクエストごとに乱数で振り分け先を選び、接続を均等に分散させる
- Cアクセス元のIPアドレスを条件に、特定のネットワークからのアクセスを拒否する
- Dバックエンドへ転送する際に、送信元IPアドレスをnginx自身のアドレスへ書き換えて接続元を隠す
正解:A
解説
nginxのip_hashディレクティブは、クライアントのIPアドレスをもとにハッシュ値を計算し、同じIPアドレスからのリクエストが毎回同じバックエンドサーバーへ振り分けられるようにする方式です。セッション情報をサーバー側でローカルに保持しているアプリケーションで、同一クライアントを常に同じサーバーへ届けたい場合(スティッキーセッション的な用途)に使われます。
選択肢ごとの解説
- A正しい。ip_hashはクライアントIPのハッシュ値で振り分け先を固定し、セッションの維持に使われます。
- B誤り。乱数で選ぶのはrandomディレクティブの動作で、ip_hashは同じクライアントを同じサーバーへ固定します。
- C誤り。アクセスの許可・拒否はallow/denyディレクティブの役割です。
- D誤り。送信元アドレスの扱いはproxy_set_header等の別の設定で、ip_hashの役割ではありません。