LinuCレベル4 システムアーキテクト 可用性の設計 問18
可用性の設計/負荷分散と障害の局所化ECサイトのWebサーバー群の前段にロードバランサを置く。振り分けとヘルスチェックの設定方針として、適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「可用性の設計」に対応。実際の試験問題ではありません)
- A性能の異なるサーバーが混在しているため、各サーバーの処理能力に比例した重みを付けた重み付きラウンドロビンで振り分ける
- B1本の接続が長く続き処理時間のばらつきも大きい通信は、その時点の接続数が最も少ないサーバーを選ぶ最小接続で振り分ける
- Cヘルスチェックは連続して数回失敗したら振り分けから外し、連続して数回成功したら戻すようにして、揺らぎによる出入りを防ぐ
- DHTTPSの通信をロードバランサで復号せずTCPのまま中継する構成とし、Cookieの値を見て同じ利用者を同じサーバーへ振り分ける
正解:D
解説
ロードバランサの振り分け方式は、サーバーの性能差や接続の特性に合わせて選びます。性能差があれば重み付き、接続の長さや処理時間がばらつくなら最小接続が偏りを抑えます。ヘルスチェックは、一時的な応答の遅れで外したり戻したりを繰り返さないよう、失敗・成功の連続回数に閾値を設けます(HAProxyのfall・riseなど)。CookieのようなHTTPの内容で振り分けるには、ロードバランサがHTTPを解釈できる必要があり、HTTPSならロードバランサでTLSを終端するL7の構成にしなければなりません。
選択肢ごとの解説
- A誤り(正しい記述)。処理能力に応じた重みを付けると、性能の低いサーバーへの過負荷を避けられます。
- B誤り(正しい記述)。接続が長く続く通信では、接続数を均等にする最小接続の方が、単純なラウンドロビンより負荷の偏りを抑えられます。
- C誤り(正しい記述)。失敗と成功の連続回数に閾値を設けると、一時的な揺らぎでサーバーが振り分けから出入りを繰り返す事態を防げます。
- D正しい(誤っている記述)。TLSを復号せずに中継するとHTTPのヘッダは暗号化されたままで、Cookieは読めません。Cookieで振り分けるにはロードバランサでTLSを終端するか、送信元IPアドレスによる固定など別の方式を使います。