LinuCレベル3 プラットフォームスペシャリスト 高可用性プラットフォームの構築 問23
高可用性プラットフォームの構築/ロードバランサーの構築HAProxyの設定ファイルにおけるtimeout connect・timeout client・timeout serverの役割に関する説明として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「高可用性プラットフォームの構築」に対応。実際の試験問題ではありません)
- Atimeout connectはHAProxyからバックエンドへのTCP接続確立待機時間、timeout clientはクライアント側の無通信タイムアウト、timeout serverはバックエンド側の無通信タイムアウトをそれぞれ設定する
- Btimeout connectはクライアントとHAProxy間のTCP確立待機時間であり、timeout serverはバックエンドサーバーが再起動完了するまでの準備待ち時間を設定するディレクティブである
- C3つのタイムアウト値はいずれもバックエンドサーバーとの通信に関するもので、クライアントとHAProxy間のタイムアウトは別の専用ディレクティブで設定する必要がある
- Dtimeout serverはHAProxyプロセスがグレースフルシャットダウン時に既存の接続処理を待つ最大猶予時間であり、この時間を超えると既存接続を強制切断してプロセスが終了する
正解:A
解説
HAProxyの3つのタイムアウトはそれぞれ異なる通信フェーズに適用されます。timeout connectはHAProxyがバックエンドへTCP接続を確立するまでの最大待機時間(TCPハンドシェイク)、timeout clientはクライアントとHAProxy間でデータ送受信が途絶えた場合の切断までの時間、timeout serverはHAProxyとバックエンド間でデータが届かない場合の切断までの時間です。WebSocketや長時間ポーリングを行うアプリケーションではこれら3つを適切に長めに設定する必要があります。
選択肢ごとの解説
- A正しい。timeout connectはバックエンドへのTCP確立待機、timeout clientはクライアント側の無通信タイムアウト、timeout serverはバックエンド側の無通信タイムアウトをそれぞれ設定します。
- B誤り。timeout connectはクライアントとHAProxy間ではなく、HAProxyとバックエンドサーバー間のTCP接続確立の待機時間を設定します。timeout serverはバックエンドの起動待ちではなく、データが届かない無通信時間の上限です。
- C誤り。timeout clientはクライアントとHAProxy間の無通信タイムアウトを設定します。3つのタイムアウトはクライアント側とバックエンド側の双方をカバーしており、別のディレクティブは不要です。
- D誤り。timeout serverはグレースフルシャットダウン時の猶予時間ではなく、バックエンドからのデータが届かない無通信時間の上限です。グレースフルシャットダウンの猶予時間はhard-stop-afterディレクティブで設定します。