はじめに
SAA対策の中で特に私がいつもつまずいてしまうところをまとめておく。
多分以下のような観点が特に自分は弱いと分析している。
- レジリエントアーキテクチャの 設計
- セキュアなアプリケーションと アーキテクチャの設計
ちょっとあまり理解できてなさそうなサービスをまとめておく。
まずはELBについて。
Elastic Load Balancingについて
ELBと略される。
ELBは、受信した通信を指定した複数の宛先に自動的に負荷分散をしてくれるもの。
このELBを使用することによって、耐障害性を高めることができ、万が一システムに障害が発生したときにサービスへの影響を最小限に抑えることができる。
ELBの特徴
- ロードバランサーにはDNS名のアクアセスポイントが付与される。
- ヘルスチェック機能がある。
- SSL/TLS通信の終端になる。
ELBの種類
ELBには3つ種類がある。
①ALB Application Load Balancer
②NLB Network Load Balancer
③CLB Classic Load Balancer
③のCLBは古いタイプのロードバランサーらしく、現在は非推奨となっている。
基本的にはALBかNLBを選択することになる。
ALB
このALBはL7レイヤー(HTTP/HTTPS)の負荷分散に使用される。
SAAの試験では、よくこの「L7レイヤーで使用する・・・」みたいな問題が出題されている気がするので覚えておきたい。
主にこのALBはユーザーからのアクセスを受け付けて、配下のサービス(例えばEC2やLambda)に負荷分散するために使用される。
NLB
NLBはL4レイヤー(TCP/UDP/TLS)の負荷分散に使用される。
基本的にはAWS内部で負荷分散が必要な際に使用され、ALBと組み合わせて使用されることもある。
NLBの特徴としてはこのようなものがある。
- 高可用性
- 高スループット
- 低レイテンシー
要するに、停止しづらく、処理可能なデータ量が多く、データの転送をするときに遅延が少ないということ。
NLBの特徴としては急激なアクセス増加でも自動的にスケーリングしてくれるためエラーは発生しない。
対して、ALBを使用していた場合は503エラーが出てサービス利用不可となる可能性もある。らしい。
ELBの特徴のヘルスチェックについて
- ロードバランサーにはDNS名のアクアセスポイントが付与される。
- ヘルスチェック機能がある。
- SSL/TLS通信の終端になる。
この3つの特徴の中の、ヘルスチェックについてまとめておく。
そもそもヘルスチェックとは、ELBで複数のEC2に負荷分散をするときにEC2が停止していたらどうだろう。
ELBのヘルスチェックは、このターゲットグループに所属しているEC2が正常に動いているかどうか
を確認してくれる機能。
ヘルスチェックの流れ
ヘルスチェックは次のような流れで動いているらしい。(NLBの場合)
①NLBはターゲットグループに所属しているターゲット(EC2)にヘルスチェックのためのpingを実行する。
②ヘルスチェック3回連続失敗をすると、NLBはターゲットのステータスを「Unhealthy」に変更をする。そのあと、Unhealtyのターゲットにはアクセスを振り分けることはしない。(ちなみにヘルスチェックの回数は変更可能)
③サービス停止中のターゲットに対しても定期的にヘルスチェックしていく。
④サービス停止中のターゲットに対してpingが3回連続成功すると、NLBはターゲットのステータスを「Healthy」に戻し、アクセスの割り振りを再開する。
このような流れでヘルスチェックは行われている。