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::AutoScaling::AutoScalingGroup」 (AWS CloudFormation ユーザーガイド) と「Auto Scaling インスタンスのヘルスチェック」 (Amazon EC2 Auto Scaling ユーザーガイド) を参照してください。

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