【AWS】NLB+ALB+EC2構成のユースケースと設計時のポイントについて解説します
はじめに
こんにちは、ネクストモードの眞鍋です。
AWSでWebアプリケーションを構築する際、ロードバランサーの選定は重要な設計要素の一つです。特に、固定IPアドレスが必要な場合や、高度なルーティング機能を実現したい場合には、NLB(Network Load Balancer)とALB(Application Load Balancer)を組み合わせた構成が選択肢の一つとなります。
本記事では、NLB+ALB+EC2という構成について、各サービスの特徴から設計時に考慮すべきポイントについて解説します。
各サービスの概要
NLBとは
NLB(Network Load Balancer)は、AWS が提供するレイヤー4(L4)のロードバランサーです。TCP/UDP/TLS トラフィックを処理し、超低レイテンシで高いスループットを実現します。
【主な特徴】
- 固定IPアドレスを持つ
- クライアントの送信元IPアドレスを保持
- TLSターミネーションに対応
ALBとは
ALB(Application Load Balancer)は、レイヤー7(L7)のロードバランサーで、HTTP/HTTPS トラフィックの高度なルーティングが可能です。
【主な特徴】
- パスベース、ホストベースのルーティング
- ヘッダー、クエリパラメータによる条件分岐
- AWS WAFとの統合が可能
EC2とは
EC2(Elastic Compute Cloud)は、AWS のクラウド上で仮想サーバーを提供するサービスです
様々なOSやスペックを用途に応じて選択でき、スケーラブルなコンピューティング環境を構築できます。
NLB+ALB+EC2構成のユースケース
1. 固定IPアドレスが必要なケース
ALBのIPアドレスは動的に変更されるため、固定IPが必要な場合は、ALBの前段に固定IPを持つNLBを配置することでIPアドレスを固定できます。
なお、固定IPを持つAWS Global AcceleratorをALBの前段に配置することも選択肢の一つです。
2. 高度なルーティング機能が必要なケース
ALBの柔軟なルーティング機能(パスベースルーティングやヘッダー情報による振り分けなど)を活用しつつ、NLBの固定IP機能も利用できます。
3. WAF統合と固定IPの両立
ALBにAWS WAFを統合してセキュリティを強化しながら、NLBで固定IPによるアクセス制御も同時に実現できます。
NLB+ALB+EC2構成構築時の考慮事項
1. TLS終端箇所
NLBとALBはどちらもTLS終端が可能なサービスです。
ただし、NLBのターゲットにALBを指定する場合、NLBではTLS終端できないという制限があります。
そのため、この構成ではALBでTLS終端を行うのが基本です。
この場合、NLBは通信内容を解析せず、受信したトラフィックをそのままALBに転送するパススルー動作となります。

2. ヘルスチェック設定
NLBとALBは、どちらもターゲットグループの設定としてターゲットのヘルスチェック機能を持ちます。
ALBのヘルスチェック設定では、ターゲットのEC2上で動作するWebアプリケーションが、期待通りのステータスコードを返すプロトコルとパスを用意する必要があります。
- 例
- EC2:Webアプリケーションが「/」への応答に対し、「200」を返す
- ALBのヘルスチェック設定:プロトコル「HTTP」、パス「/」に対してヘルスチェックを行い、ステータスコード「200」が返ってきたら成功
一方、NLBのヘルスチェックは、ALBに対して行われます。成功条件は以下の通りです。
- ALBがヘルスチェックのプロトコル・ポート用のリスナーを持っていること
- ALBの先のターゲットが指定したパスに任意のステータスコードで応答できること
この条件を満たさない場合、ヘルスチェックは失敗するため注意が必要です。

3. バックエンド(EC2)側でのアクセス元IPの取得
NLB+ALBを前段に設置する場合、EC2上のアプリケーションで実際のクライアントIPアドレスを取得するには、以下の仕様に注意が必要です。
IPアドレスの伝播の流れ
- NLBの動作
- NLBはクライアントの送信元IPアドレスをそのまま保持してALBに転送します
- ALBから見ると、NLBを経由してもクライアントの実IPアドレスが見えます
- ALBの動作
- ALBはHTTP/HTTPSリクエストを一度終端します
- その際、実際のクライアントIPアドレスを
X-Forwarded-Forヘッダーに格納してバックエンドに転送します - EC2から見ると、送信元IPアドレスはALBのプライベートIPアドレスになります
EC2側での取得方法
- アプリケーションログやアクセス制御でクライアントIPを使用する場合は、
X-Forwarded-Forヘッダーから取得する必要があります - Webサーバー(Apache、Nginx等)の設定で、ログフォーマットに
X-Forwarded-Forヘッダーを含めるよう設定します - アプリケーションコード内でも、直接送信元IPを参照するのではなく、
X-Forwarded-Forヘッダーを優先的に参照するよう実装します
さいごに
NLB+ALB+EC2構成は、固定IPアドレスと高度なルーティング機能を両立したい場合に非常に有効なアーキテクチャです。
一方で、構成が複雑になるため、運用面でのコスト増加には注意が必要です。
要件に応じて、単一のロードバランサー構成との比較検討を行い、最適なアーキテクチャを選択することが重要です。