⚖️ AWS Elastic Load Balancing (ELB)

ALB と NLB — 2つのロードバランサーの違いをレストランのたとえで完全理解

🎯 結論ファースト

ELB(Elastic Load Balancing)は、大量のアクセスを複数のサーバーに均等に振り分ける交通整理役です。主に2種類あり、それぞれ得意分野が異なります。

🔵 ALB(Application Load Balancer)

「リクエストの中身を見て判断する賢い案内係」。URLやヘッダーを読み取り、最適なサーバーへ振り分ける。Web アプリやマイクロサービス向き。

🟢 NLB(Network Load Balancer)

「中身は見ずに超高速で通すスピード配達員」。IPアドレスとポート番号だけで瞬時に転送。ゲームサーバーやリアルタイム通信向き。

📖 そもそもロードバランサーとは?

ロードバランサーは、大勢のお客さんが一度にやってきても、1台のサーバーに負荷が集中しないように「交通整理」する仕組みです。

🍽️ たとえ話:大人気レストランの「案内係」

想像してください。あなたは大人気レストランのオーナーです。毎晩100組のお客さんが来店します。

もしシェフが1人しかいなければ、料理が追いつかずお客さんは何時間も待つことに…。
そこでシェフを5人に増やし、入口に「案内係(ホスト)」を置きます。

案内係は、各シェフの忙しさを見ながら「あなたはA番テーブルへ」「あなたはB番テーブルへ」とお客さんを均等に振り分けます
これがまさにロードバランサーの仕事です!

🍽️ レストランの案内係 = ロードバランサーの図

👥 お客さん
(大量のリクエスト)
➡️
🧑‍💼 案内係
(ELB)
➡️
👨‍🍳シェフA (サーバー1)
👨‍🍳シェフB (サーバー2)
👨‍🍳シェフC (サーバー3)
ユーザーからのアクセス ELB が振り分け EC2 インスタンス

🔧 AWS での実際の構成イメージ

👥 インターネット
ユーザー
➡️
⚖️ ELB
(ロードバランサー)
➡️
🖥️ EC2 #1
🖥️ EC2 #2
🖥️ EC2 #3

🔀 ALB と NLB — 2つの案内係の違い

AWSには主に2種類のロードバランサーがあります。同じ「案内係」でも、案内の仕方がまったく違います。

🔵 ALB = コンシェルジュ型の案内係
レストランに来たお客さんに「何が食べたいですか?」と聞いて、希望に合わせて案内するタイプ。

「パスタ」→ イタリアンシェフへ
「寿司」→ 和食シェフへ
「デザート」→ パティシエへ

リクエストの中身を読んで、最適な場所へ振り分けます。
📌 ALBのルーティングイメージ
/api/* APIサーバー群
/images/* 画像サーバー群
🟢 NLB = 瞬時に席へ通す受付
お客さんの注文は聞かず、「整理番号」だけ見て瞬時に席へ案内するタイプ。

中身は一切確認せず、とにかく超高速で振り分けます。

1秒間に何百万人ものお客さんが来ても捌けるほどのスピード。

IPアドレスとポート番号だけで瞬時に転送します。
⚡ NLBの転送イメージ
IP:Port 即座に転送 サーバー

🏗️ 動作するレイヤーの違い(OSI参照モデル)

ALBとNLBは、ネットワーク通信の「どの階層」で動作するかが異なります。これが性能と機能の違いに直結します。

📶 OSI参照モデルでの動作レイヤー

L7 アプリケーション層(HTTP/HTTPS) ← ALB はここ
L6 プレゼンテーション層
L5 セッション層
L4 トランスポート層(TCP/UDP) ← NLB はここ
L3 ネットワーク層
L2 データリンク層
L1 物理層

💡 レイヤーの違いをたとえると…

ALB(L7)は、手紙を開封して中身を読んでから配達先を決める郵便局員。「この手紙は請求書だからA課へ」「これはお礼状だからB課へ」と内容で仕分けます。

NLB(L4)は、封筒の宛名(IP)と部署番号(ポート)だけ見て、中身を開けずに超高速で届ける配達員。内容を確認しない分、圧倒的に速いのです。

📋 ALB・NLB 機能の詳細

それぞれのロードバランサーが持つ具体的な機能を見てみましょう。

🔵

Application Load Balancer

レイヤー7 / HTTP・HTTPS 特化
🛣️
パスベースルーティング URLパス(/api, /images など)ごとに異なるサーバー群へ振り分け
🌐
ホストベースルーティング ドメイン名(api.example.com, www.example.com)で振り分け
🔌
WebSocket サポート リアルタイム双方向通信にも対応
🔒
SSL/TLS 終端 ALBでHTTPS通信を解読し、バックエンドへはHTTPで転送
📍
X-Forwarded-For ヘッダー 元のクライアントIPアドレスをサーバーに自動転送
🏗️
マイクロサービス対応 コンテナやLambdaなど多様なターゲットに対応
🟢

Network Load Balancer

レイヤー4 / TCP・UDP 特化
超低レイテンシー マイクロ秒単位の遅延。ALBよりはるかに高速
📈
超高スループット 毎秒数百万リクエストを処理可能
📌
静的IPアドレス 固定IPやElastic IPを割り当て可能。ファイアウォール連携に最適
🔗
接続レベルのバランシング TCPコネクション単位で振り分け(HTTPヘッダーは不使用)
🔐
TLSパススルー 暗号化を解かずにそのままバックエンドへ転送可能
🎮
UDP サポート ゲーム・IoT・DNS・VoIPなどUDP通信にも対応

🛣️ ALB のコンテンツベースルーティング例

/api/* API サーバー群 (バックエンドロジック処理)
/images/* 画像サーバー群 (静的コンテンツ配信)
Host: api.example.com API 専用クラスター (ドメイン別振り分け)
Header: Mobile モバイル最適化サーバー (デバイス別対応)

📊 ALB vs NLB 一覧比較

主要な違いをまとめて確認しましょう。

比較項目 🔵 ALB 🟢 NLB
動作レイヤー レイヤー7(アプリケーション層) レイヤー4(トランスポート層)
対応プロトコル HTTP, HTTPS, WebSocket TCP, UDP, TLS
ルーティング方式 URL パス・ホスト名・ヘッダーなど IP アドレス+ポート番号のみ
レイテンシー ミリ秒〜(中身解析のため) マイクロ秒〜(超低遅延)
スループット 高い 極めて高い(毎秒数百万件)
静的IP ❌ 非対応(DNS名で接続) ✅ 対応(Elastic IP 割当可)
SSL/TLS 終端(解読してから転送) パススルー可能(そのまま転送)
たとえ 🧑‍💼 注文を聞いて案内するコンシェルジュ ⚡ 番号札だけで通す超速受付

🎯 どんな時にどちらを使う?

具体的なユースケースで使い分けを確認しましょう。

🌐 Webアプリケーション

ECサイト、SNS、管理画面など HTTP/HTTPS ベースのWebアプリ。URLパスやドメインで振り分けたい場合に最適。

ALB を選択

🎮 ゲームサーバー

オンラインゲームのリアルタイム通信。超低遅延が求められ、UDP通信が必要な場面。

NLB を選択

🏗️ マイクロサービス

複数サービスを1つのALBで管理。/users → ユーザーサービス、/orders → 注文サービスなどパスで振り分け。

ALB を選択

📡 IoT / リアルタイム通信

大量のIoTデバイスからのTCP/UDP接続。毎秒数百万リクエストを処理する必要がある場面。

NLB を選択

🐳 コンテナ / Lambda

ECS、EKS、Lambda などのサーバーレスやコンテナ環境。ALBの柔軟なターゲットタイプが活きる。

ALB を選択

🔒 固定IPが必要な場面

ファイアウォールでIP許可リストを設定する場合。DNS名ではなく固定IPでアクセスさせたい場面。

NLB を選択

🔀 ALB / NLB 選択フローチャート

HTTPリクエストの中身(URL、ヘッダー)で
振り分けたい?
✅ はい ⬇️
🔵 ALB を選択
❌ いいえ ⬇️
超低遅延・静的IPが必要?
または TCP/UDP 通信?
✅ はい ⬇️
🟢 NLB を選択
❌ いいえ ⬇️
🔵 ALB(汎用性)

🏛️ 典型的な構成パターン

実際の AWS 環境でよく使われる構成パターンを見てみましょう。

🔵 ALB の典型構成 — Webアプリ + マイクロサービス

👥 ブラウザ
(HTTPS)
⚖️ ALB
(SSL終端)
🖥 /api → APIサーバー
🖥 /web → Webサーバー
🖥 /admin → 管理画面

ALBがHTTPSを解読 → URLパスを確認 → 適切なターゲットグループへ転送

🟢 NLB の典型構成 — ゲーム / リアルタイム通信

🎮 ゲームクライアント
(TCP/UDP)
⚡ NLB
(静的IP)
🖥 ゲームサーバー #1
🖥 ゲームサーバー #2
🖥 ゲームサーバー #3

NLBが固定IPでリクエスト受付 → IP+ポートだけ見て → 超高速でサーバーへ転送

⚠️ 知っておきたい注意ポイント

💰 コスト感覚

ALBの方がNLBより少し安いことが多いです。ただし、トラフィック量やルール数で変動するため、AWS料金計算ツールで事前に見積もりましょう。

🔗 ALB + NLB の組み合わせ

NLBの背後にALBを配置するパターンもあります。NLBの静的IPとALBの高度なルーティングを両立させる構成です。

🏥 ヘルスチェック

両方ともターゲットの健全性を監視します。異常なサーバーを自動的に除外し、復旧したら再登録。ALBはHTTPレベル、NLBはTCPレベルで確認します。

🌍 クロスゾーン負荷分散

複数のAZ(アベイラビリティゾーン)にまたがって負荷分散できます。ALBはデフォルトで有効、NLBはデフォルトで無効なので設定を確認しましょう。

✅ まとめ

🔵

ALB を選ぶとき

HTTP/HTTPSのWebアプリを扱う。URLやヘッダーで賢くルーティングしたい。マイクロサービスやコンテナ環境で使う。

🟢

NLB を選ぶとき

超低遅延が必要。TCP/UDPの生の通信を捌きたい。静的IPが必須。毎秒数百万件の超高トラフィックを処理する。

💡 迷ったら… Webアプリなら ALB、それ以外で速さ・IP固定が要るなら NLB が基本方針です!

Created by SSuzuki1063

AWS SAP Learning Resources