2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ALBはなぜ3AZにするべきなのか

Last updated at Posted at 2020-03-14

はじめに

2019年8月に発生したAWSの東京リージョンでの障害は記憶に新しいことかと思います。
[東京リージョン (AP-NORTHEAST-1) で発生した Amazon EC2 と Amazon EBS の事象概要]
(https://aws.amazon.com/jp/message/56489/)
マルチAZで構築していても影響があった方も多かったと思います。
その中でALBにおいて、継続してサービスを提供するには2AZより3AZにすべきという意見が見られたので、なぜ3AZにしなければならないのかを調べてみました。

なおAWSについて勉強し始めたばかりなので、間違い等あればご指摘ください。

ALBは2AZを指定する必要がある

スクリーンショット 2020-03-14 17.03.34.png
ALBでは2つ以上のAZのサブネットを設定する必要があります。1AZにすることは出来ません。
そのため、3AZならば2AZに減らすことは出来ます。

2AZでもALBがロードバランスしてくれるから、問題ないのではと最初思っていました。
しかし、ALBの仕組みを見ていくと2AZでも障害が起こってしまう可能性があることがわかりました。

ALBはどう動いているのか

2AZでALBを試しに作り、yuki-furukawa-alb-hogehoge.us-east-1.elb.amazonaws.comというDNS名が払い出されたとします。
これをdigコマンドを使って見てみます。
(DNS名やIPアドレスは適当に書き換えています)

$ dig yuki-furukawa-alb-hogehoge.us-east-1.elb.amazonaws.com                                                                                                                      土  3/14 16:59:20 2020

; <<>> DiG 9.10.6 <<>> yuki-furukawa-alb-hogehoge.us-east-1.elb.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26213
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;yuki-furukawa-alb-hogehoge.us-east-1.elb.amazonaws.com. IN A

;; ANSWER SECTION:
yuki-furukawa-alb-hogehoge.us-east-1.elb.amazonaws.com. 59 IN A XXX.XXX.XXX.1
yuki-furukawa-alb-hogehoge.us-east-1.elb.amazonaws.com. 59 IN A XXX.XXX.XXX.2

;; Query time: 41 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Mar 14 17:01:18 JST 2020
;; MSG SIZE  rcvd: 116

DNSのAレコードに2つのIPアドレスが割り当てられているため、DNSラウンドロビンによってXXX.XXX.XXX.1またはXXX.XXX.XXX.2にアクセスすることになります。

ここで今回の構成を図にしてみました。
Untitled Diagram (2).png

XXX.XXX.XXX.1XXX.XXX.XXX.2がALBのIPアドレスになります。
ALBはEC2のインスタンスのようなものが立ち上がって、アクセスを振り分けているということです。

EC2のインスタンスが停止した場合

まずはEC2のインスタンスが停止した場合を考えてみます。
Untitled Diagram (3).png

ALBはヘルスチェックを行っているので、停止したEC2インスタンスへアクセスは行かず、他のインスタンスにアクセスします。
この場合は2AZでも障害が起きても問題はないです。

ALBのインスタンスが停止した場合

ALBのインスタンスが停止した場合を考えてみます。
ALBはEC2の基盤を使っていると考えれれるので、EC2のサービスが提供できなくなった場合、ALBにも影響が出ると思われます。
Untitled Diagram (4).png

DNSラウンドロビンによってALBへのアクセスを振り分けているため、ALBのインスタンスが1つでも停止していると影響を受けることになります。
この例では名前解決の結果XXX.XXX.XXX.2にアクセスした場合、エラーが表示されてしまいます。

これが3AZだったらどうでしょうか。
3AZなら2AZに変更することができるので、障害が起きたALBを切り離す事ができます。
つまり、ALBの障害を考慮すると、3AZで構築する必要があるということになります。

おわりに

SLAにもよるかと思いますが、ALBでの障害を考慮した場合3AZにしたほうが安心です。
ALBは3AZにした方がいいよって言われたときに、なんでだろうと思った人に参考になれば幸いです。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?