警告として、サービスを 2 つのアベイラビリティ ゾーンに配置したからといって、耐障害性があるとは限りません。
たとえば、私が行ったセットアップの 1 つは、2 つのゾーンとして us-east-1a us-east-1b を使用して、ロード バランサーに 4 台のサーバーを配置することでした。数か月前の Amazon の停止により、ロード バランサーが適切に機能していなかったため、私のソフトウェアでいくつかの停止が発生しました。彼らはまだリクエストを転送していましたが、ゾーンの 1 つで私が持っていた 2 つのデッド インスタンスもまだリクエストを受信していました。ロード バランサー ロジックの一部は、デッド インスタンスを削除することですが、ロード バランサー キューがバックログされたため、これらのインスタンスは削除されませんでした。私のセットアップでは、各ゾーンに 2 つのロード バランサーが 1 つずつあるため、リクエストに応答するインスタンスがなかったため、1 つのロード バランサーへのすべてのリクエストがタイムアウトしていました。幸いなことに、ブラウザーは 2 番目のロード バランサーでリクエストを再試行したため、フィードはまだ読み込まれていましたが、非常に低速でした。
私のアドバイスは、2 つのリージョンで 2 つのアベイラビリティ ゾーンのみを使用することを選択した場合、システムが別のアベイラビリティ ゾーンのどの部分にも依存していないことを確認することです。私にとって、2 つの完全に独立したシステムを異なるゾーンで起動するのに余分なコストをかける価値はないので、将来この問題を回避することはできません。しかし、ソフトウェアが重要で、サービスを 1 時間停止すると余分なハードウェアを実行するコストが発生する場合は、サーバーを追加して正しくセットアップする価値があります。
また、AWS のサポートに料金を支払い、AWS のエンジニアと協力して、設計に高可用性の欠陥がないことを確認することをお勧めします。
私が議論した問題の要約: http://aws.amazon.com/message/67457/