Перейти к содержимому

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 #ぎゅぎゅテク #ぎゅぎゅっとテック