アマゾン ウェブ サービス/EC2 でアベイラビリティ ゾーンが停止した場合に、別のアベイラビリティ ゾーンに新しいインスタンスを自動的に作成するために利用できるツールまたは手法はありますか?
アベイラビリティーゾーン (AZ) が停止した場合に自動フェイルオーバーを行う方法は理解できたと思いますが、停止からの自動復旧 (新しい AZ に新しいインスタンスを作成する) はどうでしょうか? それは可能ですか?
シナリオ例:
- 3 つのインスタンスのクラスターがあります。
- ELB はクラスターへのトラフィックをラウンドロビンします。
- 1 つのインスタンスを失うことはありますが、クラスター内の 2 つのインスタンスを失うことはありません。それでも完全に機能します。
- (3) のため、各インスタンスは異なる AZ にあります。それらを AZ A、B、および C と呼びます。
- ELB ヘルス チェックは、ELB が各インスタンスが正常であることを確認できるように構成されています。
- AZ A での AZ の停止により、1 つのインスタンスが失われたとします。
この時点で、ELB は失われたインスタンスがヘルス チェックに応答しなくなったことを確認し、そのインスタンスへのトラフィックのルーティングを停止します。すべてのリクエストは、残りの 2 つの正常なインスタンスに送信されます。フェイルオーバーが成功しました。
はっきりしないのは回復です。失われたインスタンスを新しい AZ (AZ D など) に自動的に (つまり、人間の介入なしで) 置き換える方法はありますか? これにより、障害が発生した AZ (A) が回避され、既にインスタンスが含まれている AZ (AZ B および C) は使用されません。
AutoScaling グループ?
AutoScaling Groups は有望な出発点のように思えますが、このユース ケースを適切に処理できるかどうかはわかりません。
質問:
AutoScaling グループでは、デッド/異常なインスタンスを置き換える新しいインスタンスを新しい AZ に作成する必要があることを指定する方法がないようです (たとえば、AZ A ではなく AZ D に作成します)。これは本当ですか?AutoScaling グループでは、失敗した AZ を削除して新しい AZ を自動的に追加するよう ELB に指示する方法がないようです。そうですか?
これらは AutoScaling グループの本当の欠点ですか、それとも何か不足していますか?
これが AutoScaling Groups で実行できない場合、これを自動的に実行する他のツールはありますか?
2011 年に、FourSquare、Reddit などは、単一のアベイラビリティ ゾーンに依存していることが発覚しました ( http://www.informationweek.com/cloud-computing/infrastructure/amazon-outage-multiple-zones-a-smart-str/240009598 ) 。 . それ以来、ツールは長い道のりを歩んできたようです。自動回復ソリューションがないことに驚いています。各企業は、独自のソリューションを導入したり、手動で復旧したりしていますか? それとも、彼らはサイコロを振って、それが再び起こらないことを望んでいるだけですか?
アップデート:
@Steffen Opel、詳細な説明をありがとう。Auto Scaling Group は見栄えが良くなりましたが、ELB で使用する場合はまだ問題があると思います。
最小、最大、および必要なセットを 3 に設定し、4 つの AZ にまたがる単一の Auto Scaling グループを作成するとします。自動スケーリングでは、3 つの異なる AZ に 1 つのインスタンスが作成され、4 番目の AZ は空のままになります。ELB を構成するにはどうすればよいですか? 4 つの AZ すべてに転送する場合、1 つの AZ には常にゼロ インスタンスがあり、ELB は引き続きトラフィックをルーティングするため、うまくいきません。これにより、トラフィックが空の AZ に向かうときに HTTP 503 が返されます。これは私自身、過去に経験したことがあります。これは私が以前に見たものの例です。
これには、ELB の AZ を、インスタンスが実行されているものだけに手動で更新する必要があるようです。これは、Auto Scaling によって異なる AZ の組み合わせが生じるたびに発生する必要があります。そうですか、それとも何か不足していますか?