メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

Auto Scaling ヘルスチェックの設定

Auto Scaling は、起動した各 Amazon EC2 インスタンスの状態をモニタリングします。インスタンスが予期せず終了した場合、Auto Scaling は終了を検出し、代わりのインスタンスを起動します。デフォルトでは、ご使用の環境向けに作成された Auto Scaling は Amazon EC2 ステータスチェックを使用します。環境のインスタンスが EC2 ステータスチェックに失敗した場合、そのインスタンスは停止され、Auto Scaling により置き換えられます。

EC2 ステータスチェックは、インスタンスで実行されているアプリケーション、サーバー、Docker コンテナの状態ではなく、インスタンスの状態のみを確認するものです。アプリケーションがクラッシュしたが、それが実行されていたインスタンスが正常なままである場合、ロードバランサーの対象から外れる可能性はありますが、Auto Scaling によって自動的に置き換えられることはありません。アプリケーションがクラッシュしてすぐに Auto Scaling によってインスタンスが置き換えられた場合は、デフォルトの動作でトラブルシューティングします。起動直後にアプリケーションがクラッシュした場合でも、問題の原因を判別することはできません。

アプリケーションが応答を停止したインスタンスを Auto Scaling によって置き換える場合は、設定ファイルを使用して、Elastic Load Balancing ヘルスチェックを使用するように Auto Scaling グループを設定することができます。この設定ファイルでは、ロードバランサーのヘルスチェックを使用して、インスタンスのヘルスステータスを判断するようグループに指示します。EC2 ステータスチェックは行われません。

例 .ebextensions/autoscaling.config

Resources:
  AWSEBAutoScalingGroup:
    Type: "AWS::AutoScaling::AutoScalingGroup"
    Properties:
      HealthCheckType: ELB
      HealthCheckGracePeriod: 300

デフォルトでは、Elastic Load Balancing ヘルスチェックは、ポート 80 を経由してインスタンスに TCP 接続を試みるように設定されています。これにより、インスタンスで実行されているウェブサーバーが接続を受け入れたことを確認できますが、ロードバランサーのヘルスチェックをカスタマイズして、ウェブサーバーだけでなくアプリケーションが良好な状態であることを確認することもできます。猶予期間の設定は、インスタンスがヘルスチェックで失敗した後に、インスタンスを終了して置き換えることなく保留する秒数を設定します。ロードバランサーの対象から外れた後にインスタンスが復旧する可能性があるため、アプリケーションに適した時間をインスタンスに指定します。