SAAの問題で、ELB(Elastic Load Balancer)についての問題に躓いた。 そのため備忘録として残しておきます。

クロスゾーン負荷分散とは

複数のAZにまたがってサーバーが存在する場合に、すべてのサーバーに均等にリクエストを振り分ける機能です。

以下の図はクロスゾーン負荷分散が無効の場合のアーキテクチャです。

クロスゾーン負荷分散が無効

「Availability Zone A」には2つのサーバーがあり、それぞれに25%ずつリクエストの振り分けが行われます。

一方で「Availability Zone B」のサーバーは8つもあり、各サーバーは6.25%しかリクエストが振り分けられていません。

サーバーは合計して10個ありますが、均等にリクエストが振り分けられていないような状態になっています。

ここで、クロスゾーン負荷分散を有効にしてみます。

クロスゾーン負荷分散が有効

すると、AZ関係なくすべてのサーバーに10%ずつリクエストが振り分けられるようになりました。

これがクロスゾーン負荷分散の仕組みです。

どういう問題だった?

複数のAZにまたがって複数のEC2インスタンスを起動していて、ELBを使用してどうやって均等にリクエストを割り振るかといった問題でした。

クロスゾーン負荷分散という機能を知らず、選択肢の中にRoute53の加重ルーティングを使用するというものがあり、それを選択してしまいました。。悔しい〜

参考

Elastic Load Balancing の仕組み