

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Auto Scaling グループのヘルスチェックについて
<a name="health-checks-overview"></a>

このトピックでは、使用可能なヘルスチェックタイプの概要と、Amazon EC2 Auto Scaling ヘルスチェックをアプリケーションと統合する際の主な考慮事項について説明します。

**Topics**
+ [ヘルスチェックタイプ](#available-health-checks)
+ [Amazon EC2 ヘルスチェック](#instance-health-detection)
+ [Elastic Load Balancing ヘルスチェック](#elastic-load-balancing-health-checks)
+ [VPC Lattice ヘルスチェック](#vpc-lattice-health-checks)
+ [Amazon EC2 Auto Scaling によってダウンタイムが最小限に抑えられる仕組み](#minimize-downtime)
+ [ウォームプール内のインスタンスのヘルスチェック](#health-checks-for-instance-in-a-warm-pool)
+ [ヘルスチェックの考慮事項](#health-check-considerations)

## ヘルスチェックタイプ
<a name="available-health-checks"></a>

Amazon EC2 Auto Scaling は、以下のヘルスチェックの 1 つ、または複数を使用することで、`InService` インスタンスのヘルスステータスを判断できます。


****  

| ヘルスチェックタイプ | チェックする事柄 | 
| --- | --- | 
| Amazon EC2 ステータスチェックと予定されているイベント | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/health-checks-overview.html)これは、Auto Scaling グループに対するデフォルトのヘルスチェックタイプです。 | 
| Elastic Load Balancing ヘルスチェック | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/health-checks-overview.html)このヘルスチェックタイプを実行するには、Auto Scaling グループに対してこのタイプを有効にする必要があります。 | 
| VPC Lattice ヘルスチェック | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/health-checks-overview.html)このヘルスチェックタイプを実行するには、Auto Scaling グループに対してこのタイプを有効にする必要があります。 | 
| Amazon EBS ヘルスチェック | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/health-checks-overview.html)このヘルスチェックタイプを実行するには、Auto Scaling グループに対してこのタイプを有効にする必要があります。 | 
| カスタムヘルスチェック |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/health-checks-overview.html)  | 

## Amazon EC2 ヘルスチェック
<a name="instance-health-detection"></a>

インスタンスが起動されると、インスタンスは Auto Scaling グループにアタッチされ、`InService` 状態になります。Auto Scaling グループ内のインスタンスの異なるライフサイクル状態に関する詳細については、「[Amazon EC2 Auto Scaling インスタンスのライフサイクル](ec2-auto-scaling-lifecycle.md)」を参照してください。

Amazon EC2 Auto Scaling は、Auto Scaling グループ内のすべてのインスタンスのヘルスステータスを定期的にチェックすることで、それらが実行中で良好な状態であることを確認します。

**ステータスチェック**  
Amazon EC2 Auto Scaling は、Amazon EC2 インスタンスのステータスチェックとシステムステータスチェックの結果を使用して、インスタンスのヘルスステータスを判断します。インスタンスが `running` 以外の Amazon EC2 状態である場合、またはステータスチェックのステータスが `impaired` になった場合、Amazon EC2 Auto Scaling はインスタンスを異常であると見なし、そのインスタンスを置き換えます。これには、インスタンスが以下のいずれかの状態にある場合が含まれます。
+  `stopping` 
+  `stopped` 
+  `shutting-down` 
+  `terminated` 

Amazon EC2 ステータスチェックに特別な設定は必要なく、常に有効になっています。詳細については、「*Amazon EC2 ユーザーガイド*」の「[ステータスチェックのタイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html#types-of-instance-status-checks)」を参照してください。

**重要**  
Amazon EC2 Auto Scaling は、何のアクションも実行せずにステータスチェックを不合格にすることがあります。ステータスチェックが失敗すると、Amazon EC2 Auto Scaling は が問題を解決 AWS するまで数分待ちます。ステータスチェックのステータスが `impaired` になっても、インスタンスは直ちに `Unhealthy` としてマークされません。さらに、EC2 Auto Scaling は、ステータスチェックが `insufficient-data` を返す場合、インスタンスを `Unhealthy` としてマークしません。  
ただし、インスタンスが `running` 状態ではなくなったことを Amazon EC2 Auto Scaling が検出すると、この状況は即時不合格として扱われます。この場合、インスタンスは直ちに `Unhealthy` としてマークされ、置き換えられます。

**予定されているイベント**  
Amazon EC2 は、インスタンスのイベントを、特定のタイムスタンプ後に実行されるようにスケジュールすることがあります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスの予定されているイベント](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html)」を参照してください。

インスタンスのいずれかが予定されているイベントの影響を受ける場合、Amazon EC2 Auto Scaling は、そのインスタンスを異常と見なして置き換えます。インスタンスのシャットダウンは、タイムスタンプで指定された日付と時刻に到達するまで開始されません。

## Elastic Load Balancing ヘルスチェック
<a name="elastic-load-balancing-health-checks"></a>

Auto Scaling グループに対して Elastic Load Balancing ヘルスチェックを有効にすると、Amazon EC2 Auto Scaling はこれらのヘルスチェックの結果を使用して、インスタンスのヘルスステータスを判断できます。

Auto Scaling グループに対して Elastic Load Balancing ヘルスチェックを有効にする前に、Elastic Load Balancing ロードバランサーを設定し、インスタンスが正常かどうかを判断するためのヘルスチェックを設定する必要があります。詳細については、「[Elastic Load Balancing ロードバランサーをアタッチする準備をする](getting-started-elastic-load-balancing.md)」を参照してください。

ロードバランサーを Auto Scaling グループにアタッチすると、次のようになります。
+ Amazon EC2 Auto Scaling が、Auto Scaling グループ内のインスタンスをロードバランサーに登録します。
+ インスタンスの登録が終了すると、インスタンスは `InService` 状態になり、ロードバランサーで使用できるようになります。

デフォルトで、Amazon EC2 Auto Scaling は Elastic Load Balancing ヘルスチェックの結果を無視しますが、Auto Scaling グループに対してこれらのヘルスチェックを有効にした後、登録されたインスタンスを Elastic Load Balancing が `Unhealthy` と報告すると、Amazon EC2 Auto Scaling は、次回の定期ヘルスチェックでそのインスタンスを `Unhealthy` とマークし、置き換えます。

ロードバランサーに対して Connection Draining が有効になっている場合、Amazon EC2 Auto Scaling は、処理中のリクエストが完了するまで、または最大タイムアウト時間が終了するまで待機してから、異常なインスタンスを終了します。

**注記**  
ロードバランサーをアタッチして Auto Scaling グループについての Elastic Load Balancing ヘルスチェックを有効にする方法については、「[Auto Scaling グループに Elastic Load Balancing ロードバランサーをアタッチする](attach-load-balancer-asg.md)」を参照してください。  
グループに対して Elastic Load Balancing ヘルスチェックを有効にすると、Amazon EC2 Auto Scaling は、Elastic Load Balancing から異常として報告されたインスタンスを置き換えることができます。ただし、置き換えは、ロードバランサーが `InService` 状態になってから行われます。詳細については、「[ロードバランサーのアタッチメントステータスを確認する](load-balancer-status.md)」を参照してください。

## VPC Lattice ヘルスチェック
<a name="vpc-lattice-health-checks"></a>

デフォルトでは、Amazon EC2 Auto Scaling は、VPC Lattice ヘルスチェックの結果を無視します。オプションで、Auto Scaling グループに対してこれらのヘルスチェックを有効にできます。これらのヘルスチェックを有効化した後、VPC Lattice が登録されたインスタンスを `Unhealthy` として報告すると、Amazon EC2 Auto Scaling は、次回の定期ヘルスチェックでそのインスタンスを `Unhealthy` としてマークし、置き換えます。インスタンスを登録してからその状態をチェックする処理は、Elastic Load Balancing ヘルスチェックの仕組みと同じです。

**注記**  
VPC Lattice ターゲットグループをアタッチし、Auto Scaling グループに対して VPC Lattice ヘルスチェックを有効にする方法については、「[VPC Lattice ターゲットグループを Auto Scaling グループにアタッチする](attach-vpc-lattice-target-group-asg.md)」を参照してください。  
グループに対して VPC Lattice ヘルスチェックを有効にすると、Amazon EC2 Auto Scaling は、VPC Lattice から異常として報告されたインスタンスを置き換えることができます。ただし、置き換えは、ターゲットグループが `InService` 状態になってから行われます。詳細については、「[VPC Lattice ターゲットグループのアタッチメントステータスを確認する](verify-target-group-attachment-status.md)」を参照してください。

## Amazon EC2 Auto Scaling によってダウンタイムが最小限に抑えられる仕組み
<a name="minimize-downtime"></a>

デフォルトでは、新しいインスタンスは既存のインスタンスが終了すると同時にプロビジョニングされるため、新しいインスタンスが完全に動作するまで、新しいリクエストが受け入れられなくなる可能性があります。

Amazon EC2 Auto Scaling は、実行されていない (つまり [set-instance-health](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/set-instance-health.html) コマンドで `Unhealthy` とマークされた) インスタンスがあることを認識すると、それらを直ちに置き換えます。ただし、他のインスタンスが異常である場合、Amazon EC2 Auto Scaling は不合格状態からの回復に以下のアプローチを使用します。このアプローチは、一時的な問題、または誤設定されたヘルスチェックが原因で発生する可能性があるダウンタイムを最小限に抑えます。
+ スケーリングアクティビティが進行中で、Auto Scaling グループのキャパシティが希望するキャパシティより 10% 以上少ない場合、Amazon EC2 Auto Scaling は、進行中のスケーリングアクティビティの終了を待ってから、異常なインスタンスを置き換えます。
+ スケールアウト時、Amazon EC2 Auto Scaling はインスタンスが最初のヘルスチェックに合格するのを待ちます。また、デフォルトのインスタンスウォームアップが完了するのを待って、新しいインスタンスの準備が整っていることも確実にします。
+ インスタンスがウォームアップを完了し、グループのキャパシティが希望するキャパシティの 90% を超えると、Amazon EC2 Auto Scaling は以下のように異常なインスタンスを置き換えます。
  + Amazon EC2 Auto Scaling が一度に置き換えるインスタンスはグループの希望容量の最大 10% のみで、異常なインスタンスのすべてが置き換えられるまで続行されます。
  + インスタンスを置き換えるときは、新しいインスタンスが最初のヘルスチェックに合格するのを待ちます。また、デフォルトのインスタンスウォームアップが完了するのも待ち、完了後に続行します。

**注記**  
10% の値が結果として 1 未満になるほど Auto Scaling グループのサイズが小さい場合、通常と異なり、Amazon EC2 Auto Scaling は異常なインスタンスを一度に 1 つずつ置き換えます。これは、グループのダウンタイムの原因になる可能性があります。
[インスタンスのメンテナンスポリシーを設定](https://docs.aws.amazon.com//autoscaling/ec2/userguide/set-instance-maintenance-policy-on-group.html)して、Auto Scaling が異常なインスタンスを置き換えるレートを変更することで、デフォルトの 10% の値を変更できます。ただし、Auto Scaling はインスタンスを異常としてマークするレートをスロットリングできます。  
例えば、Auto Scaling グループ内のすべてのインスタンスが異常であると Elastic Load Balancing ヘルスチェックが報告し、ロードバランサーが `InService` 状態である場合、Amazon EC2 Auto Scaling は一度に異常としてマークするインスタンス数を減らすことがあります。そうすることで、他のシナリオに適用される 10% よりも、一度に置き換えられるインスタンスの数を大幅に削減することができます。これにより、問題を修正する時間が確保され、Amazon EC2 Auto Scaling がグループ全体を自動的に終了することはありません。

## ウォームプール内のインスタンスのヘルスチェック
<a name="health-checks-for-instance-in-a-warm-pool"></a>

Amazon EC2 Auto Scaling はウォームプール内のインスタンスのヘルスチェックも行います。詳細については、「[ヘルスチェックのステータスとヘルスチェックの失敗理由を表示する](warm-pools-health-checks-monitor-view-status.md)」を参照してください。

## ヘルスチェックの考慮事項
<a name="health-check-considerations"></a>

Amazon EC2 Auto Scaling ヘルスチェックを使用する際の考慮事項を次に示します。
+ 終了処理中のインスタンス、または起動中のインスタンスで何かを実行する必要がある場合は、ライフサイクルフックを使用することができます。これらのフックを使用すると、Amazon EC2 Auto Scaling がインスタンスを起動または終了する時点で、カスタムアクションを実行できます。詳細については、「[Amazon EC2 Auto Scaling のライフサイクルフック](lifecycle-hooks.md)」を参照してください。
+ Amazon EC2 Auto Scaling は、そのヘルスチェックから Amazon EC2 ステータスチェックと予定されているイベントを削除する方法を提供しません。インスタンスが置き換えられないようにしたい場合は、個々の Auto Scaling グループについて `ReplaceUnhealthy` プロセスと `HealthCheck` プロセスを停止することをお勧めします。詳細については、「[Amazon EC2 Auto Scaling プロセスの中断と再開](as-suspend-resume-processes.md)」を参照してください。
+ 異常なインスタンスのヘルスステータスを手動で `Healthy` に戻す場合は、[set-instance-health](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/set-instance-health.html) コマンドの使用を試みることができます。エラーが発生する場合、その原因はインスタンスが既に終了中であるためだと考えられます。通常、[set-instance-health](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/set-instance-health.html) コマンドを使用してインスタンスのヘルスステータスを `Healthy` に戻すことは、`ReplaceUnhealthy` プロセスまたは `Terminate` プロセスが停止している場合にのみ有効です。
+ ヘルスチェックの影響を受けずにインスタンスのトラブルシューティングが必要な場合は、インスタンスを `Standby` 状態にすることができます。Amazon EC2 Auto Scaling は、`Standby` 状態のインスタンスに対して、そのインスタンスを稼働状態に戻すまではヘルスチェックを実行しません。詳細については、「[Auto Scaling グループからインスタンスを一時的に削除する](as-enter-exit-standby.md)」を参照してください。
+ インスタンスを削除すると、関連付けられたすべての Elastic IP アドレスは関連付けを解除され、新しいインスタンスと自動的に関連付けられることはありません。これらの Elastic IP アドレスと新しいインスタンスは、手動で関連付けるか、ライフサイクルフックベースのソリューションを使用して自動的に関連付ける必要があります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Elastic IP アドレス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)」を参照してください。
+ 同様に、インスタンスが終了されると、それにアタッチされている EBS ボリュームがデタッチ (または、ボリュームの `DeleteOnTermination` 属性に応じて削除) されます。これらの EBS ボリュームは、新しいインスタンスに手動でアタッチするか、ライフサイクルフックベースのソリューションを使用して自動的にアタッチする必要があります。詳細については、「*Amazon EBS ユーザーガイド*」の「[インスタンスへの Amazon EBS ボリュームのアタッチ](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-attaching-volume.html)」を参照してください。