ELB 完全ガイド【CLB/ALB/NLB 選択・料金・クロスゾーン】
ELB 4 つのタイプ(CLB/ALB/NLB/Gateway LB)の使い分け、料金・スループット・クロスゾーン・ゾーンシフト、試験での判断基準。
ELB(Elastic Load Balancing)の役割
ロードバランサーは、複数のターゲット(EC2、IP、Lambda、コンテナなど)にトラフィックを分散し、ヘルスチェックで異常なターゲットを迂回することで、レイヤー全体の可用性を高めます。マネージドで容量の伸縮も行われるため、単一インスタンスに依存する構成より耐障害性とスケーラビリティを両立しやすくなります。
ELB はリージョン内の複数 AZ にまたがって配置しますが、リージョンをまたぐロードバランシングは別の仕組み(DNS やマルチリージョン構成)です。
🎯 ロードバランサーの選択ガイド
新規ワークロードでは CLB(Classic Load Balancer) はレガシー扱いで、ALB/NLB が第一候補になることが多いです。
詳細比較表
| 項目 | CLB | ALB | NLB | Gateway LB |
|---|---|---|---|---|
| OSI レイヤー | L4/L7 | L7(アプリケーション層) | L4(トランスポート層) | L3(ネットワーク層) |
| スループット | 標準 | 標準 | 超高スループット(100 万 RPS+) | アプライアンス向け |
| レイテンシ | 低 | 低 | 超低遅延(µs 単位) | 透過型 |
| 固定 IP | × | × | ✓(Elastic IP 対応) | △ |
| ルーティング | ホストベース(限定) | パス、ホスト、クエリ、ヘッダー | ターゲット IP 直指定 | 透過的転送 |
| 接続タイプ | ステートフル | ステートフル | ステートフル | ステートレス |
| クロスゾーン | 後から有効化 | デフォルト有効 | デフォルト無効(有効化時転送料) | アプライアンス依存 |
| 料金 | LCU(処理量) | LCU(新規接続・処理バイト・ルール) | LCU + クロスゾーン有効時転送料 | LCU + GENEVE 処理 |
| 認可統合 | 簡易 | Lambda オーサライザー、Cognito | ≈ ALB | × |
| 戻りトラフィック | LB 経由 | LB 経由 | LP 回避可能(フローティング) | - |
| 推奨用途 | レガシー環境のみ | マイクロサービス、Web アプリ | ゲーミング、IoT、UDP、超低遅延 | ファイアウォール、検査 |
📊 ロードバランサー選択フロー
双方向通信で L3 ネットワークアプライアンス必要?
├─ YES → Gateway Load Balancer
└─ NO ↓
L4(TCP/UDP)向け、超高スループット、または超低遅延が必須?
├─ YES → Network Load Balancer
└─ NO ↓
L7(HTTP/HTTPS)向け、パスベースルーティング、複数ターゲット?
├─ YES → Application Load Balancer(推奨)
└─ NO ↓
レガシーシステムで CLB が必須?
├─ YES → Classic Load Balancer(ただし EOL を確認)
└─ NO → Application Load Balancer がデフォルト
💰 料金・クロスゾーン設定の差分(試験頻出)
ALB vs NLB のクロスゾーン設定
| 設定 | ALB | NLB |
|---|---|---|
| デフォルト | ✓ 有効 | × 無効 |
| 有効化時の転送料 | 無料(公式の料金設定参照) | 有料(GB 単価) |
| AWS Graviton ターゲット | 対応 | 対応 |
試験ポイント:「NLB でクロスゾーン有効化 → AZ 間転送料が発生」という落とし穴が頻出。
月額料金の例(東京リージョン、月 1 億リクエスト)
| LB タイプ | 新規接続数 | LCU 処理 | クロスゾーン | 月額(推定) |
|---|---|---|---|---|
| ALB | 5000/s | 1GB/s | 無料 | $130 |
| NLB | 1000/s | 500 Mbps | 無効時 $100 / 有効時 $150 | $100~150 |
| CLB | - | 転送量ベース | - | $30~50(だが EOL) |
新規選択:ALB がバランス型、NLB が高性能型と覚えるのがテスト対策。
🔄 NLB の「戻りトラフィック フローティング」パターン
NLB では、クライアント → NLB → ターゲット の戻りトラフィック(レスポンス)が、NLB を経由せず、ターゲット からクライアントに直接返ることができます(Direct Server Return, DSR パターン)。
クライアント → NLB(ポート変換)→ ターゲット
↓
ターゲット → クライアント(直接返信)
↑ NLB 経由しない
効果:
- NLB のスループットがボトルネックにならない
- 超高スループット対応可能
制約:
- ターゲット(EC2)側でクライアント IP を見える設定が必要
- ALB ではこの最適化が自動的に行われる
試験出題:「NLB で超高スループット実現 → DSR パターン理解が問われる」
Gateway Load Balancer 補足
Gateway Load Balancer は、サードパーティ製や AWS のネットワーク検査アプライアンスにトラフィックを流すための特殊な ELB です。Network Firewall を導入すると GLB が一緒に構成される、という説明が試験や解説でよく出ます。アプリの HTTP ルーティングというよりインスペクションのレイヤーです。
配置:パブリック/インターナル
- インターネット向け … パブリックサブネットに配置し、クライアントから直接到達させる。
- 内部向け(internal) … プライベートサブネットのみに置き、マイクロサービス間や社内クライアントからのみ到達させる。
どちらも セキュリティグループで許可プロトコルを絞ります。
リスナー・ルール・ターゲットグループ(ALB)
リスナーは、受け付けるプロトコルとポート(例: HTTPS 443)を定義します。ルールでは、パス・ホストヘッダー・クエリなど条件に応じて別のターゲットグループへ送るコンテンツベース/パスベースのルーティングが可能です。CLB は細かな条件分岐が苦手なため、マイクロサービスごとに振り分けたい場合は ALB が適します。
ターゲットグループには、インスタンス ID、IP、Lambda(ALB)などを登録します。ヘルスチェックはターゲットグループ単位で定義されるイメージを持つと、Auto Scaling 連携の問題を解きやすいです。
ヘルスチェックと CloudWatch
ターゲットがアン健全と判定されると、そのターゲットへは流しません。UnHealthyHostCount や HealthyHostCount などのメトリクスを CloudWatch で監視し、Auto Scaling のスケーリングや通知に繋ぐのが典型的です。
- アプリが落ちているが EC2 は running … EC2 ステータスだけでは分からない。ELB のヘルスチェックを使う意味がここにあります。
クロスゾーン負荷分散とゾーンシフト(試験の定番)
クロスゾーン負荷分散をオフにすると、ロードバランサーは各 AZ のターゲットに対して、その AZ に着いたリクエストを優先的に払い出しやすく、AZ 間で負荷が偏ることがあります。オンにすると、AZ をまたいでターゲットへより均等に近づけやすくなります。
次の対比は試験でも解説でもよく挙がります(料金と既定は公式の現行版で確認)。
- ALB … デフォルトでクロスゾーン有効。有効時の AZ 間データ転送の扱いは料金ページで確認。
- NLB … デフォルトでクロスゾーン無効の説明が多く、有効化すると AZ 間転送が有料になりやすい、という対比で試験に出ます。
ゾーンシフト(Zonal Shift) は、特定 AZ の劣化を検知したときに、他 AZ へ意図的にトラフィックを寄せるための機能です。クロスゾーンをオフにしてレイテンシ最優先にしているときほど、単一 AZ 障害とのセットで効いてきます。
スティッキーセッションと接続 draining
- スティッキーセッション … 同一クライアントを一定時間同じターゲットへ寄せる。セッション状態をサーバー局所に持つレガシーアプリでは有効。ターゲット障害やスケールインで別台に付き替わるため、完全な粘着は保証されない前提で設計します。
- 接続 draining / 登録解除の遅延 … ターゲットを外す際、処理中のリクエストが終わるまで待つ時間。デプロイやスケールインで途切れにくくします(ALB では deregistration delay などの名称で設定)。
TLS(HTTPS)と ACM
多くの構成では、クライアント ↔ ロードバランサーは TLS、ロードバランサー ↔ アプリは HTTP とし、証明書は ACM で管理します。試験では「どこに証明書をアタッチするか」「終端を LB にするかアプリまで持ち込むか」がセットで出ます。
アクセスログと課金のイメージ
- アクセスログを S3 に保存し、障害調査・監査・分析に使います。
- ALB/NLB の課金は LCU(Load Balancer Capacity Unit) ベースが中心で、新規接続数・処理バイト数・ルール評価などが絡みます。CLB はデータ転送量ベースと説明されることがあります。
よくある誤答パターン(SAA)
- 「NLB も ALB もクロスゾーンの既定と転送料の扱いは同じ」→ 誤りになりやすい(別物として暗記)。
- 「CLB を選べば一番シンプルだから新規も CLB」→ シナリオによっては ALB/NLB が推奨。
- 「ELB がヘルスチェックを通したからアプリも必ず正常」→ ヘルスチェックのパス次第で誤検知もあり得る(設定の話)。
公式ドキュメント(深掘り)
重要ポイント
- ▸CLB = レガシー(新規は推奨されない)
- ▸ALB = L7・パスベースルーティング・デフォルトクロスゾーン有効・マイクロサービス向け
- ▸NLB = L4・超低遅延・固定 IP・ゲーミング/IoT・デフォルトクロスゾーン無効・片方向返信パス
- ▸Gateway LB = ネットワークアプライアンス検査用(Network Firewall とセット)
- ▸料金・クロスゾーン設定の差分が試験頻出
このトピックの学習を完了しますか?
完了状態はいつでも切り替えられます
この試験ドメイン内で次の学習に進む
同じサービスの関連トピック
EC2 とコンピュート に関連するトピックを続けて確認できます。