Elastic Load Balancing

受信トラフィックを複数のターゲットに自動分散するロードバランサーサービスで、ALB、NLB、GLB、CLB の 4 種類を提供する

概要

Elastic Load Balancing (ELB) は、受信するアプリケーショントラフィックを EC2 インスタンス、コンテナ、Lambda 関数、IP アドレスなどの複数のターゲットに自動的に分散するサービスです。Application Load Balancer (ALB)、Network Load Balancer (NLB)、Gateway Load Balancer (GLB)、Classic Load Balancer (CLB) の 4 種類があり、ワークロードの特性に応じて選択します。ALB は HTTP/HTTPS トラフィックのレイヤー 7 ルーティングに対応し、パスベースやホストベースのルーティング、WebSocket、gRPC をサポートします。NLB は TCP/UDP/TLS トラフィックのレイヤー 4 処理に特化し、超低レイテンシと毎秒数百万リクエストの処理能力を提供します。いずれも複数のアベイラビリティゾーンにまたがって動作し、ヘルスチェックにより異常なターゲットへのトラフィック送信を自動的に停止します。

ALB と NLB の使い分け

ALB と NLB の選択は、アプリケーションの要件によって決まります。ALB は HTTP/HTTPS プロトコルを理解するレイヤー 7 ロードバランサーで、URL パスやホストヘッダーに基づくルーティング、リクエストの認証 (Cognito、OIDC 連携)、WAF との統合が可能です。マイクロサービスアーキテクチャで複数のサービスを 1 つの ALB で振り分ける場合や、WebSocket や gRPC を使用する場合に適しています。NLB はレイヤー 4 で動作し、TCP/UDP パケットをそのまま転送するため、ALB より低いレイテンシ (マイクロ秒単位) を実現します。静的 IP アドレスの割り当てが可能で、PrivateLink のエンドポイントサービスとしても使用できます。ゲームサーバー、IoT デバイスからの接続、VoIP など、TCP/UDP レベルの制御が必要な場合に適しています。

Azure Load Balancer との比較

Azure で ELB に対応するサービスは Azure Load Balancer (レイヤー 4) と Azure Application Gateway (レイヤー 7) です。AWS の ALB に相当するのが Azure Application Gateway で、パスベースルーティング、SSL 終端、WAF 統合などの機能を提供します。AWS の NLB に相当するのが Azure Load Balancer の Standard SKU で、TCP/UDP トラフィックの分散を行います。料金面では、ALB は時間あたり約 0.0243 ドル + LCU (Load Balancer Capacity Unit) 課金であるのに対し、Azure Application Gateway は時間あたり約 0.246 ドル + CU (Capacity Unit) 課金で、基本料金は Azure の方が高くなります。NLB は時間あたり約 0.0243 ドル + NLCU 課金で、Azure Load Balancer Standard は時間あたり約 0.025 ドル + ルール課金と同程度です。ALB の特徴として、Lambda 関数をターゲットとして直接登録できる点が Azure Application Gateway にはない独自の機能です。