Auto Scaling ヘルスチェックの設定 - AWS Elastic Beanstalk

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

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

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

応答を停止したアプリケーションに対応するインスタンスを Auto Scaling で置き換える場合は、設定ファイルを使用して、Elastic Load Balancing ヘルスチェックを使用するように Auto Scaling グループを設定できます。次の例では、Amazon EC2 のステータスチェックに加えて、ロードバランサーのヘルスチェックを使用してインスタンスの状態を確認するようにグループを設定します。

例 .ebextensions/autoscaling.config

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

HealthCheckType および HealthCheckGracePeriod プロパティの詳細については、AWS CloudFormation ユーザーガイドの「AWS።AutoScaling።AutoScalingGroup」および Amazon EC2 Auto Scaling ユーザーガイドの「Auto Scaling インスタンスのヘルスチェック」を参照してください。

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