AWSで障害対策に必須のマルチAZとは?
目次
AZ(アベイラビリティーゾーン)とはなに?
AWSにおいて、障害が発生しても影響を少なくし、サービスを止めないためには、AZを考慮したシステム設計が非常に重要です。本記事では、AZとは何か、を記載していきます。
AWSを構成するリージョンとアベイラビリティーゾーン
AWSは世界中にデータセンターを配置し、サービスを展開しています。そのうえで、利用者の便宜やデータセンターの管理を行う関係で、世界を複数のリージョンに分割し、リージョンごとにサービスを提供しています。
例えば、日本においては東京と大阪に、それぞれ『東京リージョン』、『大阪リージョン』を構成し、サービスを展開しています。リージョン間は、あるリージョンで停電などの障害が発生しても他のリージョンでは影響が全くないようになっています。一つのリージョンは複数のアベイラビリティゾーン(AZ:Availability Zone)から構成されています。
AZ(アベイラビリティーゾーン)とは?
AZは複数のデータセンターで構成されており、かつ同じリージョンに含まれる他のAZから互いに独立しています。また、電力系統がそれぞれ独立しており、あるAZで停電等の障害が発生しても他のAZに影響が及ばないように設計されています。
同じリージョン内の各AZ間は高速な通信回線で相互に接続されており、EC2などのリソースはAZ間で分散して構築されていても、互いに高速で通信を行うことができます。
シングルAZとマルチAZの違いは?
シングルAZは1つのAZだけでシステム構築を行う構成で、マルチAZ構成は複数のAZを利用してシステムを構築する構成のことです。マルチAZ構成は、システムをAZベースで冗長化しているということであり、マルチAZ構成を用いることによって一つのAZで大規模な障害が発生しても他の正常なAZを使用して稼動を継続できるため、システムの可用性を向上させることができます。
例えば、稼働率が99%のサーバを1つのAZで稼働させた場合と、2つのAZで稼働させた場合を比較してみましょう。
1つのAZで稼働させた場合の可用性=99%(年間約87.60時間程度停止)
2つのAZで稼働させた場合の可用性=1-(1-0.99)*(1-0.99)=99.99%(年間で約0.87時間停止)
上記を見てみると、停止時間で考えた場合、マルチAZ構成の場合は約100倍可用性が向上しています。
マルチAZで対障害性を確保するスタイルズのAWS導入・移行サービスはこちら→
マルチAZ構成のメリット・デメリット
マルチAZ構成のメリットは、『可用性の向上』にあるといえます。一方で、デメリットは、『テスト工数がかかる』『利用料の上昇』であると考えられます。それぞれについて、具体的に見ていきましょう。
マルチAZ構成のメリット:可用性の向上
マルチAZ構成の最大のメリットは、可用性の向上です。先述の通り、マルチAZ構成の場合はシングルAZの場合と比較し、可用性が大幅に向上しています。また、AutoScalingやElastic Load Balancerといったサービスを組み合わせることで、さらなる可用性の向上にも貢献します。
マルチAZ構成のデメリット:テスト工数がかかる
マルチAZ構成のデメリットとしては、テスト工数が増えてしまうケースが挙げられます。実際にAZの障害を想定した障害試験をおこない、本当に可用性が担保されるか、といったテストケースを加える必要がありますし、復旧手順もテストする必要があります。このように、メリットである可用性が本当に担保されるかを確認するためのステップが必要になってきます。なお、複数のAZにまたがる構成のため、構築工数もかかるのではないか、という疑問があるかと思いますが、AWSにおいてはサーバを構築する際にAMI(Amazon Machine Image)というサーバのコピーを用いて構築を行うことが多いため、構築自体の工数の増加は軽微に抑えることができます。
マルチAZ構成のデメリット:利用料の上昇
サーバを複数用意する、負荷分散用のELBなどのサービスを追加する、といったことを実現するためには、シングルAZでシステムを構成した場合よりも多くのサービスを使うことになります。したがって、年間のAWS利用料はその分上昇します。
AZ間の通信レイテンシに注意する
AZ間は高速な通信回線で結ばれており、低遅延のアクセスが可能ですが、距離的に離れているため、多少のレイテンシは発生してしまいます。一般的に、同じ
AZ内の通信であれば0.1~0.5ミリ秒で通信が行えますが、異なるAZ間では1~3ミリ秒で通信が行えるとされています。この結果でも十分に高速ですが、ミリ秒を競うようなシステムを構築する場合は、考慮が必要です。
マルチAZ 構成でも設定によっては安全とは言い切れない
広域災害などであるリージョン全体に障害が発生した場合、そのリージョンに含まれるシステムは、マルチAZ構成であっても停止する可能性があります。AZ同士はデータセンターが一定の距離をもとに分散されているため、可能性は限りなく低いとは考えられますが、ゼロではないということは認識しておく必要があります。そのため、システムによっては複数のリージョンを利用した、マルチリージョン構成という選択肢も考慮する必要があります。
マルチリージョン構成とその必要性は?
マルチリージョン構成にすると、広域災害にも対応可能な大幅な可用性向上が見込めます。一方で、マルチAZ構成よりもコストがかかってしまったり、コンソールでの操作でリージョン切り替えが必要となり、運用負荷が上がってしまうなどのデメリットがあります。また、リージョン間はAZ間ほど高速な通信回線で接続されていないため、リージョン間の通信はレイテンシが大きくなります。したがって、システムが低遅延の通信を必要とする時には考慮が必要です。マルチリージョン構成のシステムは、世界的にサービスを展開しているシステムや、決裁システムなどの生活していくうえで必ず利用できるようにしておく必要があるシステムなど、要件に応じて採用するようにしましょう。
マルチAZで対障害性を確保するスタイルズのAWS導入・移行サービスはこちら→
障害テストの必要性
マルチAZ構成でシステムを構築しても、障害テストを必ず行うべきです。障害テストにより、挙動を確認しておかないと、万が一AZ障害が起きたときに可用性が担保できないだけでなく、システムの復旧や切り戻しの際にトラブルが発生し、2重障害を誘発してしまう可能性があります。障害テストにおいては、必ず以下を確認しておきましょう。
・人為的に障害を発生させてもきちんとITサービスを継続できるかどうか
・AZ障害から復旧できる手順となっているかどうか
・AZ障害が発生した瞬間に、システムは使えるようになっているか。使えない時間がある場合、それは何秒か。
特にRDSのマルチAZ構成は、切り替えに数分の時間を要することもあります。そういった場合の運用ケースを考えておくと、実際に障害が発生したときに大きなトラブルを回避することができます。また、本番運用が始まった後でも、定期的な障害試験を行っていくと運用の精度が高まります。
まとめ
AZやリージョンを考慮した、AWSの可用性を向上させる策について記載してきました。マルチAZ構成は可用性を向上させるためには必要な選択肢ですが、デメリットとメリットをよく見極めて、要件に応じた構築を行っていくといいでしょう。また、場合によってはマルチリージョン構成も必要になってきます。要件によって、どのような構成が必要か、また、導入時にどのような考慮点があるのか、不明な点がある場合は、AWSに詳しいベンダーに相談するといいでしょう。