ELBヘルスチェックのタイムアウト

ELBのヘルスチェックを理解する

ELBヘルスチェックとは

  • 今回、ターゲットのCPU使用率が高くヘルスチェックの応答が遅延する事象を経験しました。ヘルスチェックのタイムアウトについて調べ、設定を変更しましたので、まとめます。
  • 先ず、ELBヘルスチェックについて整理します。以下、ドキュメントからの引用です。  
    • Application Load Balancer は、ステータスをテストするため、登録されたターゲットに定期的にリクエストを送信します。これらのテストは、ヘルスチェックと呼ばれます。
    • 各ロードバランサーノードは、ロードバランサーに対して有効になっているアベイラビリティーゾーンの正常なターゲットにのみ、リクエストをルーティングします。各ロードバランサーノードは、ターゲットが登録されているターゲットグループのヘルスチェック設定を使用して、各ターゲットの状態を確認します。
    • ターゲットグループに異常な登録済みターゲットのみが含まれている場合、ロードバランサーノードは異常なターゲット間でリクエストをルーティングします。

 

ヘルスチェックのタイムアウト設定

タイムアウトを変更するには?

  • ロードバランサーは、指定されたポート、プロトコル、および ping パスを使用して、HealthCheckIntervalSeconds 秒ごとに、登録された各ターゲットにヘルスチェックリクエストを送信します。
  • ELBヘルスチェックは、EC2のAWSコンソールからターゲットグループの設定にて変更します。
  • デフォルトのタイムアウトは5秒です。(日本語、英語の両パターンを貼り付けます)

タイムアウト / インターバルの説明

  • 以下、上記設定画面でタイムアウト、インターバルの説明です。EC2、Lambdaで値が異なります。
  • HealthCheckTimeoutSeconds
    • ヘルスチェックを失敗と見なす、ターゲットからレスポンスがない時間 (秒単位)。範囲は 2~120 秒です。ターゲットタイプが instance または ip の場合のデフォルトは 5 秒で、ターゲットタイプが lambda の場合のデフォルトは 30 秒です。
  • HealthCheckIntervalSeconds
    • 個々のターゲットのヘルスチェックの概算間隔 (秒単位)。範囲は 5~300 秒です。ターゲットタイプが instance または ip の場合のデフォルトは 30 秒で、ターゲットタイプが lambda の場合のデフォルトは 35 秒です。

ターゲットのヘルスステータス一覧

  • ターゲットグループのターゲットから確認できる各インスタンスのステータスは、下記種類となります。
initial ロードバランサーは、ターゲットを登録中か、ターゲットで最初のヘルスチェックを実行中です。
healthy ターゲットは正常です。
unhealthy ターゲットはヘルスチェックに応答しなかったか、ヘルスチェックに合格しませんでした。
unused ターゲットがターゲットグループに登録されていないか、ターゲットグループがロードバランサーのリスナールールで使用されていません。または、ロードバランサーに対して有効ではないアベイラビリティーゾーンにターゲットがあります。
draining ターゲットは登録解除中で、Connection Draining 中です。

AWS, EC2, ELB

Posted by takaaki