Azure Load Balancer のアルゴリズム

Azure Load Balancer は、Azure の最もパフォーマンスの高いロード バランサーであり、待ち時間を非常に低く抑えることができます。 Azure Load Balancer の詳細については、「Azure Load Balancer の概要」または Azure Load Balancer コンポーネントを参照してください。

Azure Load Balancer では、負荷分散アルゴリズムとして、タプルベースのハッシュを利用します。

負荷分散アルゴリズム

ロード バランサー規則を作成することによって、受信トラフィック フローをロード バランサーのフロントエンドからそのバックエンド プールに分散させることができます。 Azure Load Balancer では、受信フロー (バイトではなく、フロー) の分散のために 5 タプル ハッシュ アルゴリズムを使用します。 ロード バランサーでは、トラフィックをバックエンド プール インスタンスに転送するときに、TCP/UDP ヘッダー フローのヘッダーを書き換えます (ロード バランサーでは HTTP/HTTPS ヘッダーを書き換えません)。 ロード バランサーの正常性プローブが正常なバックエンド エンドポイントを示している場合は、バックエンド インスタンスを使用して新しいトラフィック フローを受信できます。

既定では、Azure Load Balancer は 5 タプル ハッシュを使用します。

5 タプルには次が含まれます。

  • ソース IP アドレス
  • ソース ポート
  • 宛先 IP アドレス
  • 宛先ポート
  • 使用可能なサーバーにフローをマップするための IP プロトコル番号

2 タプルまたは 3 タプルベースの負荷分散を使用するセッション アフィニティ分散モードを使用することもできます。

Azure Load Balancer は任意の TCP/UDP アプリケーション シナリオをサポートしており、フローを閉じたり、開始したりはしません。 ロード バランサーはまた、どのフローのペイロードとも対話しません。 アプリケーション ペイロードはロード バランサーに対して透過的です。 任意の UDP または TCP アプリケーションをサポートできます。

ロード バランサーはレイヤー 4 で動作し、アプリケーション レイヤーのゲートウェイ機能は提供しません。 プロトコル ハンドシェイクは、常にクライアントとバックエンド プール インスタンスの間で直接発生します。 ロード バランサーでは TCP ペイロードと対話したり、TLS オフロードを提供したりしないため、包括的な暗号化シナリオを構築できます。 ロード バランサーを使用すると、VM 自体の TLS 接続が終了されることで、TLS アプリケーションの大規模なスケールアウトを実現できます。 たとえば、TLS セッションのキー容量は、バックエンド プールに追加する VM の数と種類によってのみ制限されます。

受信フローへの応答は常に、仮想マシンからの応答です。 仮想マシンにフローが到着するときは、元のソース IP アドレスも保持されます。 すべてのエンドポイントは、VM によって応答されます。 たとえば、TCP ハンドシェイクは、クライアントと選択されたバックエンド VM との間で行われます。 フロントエンドへの要求に対する応答は、バックエンドの VM によって生成される応答です。 フロントエンドへの接続を正常に検証するときは、少なくとも 1 つのバックエンド仮想マシンへの接続を全体にわたって検証していることになります。

次のステップ