AWS Elastic Beanstalk
開発者ガイド

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

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

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

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

例 .ebextensions/autoscaling.config

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

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