先週の金曜日(2019/8/23)に発生したAWSの東京リージョンで大規模な障害が発生しました。障害の内容は、一つのAZで空調設備の問題からEC2インスタンス並びにEBSに問題が発生したという事象です。詳細についてはAWSから発表があるので、そちらをご参照ください。
aws.amazon.com
障害の最中にTwitterのタイムラインを見ていると、単一AZ障害ではなく複数のAZで障害が発生しているのではないかという観測が多く見られました。障害としては、AWSの発表通り単一AZ障害です。では何故多くの人に勘違いされたのでしょうか?理由は2つあります。
- AZの割り当ては、アカウントごとに違うという事が知られていない
- マルチAZ構成にしていても、単一AZの障害の影響を受ける
ここでは前者のAWSアカウントの割り当ての話を説明します。
あなたが見ているap-northeast-1aは、私が見ているap-northeast-1aと違うかもしれない
障害発生中に下記のようなTweetをしたところ、知らなかったという反応を沢山いただきました。これを、もう少し説明してみます。
現在のAWSの障害は、AZの中の一つ(apne1-az4)で発生してる模様。大切なポイントなのだけど、アカウントごとにAZの割当は違う。なので、とあるアカウントだと1aで問題が発生し、別のアカウントだと1cで発生というのがありうる。ということで、ご留意ください。
— Takuro SASAKI (@dkfj) August 23, 2019
実はAWSのAZのマッピングは、アカウントごとに異なっています。あるアカウントのap-northeast-1aのデータセンター群は、違うアカウントのap-northeast-1cと同じデータセンター群かもしれないです。そうなっている理由としては、AZごとの利用率の偏りを避けるためだと推測しています。リストの一番最初に出てくる1aをみんなが使うと、AZごとにインスタンス利用数等が著しく偏る恐れがあります。そうならないようにAZのマッピングを変えることで回避しているのでしょう。
マッピングの違いについては、公式のドキュメントに記載されています。
リージョンごとのアベイラビリティーゾーンの数とマッピングは、AWS アカウント間で異なる場合があります。アカウントで使用可能なアベイラビリティーゾーンのリストを取得するには、Amazon EC2 コンソールまたはコマンドラインインターフェイスを使用できます。詳細については、「リージョンとアベイラビリティーゾーンの記述」を参照してください。
AWSアカウントのAZのマッピングを知るには?
それでは、AZのマッピングを知るにはどうしたら良いのでしょうか?2018年の末くらいに、AZ IDという一意のIDが表示されるようになりました。これを使うとアカウントのマッピングに関わらずAZを一意に識別できるようになります。具体的には、VPCのサブネットの作成や詳細のところに出てくるので、それをご参照ください。
昔はどうやってマッピングを知っていたのか?
ここからは余談です。AZ IDが出てきたことで、簡単にマッピングを知ることができるようになりました。実はこのAZ IDがなくても、マッピングを推測することは可能だったのです。その答えはスポットインスタンスの価格の推移です。スポットインスタンスの価格の推移は、AZごとです。複数のアカウントの価格の推移を突き合わせると、推測できるという寸法です。
※スポットインスタンスの乱高下が、ほとんど無くなってきたなぁという感想
まとめ
VPC Peeringが無い時代は、AZの割り当てが解らなくても余り困りませんでした。今は解るようになっています。ただ、解った所で、それほど気にする必要がないのも事実です。一方で今回のような自体が起きると、知っていないと混乱します。ということで、豆知識として覚えておいてください。ここAWS認定試験で必ず出ないポイントとなっております。試験のポイントについては、オレンジ本をご参照ください。あと、来月の技術書典7に初参加です。よろしくお願いいたします。
今回すっ飛ばした「マルチAZ構成にしていても、単一AZの障害の影響を受ける」理由と対策については、明日くらいに解説します。
2019年8月27日追記: 続き書きました
マルチAZ構成で単一AZの障害の影響を受けるのは何故か? - プログラマでありたい
AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト
- 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,金澤圭
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2019/04/20
- メディア: 単行本
- この商品を含むブログを見る
takuros.booth.pm