アプリケーション、ネットワーク、ゲートウェイの負荷分散にはどのような違いがありますか?
Application load balancer (ALB)、Network Load Balancer (NLB)、Gateway Load Balancer (GLB) は、クラウドで使用されるロードバランサーの 3 種類です。ロードバランシングは、アプリケーションをサポートするリソースのプール全体でネットワークトラフィックを均等に分散させる方法です。最新のアプリケーションは何百万ものユーザーを同時に処理します。このような大量のトラフィックには、重複したデータを持つ多くのリソースサーバーが必要です。アプリケーショントラフィックをリダイレクトするために、ALB は HTTP ヘッダーや SSL セッション ID などの要求されたコンテンツを調べます。Network Load Balancer は、IP アドレスや他のネットワーク情報を調べて、トラフィックを最適にリダイレクトします。GLB は透過的なネットワークゲートウェイ (すべてのトラフィックの単一の入口と出口点) として機能し、需要に応じて仮想アプライアンスを拡張しながらトラフィックを分散します。
それらの仕組み:ALB 対.NLB 対.GLB
ALB、NLB、および GLB はすべて異なる機能を提供します。このため、動作の仕方が少し異なり、構成要素も異なります。
Application Load Balancer を作成する
ALB は、受信トラフィックを EC2 インスタンスなどの複数のターゲットに分散します。たとえば、e コマースアプリケーションは、製品ディレクトリ、ショッピングカート、およびチェックアウト機能を備えています。ALB は、画像や動画を含むがオープンな接続を維持する必要のないサーバーに、製品の閲覧リクエストを送信します。比較すると、多くのクライアント接続を維持し、カートデータを長期間保存できるサーバーにショッピングカートリクエストを送信します。
ALB には、クライアントからの接続要求をチェックするリスナーコンポーネントがあります。ロードバランサーが登録されたターゲットにリクエストをルーティングする方法を決定するルールをリスナーに定義できます。ターゲットグループは、登録されたターゲットをグループにソートします。一般的なトラフィックをグループ全体にルーティングするルールを定義できます。たとえば、一般的なリクエスト用のターゲットグループと、アプリケーションのマイクロサービスへのリクエスト用の他のターゲットグループを作成できます。
次の図は、ALB の仕組みを示しています。
Network Load Balancer の仕組み
NLB はネットワークの状態に基づいてトラフィックを分散します。たとえば、重複するデータを持つデータベースサーバーが複数ある場合、NLB はあらかじめ決められたサーバーの IP アドレスまたはサーバーの可用性に基づいてトラフィックをルーティングします。
NLB は、登録されているターゲットの状態をモニタリングし、正常なターゲットのみにトラフィックをルーティングします。ロードバランサーは接続リクエストを受信すると、デフォルトルールのターゲットグループからターゲットを選択します。リスナー構成で指定されたポートで、選択したターゲットへの TCP 接続を開こうとします。各 TCP 接続は、接続が続く間、1 つのターゲットにルーティングされます。同様に、UDP フローをその存続期間全体にわたって一貫して 1 つのターゲットにルーティングすることもできます。
Gateway Load Balancer の仕組み
GLB を使用すると、侵入検知および防止、ファイアウォール、ディープパケットインスペクションシステムなどの仮想アプライアンスをデプロイ、管理、およびスケーリングできます。これにより、すべてのアプライアンストラフィックの入口と出口が一元化され、需要に応じて仮想アプライアンスを拡張できます。また、仮想プライベートクラウド (VPC) の境界を越えてトラフィックを交換するためにも使用できます。
GLB では、ルートテーブルを使用してルールを確立します。設定したルールに応じて、トラフィックの転送先となるさまざまなターゲットグループが選択されます。IP パケットを受信し、トラフィックを特定のターゲットグループに転送します。
主な相違点:ALB とNLB 対.GLB
ALB、NLB、および GLB は、ネットワーク通信のさまざまな層で動作します。ALB は OSI レイヤー 7 で動作し、アプリケーションレベルのトラフィック操作とルーティングを可能にします。NLB はレイヤー 4 で動作し、ポートと IP アドレスに基づくネットワークレベルのトラフィック管理を行います。GLB はレイヤー 3 とレイヤー 7 にわたって機能し、ゲートウェイ機能とともにネットワークレベルでのバランシングおよびルーティングサービスを提供します。
ALB、NLB、GLB のその他の主な違いは次のとおりです。
ターゲットタイプ
ターゲットタイプは、これらの各ロードバランサーがトラフィックをルーティングするエンドポイントです。ALB は IP アドレス、インスタンス、および AWS Lambda ターゲットタイプで動作します。NLB は IP とインスタンスと連携し、より複雑なリクエストの場合はトラフィックを ALB にルーティングすることもできます。GLB は IP とインスタンスターゲットタイプと連携します。
プロキシの動作
ロードバランサーがクライアントリクエストを受け取ったときに実行するアクションは、次の 2 つのうちのいずれかに依存します。
- ロードバランサーがプロキシとして動作し、クライアントの接続を終了する場合
- フローを終了せずにリクエストを転送する場合
フローを終了すると、ロードバランサーは SSL ターミネーション、セッション永続性、コンテンツベースのルーティングなど、追加のトラフィック管理機能を実行できるようになります。
ALB はクライアント接続を終了し、プロキシとして機能する新しい接続を確立します。また、NLB はクライアント接続を終了し、クライアントに代わって新しい接続を作成します。ただし、GLB はプロキシとして機能したり、接続を終了したりすることはなく、トラフィックを直接転送します。
プロトコル
これらのロードバランサーは、特定の種類のトラフィックを処理し、高度な機能を実行するためのさまざまなプロトコルをサポートしています。ALB は、ウェブベーストラフィックの HTTP、HTTPS、gRPC プロトコルをサポートしています。NLB は、ネットワークレベルのトラフィック分散に対応する TCP、UDP、および TLS プロトコルをサポートしています。最後に、GLB は IP ベースルーティングに対応し、あらゆる IP ベースのプロトコルを処理します。
アルゴリズム
これらのロードバランサーは、さまざまなタイプのアルゴリズムを使用して、トラフィックをターゲットに均等に分散します。ALB はデフォルトでラウンドロビンアルゴリズムを使用し、トラフィックを次々にルーティングします。ただし、NLB はフローハッシュアルゴリズムを使用するため、トラフィックはあらかじめ決められた方法で特定のターゲットにルーティングされます。GLB はルーティングテーブル検索を使用して、トラフィックのルーティング先を決定します。
どのような場合に使用するか:ALB 対.NLB 対.GLB
ALB は、柔軟なアプリケーションレベルのトラフィック管理とルーティングが必要な場合に適しています。マイクロサービス、コンテナ環境、ウェブアプリケーションに最適です。SSL ターミネーション、セッションパーシスタンス、コンテンツベースのルーティングなどの機能により、複雑なルーティングシナリオを支援できます。
NLB は、高性能、低遅延、スケーラブルなネットワークレベルのバランシングに最適です。トランスポート層でトラフィックを分散するアプリケーションは、特にその信頼性を考慮して NLB を使用します。ゲームシステム、メディアストリーミングサービス、主要な IoT システムは NLB を使用しています。
GLB は、ネットワークゲートウェイレベルでバランスを取る場合に最適です。たとえば、GLB は、クラウド環境とオンプレミス環境間、または異なるリージョンのトラフィックを管理する場合に適しています。OSI レイヤー 3 とレイヤー 4 のバランシングを組み合わせているため、異なる地域とネットワーク間でトラフィックをルーティングできます。IP ベースルーティングをサポートしているため、トラフィックを仮想ゲートウェイに分散できるため、高いスケーラビリティと可用性を実現できます。
相違点のまとめ: ALB とNLB 対.GLB
Application load balancer (ALB) |
Network Load Balancer (NLB) |
Gateway Load Balancer (GLB) |
|
OSI レイヤー |
アプリケーション層であるレイヤー 7 で動作します。 |
トランスポート層であるレイヤー 4 で動作します。 |
ネットワークレイヤー、レイヤー 3、レイヤー 7 で動作します。 |
ターゲットタイプ |
IP、インスタンス、ラムダのターゲットタイプで動作します。 |
IP、インスタンス、ALB ターゲットタイプで動作します。 |
IP およびインスタンスターゲットタイプで動作します。 |
プロキシの動作 |
接続を終了します。 |
接続を終了します。 |
フローを終了しません。 |
プロトコル |
HTTP、HTTPS、および gRPC プロトコルをサポートします。 |
TCP、UDP、および TLS プロトコルをサポートします。 |
IP ベースルーティングをサポートします。 |
アルゴリズム |
ラウンドロビン。 |
フローハッシュ。 |
ルーティングテーブル検索。 |
AWS はお客様の負荷分散要件にどのように役立ちますか?
Elastic Load Balancing (ELB) は、フルマネージドのロード・バランシング・サービスです。受信アプリケーショントラフィックを、Amazon Web Services (AWS) とオンプレミスのリソース全体で複数のターゲットと仮想アプライアンスに自動的に分散します。さらに、AWS リージョン間のクロスゾーン負荷分散もサポートしています。ELB を使用して、要件に応じて ALB、NLB、または GLB を設定できます。
ALB は ELB の 1 つのコンポーネントです。ELB は NLB、GLB、Classic Load Balancer もサポートしています。これらのロードバランサーはクライアントの窓口であり、安全な管理によりアプリケーションのスケーラビリティを向上させるのに役立ちます。クラウド環境に ELB をセットアップするときに、1 つまたは複数のロードバランサーを選択して構成できます。
今すぐ AWS アカウントを作成して、ロードバランシングを開始しましょう!