ALB、NLB、GLB:使い分けのポイント
Application、Network、Gateway Load Balancer の違いを理解し、それぞれを適切なユースケースに対応付けます。
「ALB、NLB、GLB:使い分けのポイント」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
Elastic Load Balancingの概要
Elastic Load Balancing(ELB)は、受信したアプリケーションのトラフィックを、EC2インスタンス、コンテナ、Lambda関数、IPアドレスなどの複数のターゲットに自動的に分散します。ELBはマネージドサービスであるため、AWSがロードバランサー自体のプロビジョニング、スケーリング、および複数のAZにまたがる可用性を管理します。
AWSはELBのサービス群として、Application Load Balancer(ALB)、Network Load Balancer(NLB)、Gateway Load Balancer(GWLB)の3種類を提供しています。それぞれOSIモデルの異なるレイヤーで動作し、異なるユースケースに適するよう最適化されています。
Application Load Balancer(ALB)
ALBはOSIモデルのレイヤー7(HTTP/HTTPS)で動作します。HTTPヘッダー、パス、クエリ文字列、ホスト名、Cookieを検査して、インテリジェントなルーティング判断を行えます。ALBは、コンテンツベースのルーティングを必要とするWebアプリケーション、マイクロサービス、APIエンドポイントに適した標準的な選択肢です。
ALBの主な機能には、パスベースルーティング(/api/*を一方のターゲットグループへ、/static/*を別のターゲットグループへルーティング)、ホストベースルーティング(異なる仮想ホストを異なるバックエンドへルーティング)、HTTPヘッダーおよびクエリ文字列によるルーティング、WebSocketのサポート、HTTP/2のサポートがあります。ALBはEC2インスタンス、コンテナ(ECS/EKS)、Lambda関数、IPアドレスへルーティングできます。
# Create an ALB
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-aaaa1111 subnet-bbbb2222 \
--security-groups sg-12345678 \
--type applicationNetwork Load Balancer(NLB)
NLBはOSIモデルのレイヤー4(TCP/UDP/TLS)で動作します。アプリケーションの内容を検査せず、IPプロトコルのデータに基づいてパケットをルーティングします。NLBは非常に高いパフォーマンスを実現するよう設計されており、極めて低いレイテンシー(通常100マイクロ秒未満)で毎秒数百万件のリクエストを処理できます。
NLBの主な機能には、AZごとの静的IPアドレス(サブネットごとに1つのElastic IP)、TLSパススルー(復号せずに暗号化されたトラフィックを転送)、クライアントIPアドレスの保持、UDPプロトコル(DNS、RADIUS、ゲームサーバーなど)のサポートがあります。NLBはコンテンツベースのルーティングやHTTPヘッダーの検査は実行できません。
# Create an NLB
aws elbv2 create-load-balancer \
--name my-nlb \
--subnets subnet-aaaa1111 subnet-bbbb2222 \
--type networkGateway Load Balancer(GWLB)
GWLBはレイヤー3(ネットワーク層)で動作し、サードパーティ製の仮想ネットワークアプライアンス(ファイアウォール、侵入検知・防御システム(IDS/IPS)、ディープパケットインスペクションシステムなど)のデプロイ、スケーリング、管理専用に設計されています。
GWLBはGENEVEプロトコル(ポート6081)を使用してトラフィックをカプセル化し、アプライアンスのフリートに送信します。アプライアンスがパケットを検査し、同じGWLBエンドポイントを経由して返します。送信元VPCのルーティングを変更しなくても、トラフィックは透過的に流れます。これは、AWS VPCのトラフィックフローに一元的なセキュリティ検査を組み込むための標準的なパターンです。
ALBのユースケース
次のような場合はALBを選択します。
- HTTP/HTTPSのコンテンツベースルーティング(パス、ホスト、ヘッダー、クエリ文字列)が必要な場合
- バックエンドにLambda関数またはECSコンテナが含まれる場合
- WebSocketまたはHTTP/2接続が必要な場合
- ロードバランサー層でのWebアプリケーションセキュリティのためにAWS WAFと統合したい場合
- 異なるURLパスに多数のサービスを配置するマイクロサービスアーキテクチャを構築する場合
- ロードバランサーでSSL/TLS終端が必要な場合
SAA-C03試験のWebアプリケーションおよびREST APIのロードバランシングに関する問題では、通常ALBが正解です。
NLBのユースケース
次のような場合はNLBを選択します。
- 非常に高いパフォーマンス(毎秒数百万件のリクエスト、サブミリ秒のレイテンシー)が必要な場合
- パートナーやファイアウォールの許可リストに登録できる静的IPアドレスが必要な場合
- UDPトラフィック(ゲーム、DNS、RADIUS、IoT)を処理する必要がある場合
- ロードバランサーで復号せずにTLSパススルーを使用したい場合(ターゲットまでエンドツーエンドで暗号化)
- TCPレベルでクライアントの送信元IPをネイティブに保持する必要がある場合
- AWS PrivateLinkを使用して、他のVPCまたはアカウントにサービスを公開する場合(PrivateLinkにはNLBが必要です)
GWLBのユースケースとアーキテクチャ
次のような場合はGWLBを選択します。
- サードパーティ製のファイアウォールアプライアンス(Palo Alto、Fortinet、Check Point)をネットワークトラフィックフローに組み込む場合
- VPCレベルですべてのインバウンドまたはアウトバウンドトラフィックに対してディープパケットインスペクションを実行する場合
- IDS/IPSアプライアンスのフリートを自動ロードバランシングによって水平方向にスケールする場合
アーキテクチャでは、トラフィックは送信元VPC → GWLBエンドポイント → アプライアンスVPC(GWLBがアプライアンスインスタンス間でトラフィックを分散)→ アプライアンスがGWLBへトラフィックを返す → GWLBが元の宛先へ転送、という経路をたどります。送信元と宛先は、その間で検査が行われていることを意識する必要がありません。
クロスゾーン負荷分散
クロスゾーン負荷分散は、ロードバランサーノードがどのAZでリクエストを受信したかにかかわらず、有効化されたすべてのAZにある登録済みターゲット全体にトラフィックを均等に分散します。クロスゾーン負荷分散を使用しない場合、各AZのノードは自身のAZ内のターゲットにのみトラフィックを分散します。
ALBではクロスゾーン負荷分散がデフォルトで有効になっており、追加料金はかかりません。NLBではクロスゾーン負荷分散がデフォルトで無効で、有効化するとAZ間のデータ転送料金が発生します。GWLBでもデフォルトで無効です。AZ間でターゲット数に偏りがある場合は、特定のターゲットに負荷が集中するホットスポットを避けるため、クロスゾーンLBを有効にしてください。
プロトコルと機能の比較
試験向けの簡単な比較表です。
- OSIレイヤー:ALB = 7(HTTP)、NLB = 4(TCP/UDP)、GWLB = 3(IP)
- プロトコル:ALB = HTTP、HTTPS、WebSocket、NLB = TCP、UDP、TLS、GWLB = GENEVE経由のすべてのIPプロトコル
- 静的IP:ALB = なし(NLB + ALBパターンを使用)、NLB = あり(AZごとに1つ)、GWLB = 該当なし
- WAF統合:ALB = あり、NLB = なし、GWLB = なし
- Lambdaターゲット:ALB = あり、NLB = なし、GWLB = なし
- コネクションドレイニング:3種類すべてで登録解除遅延をサポート
AWS WAFとALB
ALBはAWS WAFとネイティブに統合して、リージョナルな保護を提供できます(グローバルなエッジ保護を提供するCloudFront上のWAFとは異なります)。WAF Web ACLをALBに関連付けると、アプリケーションに到達する前にHTTPリクエストをフィルタリングし、SQLインジェクション、XSS、既知の悪意あるIP、過剰なレートでアクセスするクライアントをブロックできます。
ロードバランサー層でセキュリティ検査を行いたい場合(たとえば、CloudFrontを経由しないAPIを保護する場合)は、ALB + WAFを使用します。ALBに関連付けるWAF Web ACLはALBと同じリージョンに置き、REGIONALスコープにする必要があります(CloudFront WAFでは、us-east-1のCLOUDFRONTスコープが必要です)。
NLBとPrivateLink
AWS PrivateLinkはNLBを使用して、VPCピアリング、インターネットゲートウェイ、NATを必要とせずに、あるVPCのサービスを別のVPCまたはAWSアカウントの利用者に公開します。サービスプロバイダーはサービスの前段にNLBを作成し、VPC Endpoint Serviceを作成します。利用者は、自分のVPCにサービスを指すInterface VPC Endpointを作成します。
トラフィックはAWSのプライベートネットワークを経由し、インターネットを通過することはありません。PrivateLinkは、AWS上のSaaSプロバイダーや、共有サービス(中央集中型のセキュリティサービスなど)を複数の社内AWSアカウントに公開する場合の標準的なパターンです。
クイックチェック
このレッスンで学んだAWS Solutions Architect(SAA-C03)の概念について、理解度を確認します。
レッスンのまとめ
このレッスンでは、ALBがコンテンツベースのルール、WAF統合、Lambdaターゲットを備えたレイヤー7(HTTP)でルーティングすること、NLBが静的IPと非常に高いスループットを備えたレイヤー4(TCP/UDP)でルーティングすること、そしてGWLBがGENEVEを使用してレイヤー3で仮想ネットワークアプライアンスをデプロイすることを学びました。ロードバランサーをプロトコルと機能の要件に合わせて選択してください。次は、ターゲットグループとヘルスチェックについて学びます。
よくある質問
「ALB、NLB、GLB:使い分けのポイント」レッスンは無料ですか?
はい。「ALB、NLB、GLB:使い分けのポイント」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「ALB、NLB、GLB:使い分けのポイント」で何を学びますか?
Application、Network、Gateway Load Balancer の違いを理解し、それぞれを適切なユースケースに対応付けます。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ALB、NLB、GLB:使い分けのポイント」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ALB、NLB、GLB:使い分けのポイント
- ターゲットグループとヘルスチェック
- リスナールールとパスベースルーティング
- SSL 終端とスティッキーセッション