Auto Scaling グループのゾーンシフト - Amazon EC2 Auto Scaling

Auto Scaling グループのゾーンシフト

ゾーンシフトは Amazon Application Recovery Controller (ARC) の機能です。ゾーンシフトを使用すると、1 つのアクションでアベイラビリティーゾーン内のアプリケーションの障害から迅速に復旧できます。Auto Scaling グループのゾーンシフトを有効にすると、グループが ARC ゾーンシフトサービスに登録されます。次に、AWS マネジメントコンソール、AWS CLI、または API を使用してゾーンシフトを開始できます。Auto Scaling グループは、アクティブなゾーンシフトのあるアベイラビリティーゾーンを障害ありとして扱います。

Auto Scaling グループのゾーンシフトの概念

先に進む前に、ARC ゾーンシフトとの統合に関連する次の主要概念を理解しておく必要があります。

ARC ゾーンシフト

Auto Scaling は、この機能を有効にすると Auto Scaling グループを ARC ゾーンシフトに登録できます。登録すると、ARC ListManagedResources API を使用してリソースを表示できます。詳細については、「Amazon Application Recovery Controller (ARC) デベロッパーガイド」の「Zonal shift in ARC」を参照してください。

アベイラビリティーゾーンの再調整

Auto Scaling は、各アベイラビリティーゾーンの容量のバランスを維持しようとします。アベイラビリティーゾーン間に不均衡が発生すると、Auto Scaling は自動的に不均衡の修正を試みます。詳細については、「インスタンスの分散」を参照してください。

動的なスケーリング

動的スケーリングは、スケーリングポリシーで選択したメトリクスに基づいて、Auto Scaling グループの希望する容量をスケールします。詳細については、「Amazon EC2 Auto Scaling の動的スケーリング」を参照してください。

ヘルスチェック

Auto Scaling は、Auto Scaling グループ内のすべてのインスタンスのヘルスステータスを定期的にチェックすることで、それらが実行中で良好な状態であることを確認します。異常なインスタンスを検出すると、Auto Scaling はインスタンスの置き換えをマークします。詳細については、「Auto Scaling グループでのインスタンスのヘルスチェック」を参照してください。

インスタンスの更新

Auto Scaling グループのインスタンスを更新するには、インスタンスの更新を使用できます。インスタンスの更新が開始されると、Auto Scaling は Auto Scaling グループ内のすべてのインスタンスを置き換えようとします。詳細については、「インスタンスの更新を使用して Auto Scaling グループのインスタンスを更新する」を参照してください。

事前スケーリング

アプリケーション用の残りのアベイラビリティーゾーンに十分な容量があるため、1 つのアベイラビリティーゾーンの損失は許容できます。

スケールアウト

Auto Scaling グループの希望する容量を増やすと、Auto Scaling は新しい希望する容量を達成するために追加のインスタンスの起動を試みます。デフォルトでは、Auto Scaling はバランスのとれた方法でインスタンスを起動し、Auto Scaling グループ内の有効な各アベイラビリティーゾーン間で同じ容量を維持します。

Auto Scaling グループに対するゾーンシフトの仕組み

次のアベイラビリティーゾーンを含む Auto Scaling グループがあるとします。

  • us-east-1a

  • us-east-1b

  • us-east-1c

すべてのアベイラビリティーゾーンでゾーンシフトが有効になっていて、us-east-1a で障害に気付き、ゾーンシフトをトリガーします。us-east-1a でゾーンシフトがトリガーされると、次の動作が発生します。

  • スケールアウト – Auto Scaling は、正常なアベイラビリティーゾーン (us-east-1b および us-east-1c) ですべての新しいキャパシティリクエストを起動します。

  • 動的スケーリング – Auto Scaling は、スケーリングポリシーがすべてのアベイラビリティーゾーンで希望する容量を減らすことをブロックします。Auto Scaling は、スケーリングポリシーがすべてのアベイラビリティーゾーンで希望する容量を増やすことはブロックしません。

  • インスタンスの更新 – Auto Scaling は、ゾーンシフトがアクティブになっている間に遅延したインスタンスの更新プロセスのタイムアウトを延長します。

次の表は、us-east-1a でゾーンシフトがトリガーされたときの各オプションのヘルスチェック動作を示しています。

障害があるアベイラビリティーゾーンのヘルスチェック動作選択 ヘルスチェックの動作

異常なものとの置換を実行

異常があるように見えるインスタンスは、すべてのアベイラビリティーゾーン (us-east-1aus-east-1b、および us-east-1c) で置き換えられます。

異常を無視

異常があるように見えるインスタンスは、us-east-1b および us-east-1c で置き換えられます。アクティブなゾーンシフトのあるアベイラビリティーゾーン (us-east-1a) でインスタンスは置き換えられません。

ゾーンシフトの使用に関するベストプラクティス

ゾーンシフトの使用時にアプリケーションの高可用性を維持するには、次のベストプラクティスをお勧めします。

  • EventBridge 通知をモニタリングして、進行中のアベイラビリティーゾーンの障害イベントが発生するタイミングを特定します。詳細については、「Auto Scaling イベントの処理に EventBridge を使用する」を参照してください。

  • 適切なしきい値を持つスケーリングポリシーを使用して、アベイラビリティーゾーンの損失を許容できる十分な容量があることを確認します。

  • 最小正常パーセンテージが 100 のインスタンスメンテナンスポリシーを設定します。この設定で、Auto Scaling は、異常なインスタンスを終了する前に、新しいインスタンスを使用する準備が整うのを待ちます。

事前スケーリングされたお客様には、以下もお勧めします。

  • 障害イベント中に異常なインスタンスを置き換える必要がないため、障害のあるアベイラビリティーゾーンのヘルスチェック動作として [異常を無視] を選択します。

  • Auto Scaling グループに対して ARC のゾーンオートシフトを使用します。ARC のゾーンオートシフト機能を使用すると、AWS がアベイラビリティーゾーンの障害を検出したときに、AWS がリソースのトラフィックをアベイラビリティーゾーンから遠ざけることができます。詳細については、「Amazon Application Recovery Controller (ARC) デベロッパーガイド」の「Zonal autoshift in ARC」を参照してください。

クロスゾーンが無効になっているロードバランサーを使用するお客様には、以下もお勧めします。

  • アベイラビリティーゾーンの分散に対して [バランシング (限定)] を使用します。

  • Auto Scaling グループとロードバランサーの両方でゾーンシフトを使用している場合は、まず Auto Scaling グループでゾーンシフトをキャンセルします。次に、すべてのアベイラビリティーゾーン間で容量のバランスがとれるまで待ってから、ロードバランサーでゾーンシフトをキャンセルします。

  • ゾーンシフトを有効にしてクロスゾーン無効のロードバランサーを使用すると容量のバランスが崩れる可能性があるため、Auto Scaling には追加の検証ステップが含まれています。ベストプラクティスに従っている場合は、AWS マネジメントコンソールチェックボックスを選択するか、CreateAutoScalingGroupUpdateAutoScalingGroup、または AttachTrafficSourcesskip-zonal-shift-validation フラグを使用して、この可能性を確認できます。

Auto Scaling グループでのゾーンシフトの使用の詳細については、AWS コンピューティングブログの「Using zonal shift with Amazon EC2 Auto Scaling」を参照してください。