Help us understand the problem. What is going on with this article?

Cross-Zone Load Balancing を有効にしない理由がない件

More than 5 years have passed since last update.

今北産業

Cross-Zone Load Balancing は
今すぐ
設定すべき

kwsk

これまで

2013年11月まで、AmazonEC2 の ELB (Elastic Load Balancing) を使うとき、こんなことに注意する必要がありました。

AZ (Availability Zone) 配下の EC2 インスタンス台数は均等化を推奨

AWSマイスターシリーズにも出てくる、有名な注意点です。

推奨されていることを無視すると何が起こるかというと、アクセスの偏りが発生します。

ELB を立てると、ご存じの通り elbname-1234567890.ap-northeast-1.elb.amazonaws.com といったホスト名が振られます。その中に、ap-northeast-1a のインスタンスを1台、ap-northeast-1c のインスタンスを5台ぶら下げたとします。すると、1a のインスタンスには 1c の5倍のアクセスが集中します。

なぜかというと、elbname-1234567890.ap-northeast-1.elb.amazonaws.com にアクセスした時、1a に行く確率と 1c に行く確率が同じだからです。elb のホスト名を解決する際に、DNS ラウンドロビンで、1a のロードバランサか、1c のロードバランサかのどちらかの IP 等確率で返ってきます。どちらの AZ に何台のインスタンスがあるかに関わらず、です。なので、50% の確率でインスタンスが1台しかない 1a に、50% の確率でインスタンスが5台ある 1c にアクセスが割り振られ、結果として 1a のインスタンスには5倍のアクセスが集中することになります。

これから

しかし、11月の神アップデートにて、このような事態に悩まされることは無くなりました。Cross-Zone Load Balancing のリリースです。

ホスト名解決の際に、どちらかのロードバランサの IP が等確率で返ってくるところは、これまでと同じです。違うのはその先で、1a のロードバランサの IP が返ってきたとしても、その先の負荷分散の対象が 1a の1台と、1c の5台全てになります。

図にするとこんな感じです(AWSマイスターシリーズ
のスライドを元に改変)

CrossZoneLoadBalancing.jpg

設定については、AWS CLI を使ってサクッできます。

aws elb modify-load-balancer-attributes --load-balancer-name yourelbname --load-balancer-attributes '{"CrossZoneLoadBalancing":{"Enabled":true}}' --region ap-northeast-1

手持ちのロードバランサ一括設定するならこんな感じ(region設定は略)。

for lb in $(aws elb describe-load-balancers --query="LoadBalancerDescriptions[].LoadBalancerName" --output text); do
  echo $lb
  aws elb modify-load-balancer-attributes --load-balancer-name $lb --load-balancer-attributes '{"CrossZoneLoadBalancing":{"Enabled":true}}'
done

参考:

デメリット

RDS に対する AZ 間の通信コストなどがかかるといえばかかります。

しかし、Cross-Zone Load Balancing は、そういったデメリットを補って余りある機能だと思うので、なるべく有効にしたほうがいいと思います。

まとめ

さぁ、今すぐ Cross-Zone Load Balancing を有効にしよう!

新規で ELB を立てる時は、最初から Enable Cross-Zone Load Balancing にチェックが入ってるので、そのまま作れば大丈夫です。

rch850
主にサーバぺしぺししてるエンジニアです!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした