ELB からトラフィックを分散するための推奨される方法は、複数のアベイラビリティ ゾーンに同じ数のインスタンスを配置することです。例えば:
ELB
- インスタンス 1 (us-east-a)
- インスタンス 2 (us-east-a)
- インスタンス 3 (us-east-b)
- インスタンス 4 (us-east-b)
現在、プログラムで (またはコントロール パネルを介して) インスタンスをデタッチできるようにする 2 つの興味深い ELB API が提供されています。
- インスタンスの登録解除
- アベイラビリティーゾーンを無効にする (その後、そのゾーン内のインスタンスを無効にします)
ELB 開発者ガイドには、可用性ゾーンを無効にした場合の影響について説明するセクションがあります。そのセクションの注記は特に興味深いものです。
ロードバランサーは常に、有効なすべてのアベイラビリティーゾーンにトラフィックを分散します。アベイラビリティーゾーンがロードバランサーに対して無効になる前に、アベイラビリティーゾーン内のすべてのインスタンスが登録解除されているか異常である場合、そのアベイラビリティーゾーンに送信されたすべてのリクエストは、DisableAvailabilityZonesForLoadBalancer がそのアベイラビリティーゾーンを呼び出すまで失敗します。
上記のメモで興味深いのは、DisableAvailabilityZonesForLoadBalancer を呼び出すと、ELB が即座に利用可能なゾーンのみにリクエストの送信を開始できることを意味する可能性があることです。その結果、無効なアベイラビリティ ゾーンのサーバーでメンテナンスを実行している間、ダウンタイムがゼロになる可能性があります。
上記の「理論」には、詳細なテストまたは Amazon クラウド エンジニアによる承認が必要です。