ALB と NLB の違い?「NLB にして」で WAF が消える理由|AWS ロードバランサー
ぎゅぎゅっとテック
0:00 / 0:00
ALB と NLB の違い?「NLB にして」で WAF が消える理由|AWS ロードバランサー
150 просмотров · 1 дн. назад
ぎゅぎゅっとテック
1,14 тыс. подписчиков
150 просмотров · 1 дн. назад
AWSのALB と NLB の違い、「L7 と L4」以外で説明できますか。
「固定 IP が要るから、ALB を NLB にして」と言われて替えると、WAF もパスのルールも X-Forwarded-For も、付ける先ごと消えます。しかもエラーは出ません。
この動画では、その理由と、消えたものを戻す構成を、AWS の構成図を動かしながら説明します。
違いのほとんどは 1 点から出てきます。ALB は HTTP を読んでリクエストごとに送り先を決め、NLB は HTTP を読まずに接続ごとに送り先を決めます。
ここから、NLB に WAF が付かない理由、gRPC で負荷が 1 台に偏る理由、それでも NLB を選ぶ場面(固定 IP・PrivateLink・EKS・HTTP 以外の通信)をつなげます。
見終わると、「NLB にして」と言われたときに、取引先に何を聞き、NLB の後ろに ALB を置くか、ALB と IPAM で足りるかを選べるようになります。
▼ こんな人に
・ALB は Terraform で作れるが、NLB は触ったことがない
・ALB と NLB の比較表は覚えているが、理由を聞かれると詰まる
・固定 IP で許可したいと言われ、NLB にするか迷っている
▼ チャプター
0:00 導入:「NLB にして」で消える 3 枚の札
0:24 前提 L7 と L4:HTTP を読むか読まないか
1:41 第 1 部 NLB の中で起きていること:TCP・TLS リスナーと WAF
2:52 第 2 部 接続ごとに決める落とし穴:gRPC の負荷の偏り
3:27 第 3 部 それでも NLB を使う場面:固定 IP・PrivateLink・EKS
6:14 第 4 部 古い理由と、補う場所:mTLS・セキュリティグループ
8:37 第 5 部 冒頭の答え:NLB の後ろに ALB
9:40 第 6 部 クライアント IP と、作るときの穴:Proxy Protocol・Terraform
11:19 まとめ:ALB と NLB の使い分け
▼ 各部の内容
前提 L7 と L4
L4 は TCP と UDP の層でポート番号で宛先を分け、L7 は HTTP の層でパスやヘッダーを扱います。ALB はリクエストごと、NLB は接続ごとに送り先を決めること、ALB がクライアント側と後ろ側で別の接続を持ち、X-Forwarded-For でクライアントの IP を渡す仕組みを見ます。
第 1 部 NLB の中で起きていること
NLB の TCP リスナーは暗号化したまま流し、TLS リスナーは暗号を解いても HTTP は読みません。ALB でも WebSocket に切り替えた後はルールも WAF も効かないこと、NLB に無いもの(WAF・ログインの確認・不正な HTTP の破棄・X-Forwarded-For・パスでの振り分け・HTTP のアクセスログ)を並べます。
第 2 部 接続ごとに決める落とし穴
HTTP/2 と gRPC は 1 本の接続に何件ものリクエストを流すので、NLB では同じ 1 台に偏ります。ターゲットを増やしても負荷が移らない理由と、ALB や L7 のプロキシで分ける方法を説明します。
第 3 部 それでも NLB を使う場面
MQTT・DNS などの HTTP ではない通信、AZ ごとの固定 IP と Elastic IP(ALB と IPAM の選択肢も)、PrivateLink でサービスを公開する入口、EKS の Service と Ingress、AWS Load Balancer Controller、mTLS の TCP パススルーです。
第 4 部 古い理由と、補う場所
HTTP の mTLS は ALB でもできます。「なんとなく速い」「WebSocket だから」「gRPC だから」「NLB にはセキュリティグループが無い」を確かめ直し、NLB に無いものを CloudFront と WAF・後ろの ALB・リバースプロキシ・アプリのどこで補うか、不正な HTTP・OIDC・JWT・ログの見る場所まで整理します。
第 5 部 冒頭の答え
固定 IP は NLB、WAF とパスのルールは後ろの ALB。NLB の後ろに ALB を置く構成と、Global Accelerator を含めた 4 つの問いの選び方です。
第 6 部 クライアント IP と、作るときの穴
クライアント IP の保持と Proxy Protocol v2、Terraform で作る前に決めるセキュリティグループと Elastic IP、TCP のヘルスチェックが 500 エラーを見逃す理由、クロスゾーン負荷分散とアイドルタイムアウトの既定値です。
まとめ
比較表を「HTTP を読まないことから出る違い」と「そう作られているだけの違い」に分け、冒頭の依頼への答えを構成図で組み立てます。
▼ 図と数字について
図は説明用の構成図です。IP アドレスは文書用のアドレス、gRPC の件数は説明用の数です。
機能や既定値は AWS の資料をもとにしています。変わることがあるので、使う前に AWS のドキュメントで確かめてください。
▼ 出典
・AWS ドキュメント:How Elastic Load Balancing works
・AWS ドキュメント:Application Load Balancer / Network Load Balancer ユーザーガイド
・AWS WAF、AWS PrivateLink、AWS Load Balancer Controller のドキュメント
・AWS の新機能の発表(NLB のセキュリティグループ、ALB の mTLS、NLB の QUIC)
#AWS #ALB #NLB
#ぎゅぎゅテク
#ぎゅぎゅっとテック