読者です 読者をやめる 読者になる 読者になる

AWSのAvailability Zoneとロケーションの関係

シンプルなんだけど面白かったのでまとめました。

AZ(アベイラビリティーゾーン)とは

ご存知の方も多いと思いますが、AWS(EC2)のロケーションは、リージョンとアベイラビリティーゾーンという概念があります。

リージョンというのは、 東京バージニアサンパウロ などです。最近だと ソウル も追加されました。

アベイラビリティーゾーンというのは、同一リージョン内の独立したロケーションの単位(データセンターを想定するとだいたいあってる)で、 アベイラビリティーゾーン間の距離は「近距離」(数キロ〜数十キロらしい)にあるそうです。

参考: http://www.atmarkit.co.jp/ait/articles/1411/20/news106.html

AWSのドキュメントの図を引用するとこんな感じ。 f:id:kuro_m88:20160113123004p:plain http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

素朴な疑問

たとえば、東京リージョンであれば、 ap-northeast-1a , ap-northeast-1b , ap-northeast-1c 3つのAZがあります。
ここで疑問に思うのが「(冗長化構成を取らない場合) とりあえず ap-northeast-1aインスタンス立てそうだし、 ap-northeast-1a ばっかり選択されてAZごとのリソースの使用状況が偏るんじゃないか」ってことです。
僕だったらとりあえず1台立てるなら 1a を使ってますし、同じことを考えてる人が何百万人と居ると大変です。

シンプルな解決方法

ドキュメントをよく読んでみました。 http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

リソースがリージョンの複数アベイラビリティーゾーンに分散されるようにするため、アベイラビリティーゾーンは各アカウントの識別子に個別にマップされます。たとえば、あるアカウントのアベイラビリティーゾーンは別のアカウントのus-east-1aアベイラビリティーゾーンと同じ場所にはない可能性がありますus-east-1a。

実はAZの識別子と実際のAZのロケーションの対応関係はAWSアカウントによって違う可能性があるようです。

この事を知っていると、以下のような疑問にも納得が行きます。

Tokyoリージョンにて、Regional data transferが計上されない現象について

異なるAZの間(ap-northeast-1aとap-northeast-1b)でプライベートIPアドレスを用いたTCP通信を行い、5GBのデータを送信しましたが、送信側アカウントにも受信側アカウントにもregional data transferの課金が生じません。これは正常な動作となりますでしょうか? https://forums.aws.amazon.com/thread.jspa?messageID=273850

単純ですが一番効果的な解決方法ですね!