web-dev-qa-db-ja.com

AWS Application Load BalancerとNetwork Load Balancerの比較

ALB(Application Load Balancer)とNLB(Network Load Balancer)の主な違いは何かを理解しようとしています。 ALBはOSIモデルのレイヤー7(つまり、アプリケーションレベルで存在することを意味します)にあり、NLBはレイヤー4にあり、トランスポートレベルで機能することを理解しています。

そうは言っても、これは、ALBがHTTP/HTTPS要求のみを処理できることを意味します。これは、あらゆる種類のTCP要求を処理できるNLBとは異なります。

だから私の質問は...それだけですか?それとも他に違いはありますか?

5
Diego Velez

ネットワーク負荷分散は、IPアドレスや宛先ポートなどのネットワーク変数に基づくトラフィックの分散です。これはレイヤー4(TCP)以下であり、コンテンツタイプ、Cookieデータ、カスタムヘッダー、ユーザーの場所、アプリケーションの動作など、アプリケーションレイヤーで何も考慮するようには設計されていません。それはコンテキストレスであり、この方法で指示しているパケット内に含まれているネットワーク層情報のみを気にします。

アプリケーションロードバランシングは、ネットワークレイヤーからアプリケーションレイヤーへの複数の変数に基づくリクエストの分散です。これはコンテキストに対応しており、変数の組み合わせと同じくらい簡単に、単一の変数に基づいて要求を送信できます。アプリケーションは、サーバー(オペレーティングシステムまたは仮想化レイヤー)情報だけでなく、固有の動作に基づいて負荷分散されます。

ネットワーク負荷分散ではアプリケーションの可用性を保証できないため、2つの違いは重要です。これは、ネットワークとTCP層の変数のみに基づいて決定を行い、アプリケーションをまったく認識しないためです。一般に、ネットワークロードバランサーは、サーバーがICMP pingに応答する能力、または3ウェイTCPハンドシェイクを正しく完了させる能力に基づいて、「可用性」を決定します。アプリケーションロードバランサーは、さらに深くなります。 、および特定のページの正常なHTTP GETだけでなく、コンテンツが入力パラメーターに基づいて予期されたとおりであることの検証にも基づいて、可用性を決定できます。

これは、同じホスト共有IPアドレス(古いskoolの仮想ホストが話す)への複数のアプリケーションの展開を検討するときに注意することも重要です。ネットワークロードバランサーは、可用性をチェックするときにアプリケーションAとアプリケーションBを区別しません(実際、ポートが異なる場合を除き、アプリケーションAとアプリケーションBは区別できません)。ただし、アプリケーションロードバランサーは、使用可能なアプリケーションレイヤーデータを調べることにより、2つのアプリケーションを区別します。この違いは、ネットワークロードバランサーがクラッシュしたアプリケーションやオフラインのアプリケーションにリクエストを送信してしまう可能性があることを意味しますが、アプリケーションロードバランサーが同じミスを犯すことはありません。

参照:

ネットワーク負荷分散とアプリケーション負荷分散

10
John Hanley