AWS SAA(Solutions Architect - Associate)対策

ELBの選定

このレッスンでできるようになること

要件の文に出てくる言い回しから、ALB・NLB・Gateway Load Balancer のどれを置くかを即答できるようになります。ここは SAA の頻出で、しかも決め手になる語がほぼ決まっているので、対応を覚えれば確実に取れます。

まず要件を読む

ある金融系の企業が、社内システムを AWS へ移しています。3つの要望が出ました。1つ目、取引端末は接続先の IP アドレスを設定ファイルに直書きしているので、接続先の IP が変わらない必要があります。2つ目、その通信は HTTP ではなく独自の TCP プロトコルで、中身を解釈せずそのまま通したい。3つ目、同じ会社の Web サイトのほうは /api で始まるパスだけ別のサーバー群に振り分けたい

1つ目と2つ目は同じ答えになり、3つ目だけが違う答えになります。ここを分けられるかがこのレッスンの本題です。

3つの線引き

ALBNLBGateway Load Balancer
見ている層HTTP と HTTPS の中身TCP と UDP のままパケットをそのまま透過
振り分けの根拠パス、ホスト名、ヘッダー、メソッドポートと接続挟んだ検査装置に流す
IP アドレス変わりうる。名前で参照するAZ ごとに静的。Elastic IP も付けられるエンドポイント経由
主な用途Web アプリの前段低レイテンシ、非 HTTP、静的 IP が要る場合ファイアウォールや IDS を透過的に挟む

静的 IP が要るなら NLB

ALB の IP アドレスは AWS 側の都合で入れ替わるので、IP 直書きの相手や、IP でしか許可を書けないファイアウォールの向こう側からは使えません。「取引先のファイアウォールに IP を登録してもらう」「機器が DNS 名を扱えない」といった文が出たら NLB です。

TCP のまま通すなら NLB

HTTP ではないプロトコル、あるいは HTTPS を途中で開けずにサーバーまで届けたい(TLS を終端させたくない)場合も NLB です。ALB は HTTP と HTTPS しか扱えません。

超低レイテンシなら NLB

NLB は接続をそのまま流すため、内容を解釈する ALB より余分な遅延が小さくなります。要件文に「極めて低いレイテンシ」「秒間数百万の接続」と書いてあれば NLB を選びます。

パスやホストで振り分けるなら ALB

/api と /images で別のターゲットグループへ、あるいは shop.example.com と blog.example.com で別へ、というのは HTTP の中身を読まないとできません。これは ALB だけです。HTTPS を ELB で終端して証明書を集約したい、HTTP を HTTPS へリダイレクトしたい、AWS WAF を前に付けたい、ターゲットに Lambda を指定したい、という要件もすべて ALB です。

検査装置を挟むなら Gateway Load Balancer

サードパーティ製の仮想ファイアウォールや侵入検知アプライアンスを、通信経路の途中に透過的に入れて全パケットを検査させたい。この一文が出たら Gateway Load Balancer です。ロードバランサーというより、検査装置の束をスケールさせる仕組みだと捉えると混乱しません。

要件語から構成への対応

要件の言い回し選ぶもの
IP アドレスを固定したい / Elastic IP を割り当てたいNLB
TCP のまま / UDP / TLS を終端したくないNLB
極めて低いレイテンシ / 突発的で膨大な接続数NLB
パスで振り分け / ホスト名で振り分けALB
HTTPS を終端して証明書を集約 / WAF を適用ALB
Lambda をターゲットにしたい / ユーザー認証を前段でALB
全トラフィックを仮想アプライアンスで検査Gateway Load Balancer

よくある引っ掛け

その1 「ALB に Elastic IP を割り当てる」選択肢。 実在しそうな書き方ですが、これはできません。パスで振り分けたいのに静的 IP も要る、という要件なら、NLB を前に置いてそのターゲットに ALB を指定する構成、あるいは AWS Global Accelerator を前段に置く構成が答えになります。

その2 NLB に WAF を付ける選択肢。 WAF は HTTP の中身を見る仕組みなので、TCP をそのまま流す NLB には付けられません。Web の攻撃対策が要件に入っていれば、その時点で ALB か CloudFront が確定します。

まとめ

  • 静的 IP、TCP や UDP のまま、超低レイテンシの3語が出たら NLB
  • パス、ホスト名、HTTPS 終端、WAF、Lambda ターゲットが出たら ALB
  • 仮想アプライアンスで透過的に検査するなら Gateway Load Balancer
  • ALB に Elastic IP は付かない。両立させたいなら NLB か Global Accelerator を前に置く
  • 新規設計で Classic Load Balancer は選ばない
生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部

復習ミニクイズ

ある製造業の企業が、工場の制御端末から AWS 上の集約サーバーへデータを送る仕組みを構築しています。端末は独自の TCP プロトコルで通信し、接続先を IP アドレスで固定的に設定する必要があります。さらに応答の遅延は可能な限り小さくしたい、という要件があります。この要件を満たす構成はどれですか。