EC2 Auto Scaling 環境下、AZ 障害が発生した際に、削除された EC2 インスタンスが別の AZ で自動的に復旧する方法を教えてください
困っていること
EC2 Auto Scaling を利用しています。
AZ 障害が発生した際に、削除された EC2 インスタンスが別の AZ で自動的に復旧する方法を教えてください。
前提として、EC2 Auto Scaling グループのアベイラビリティーゾーンディストリビューションは、デフォルトの 「バランスの取れたベストエフォート」 で設定します。
どう対応すればいいの?
EC2 Auto Scaling においてゾーンシフトを有効化し、障害時に特定のアベイラビリティーゾーンへのインスタンス起動を回避する構成とすることで、ご要望の挙動を実現可能です。
ゾーンシフトは、Amazon Application Recovery Controller (ARC) の機能です。ゾーンシフトを使用すると、1 つのアクションでアベイラビリティーゾーンのアプリケーション障害からすばやく回復できます。Auto Scaling グループのゾーンシフトを有効にすると、グループは ARC ゾーンシフトサービスに登録されます。その後、 AWS CLI、 AWS Management Console、または API を使用してゾーンシフトを開始できます。Auto Scaling グループは、アクティブなゾーンシフトでアベイラビリティーゾーンを障害ありとして扱います。
なお、EC2 が削除され、別 AZ に新たな EC2 が起動される動作を実現するためには、 ImpairedZoneHealthCheckBehavior を ReplaceUnhealthy にご設定ください。
これにより、障害のある AZ に存在する不健全なインスタンスは終了され、EC2 Auto Scaling により正常な AZ に新たな EC2 インスタンスが起動されることが想定されます。
ASG でゾーンシフトを使用するには、新しい ASG を作成する際か、既存の ASG を更新する際に、AvailabilityZoneImpairmentPolicy パラメータを設定する必要があります。このパラメータには2つのオプションがあります。ゾーンシフトの実行能力を有効または無効にするZonalShiftEnabledと、ImpairedZoneHealthCheckBehaviourです。後者のオプションでは、EC2 Auto Scaling によって不健全と識別されたインスタンスを無視するか置換するかを選択できます。
For Health check behavior, choose Ignore unhealthy or Replace unhealthy. For more information, see How zonal shift works for Auto Scaling groups.
補足
希望キャパシティを 2 以上に設定し、複数 AZ に分散させた構成でゾーンシフトを有効化することをお勧めします。