過去問ドリル

LinuCレベル3 プラットフォームスペシャリスト 高可用性プラットフォームの構築 問23

高可用性プラットフォームの構築/ロードバランサーの構築

HAProxyの設定ファイルにおけるtimeout connect・timeout client・timeout serverの役割に関する説明として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「高可用性プラットフォームの構築」に対応。実際の試験問題ではありません)

正解: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ディレクティブで設定します。
LinuCレベル3 プラットフォームスペシャリストの問題を演習モードで解く