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つの線引き
| ALB | NLB | Gateway 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 は選ばない
復習ミニクイズ
ある製造業の企業が、工場の制御端末から AWS 上の集約サーバーへデータを送る仕組みを構築しています。端末は独自の TCP プロトコルで通信し、接続先を IP アドレスで固定的に設定する必要があります。さらに応答の遅延は可能な限り小さくしたい、という要件があります。この要件を満たす構成はどれですか。