みなさん、こんにちは。サニービュー事業部の小寺です。

今日は、Auto Scalingのヘルスチェックについて、お伝えします。

Auto Scaling インスタンスのHealth チェック

Auto Scaling インスタンスのヘルスステータスは、正常または異常のどちらかです。 Auto Scaling グループ内のすべてのインスタンスは正常な状態で起動されます。

Amazon EC2 Auto Scaling が異常であると通知しない限り、インスタンスは正常であると見なされます。

では、どうやって正常か異常か判定され、通知がされるのでしょうか。
正常か異常かのヘルスチェックは、以下の3パターンあります。

・Amazon EC2
・Elastic Load Balancing(ELB)
・カスタムヘルスチェック

■EC2のヘルスチェック

EC2のヘルスチェックはデフォルトで有効になっています。特に設定の必要はありません。

Amazon EC2 ステータスチェックの結果を使用してインスタンスのヘルスステータスを確認します。システムステータスがimpairedと
以下の状態にある場合、Amazon EC2 Auto Scaling はインスタンスを異常であると見なし、代替インスタンスを起動します。
・stopping
・stopped
・shutting-down
・terminated

■ELBのヘルスチェック

Auto Scalingを使用したELBヘルスチェックを使用して、正常なインスタンスのみをELBに追加できます。
Auto ScalingはElastic Load Balancingとも統合されているため、ロードバランサーが管理するヘルスチェックに合格すると、新しいインスタンスはすべてロードバランシングプールに自動的に追加されます。

Elastic Load Balancingは、単純なpingまたはより高度な接続の試行またはリクエストを使用して、登録されたEC2インスタンスの状態をテストします。

ヘルスチェックは、インスタンスが正常か異常かを判断するためのしきい値が定義されています。たとえば、ポート80に10秒ごとにpingを実行し、成功したpingのしきい値を10回超えた後、インスタンスがInServiceであると報告するElastic Load Balancingヘルスチェックポリシーを設定できます。

pingリクエストがタイムアウトし、100秒経過した場合、インスタンスはOutofServiceであると報告されます。Auto Scalingと組み合わせて、Auto Scalingポリシーで指示されている場合、OutofServiceであるインスタンスを置き換えることができます。
スケールダウンの場合、ロードバランサーはEC2インスタンスをプールから削除し、終了する前に現在の接続をドレインします。

■カスタムヘルスチェック

カスタムヘルスチェックがある場合、ヘルスチェックから情報を Amazon EC2 Auto Scaling に送信し、Amazon EC2 Auto Scaling がその情報を使用します。たとえば、インスタンスが正常に機能していないと判断した場合は、インスタンスのヘルスステータスを Unhealthy に設定できます。Amazon EC2 Auto Scaling が次回インスタンスのヘルスチェックを行うときは、インスタンスが異常であると判断して代替インスタンスを起動します。

■Auto Scaling グループでヘルスチェックの設定へロードバランサーも追加する

EC2のヘルスチェックはデフォルトで有効になっています。ここでは、ELBを追加してみましょう。

1) Amazon EC2 Auto Scaling コンソールへ接続します。 https://console.aws.amazon.com/ec2autoscaling/

2) グループにチェックをします。
[Auto Scaling グループ] ページの下に、チェックをつけたグループに関する情報がタブごとに確認できます。

3) [詳細] タブで、[ヘルスチェック]、[編集] の順に選択します。

4) [Health check type (ヘルスチェックタイプ)] で、[Enable ELB health checks (ELB ヘルスチェックを有効にする)] を選択します

※ヘルスチェックを使用する場合、Health チェックの猶予期間に、Amazon EC2 Auto Scaling がインスタンスのヘルスステータスを確認するまでに待機する必要がある時間 (秒単位) を入力します。新しいインスタンスは、多くの場合、ヘルスチェックに合格する前に簡単なウォームアップのための時間が必要です。十分なウォームアップ期間を設けるためには、グループのヘルスチェックの猶予期間を、アプリケーションの想定される開始期間と一致するように設定します。

[Update (更新)] にチェックします。

5) [インスタンス管理] タブの [インスタンス] で、インスタンスのヘルスステータスを表示できます [ヘルスステータス] 列に、新しく追加したヘルスチェックの結果「EC2&ELB」が表示されます。

■まとめ

Auto Scaling インスタンスのHealth チェックには3つの方法があります。その中でもEC2はデフォルトで有効です。
・Amazon EC2
・Elastic Load Balancing(ELB)
・カスタムヘルスチェック

SunnyCloudではAWSに関する構築、移行、データ分析、AWSリセール(請求代行)サービスの提供をしています。無料相談受付中です。⇒こちら