Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
41
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

今北産業

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 にチェックが入ってるので、そのまま作れば大丈夫です。

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
41
Help us understand the problem. What are the problem?