Azure Load Balancer の負荷分散モード

Azure Load Balancer は、バックエンド プール内のインスタンスに接続をルーティングするために、次の分散モードをサポートしています。

分散モード ハッシュベース セッション永続化: クライアント IP セッション永続化: クライアント IP とプロトコル
概要 同じクライアント IP からのトラフィックは、バックエンド プール内の正常なインスタンスにルーティングされます 同じクライアント IP からのトラフィックは、同じバックエンド インスタンスにルーティングされます 同じクライアント IP とプロトコルからのトラフィックは、同じバックエンド インスタンスにルーティングされます
タプル 5 タプル 2 タプル 3 タプル
Azure portal の構成 セッション永続化: なし セッション永続化: クライアント IP セッション永続化: クライアント IP とプロトコル
REST API "loadDistribution":"Default" "loadDistribution":SourceIP "loadDistribution":SourceIPProtocol

Load Balancer で 1 つのディストリビューション モードから別のディストリビューション モードに切り替える際にダウンタイムはありません。

ハッシュベース

Azure Load Balancer では、既定で 5 タプル ハッシュ ベースの分散モードが使用されます。

5タプルは、次の5つの要素で構成されます:

  • 発信元 IP
  • ソース ポート
  • 宛先 IP
  • 宛先ポート
  • プロトコルの種類

ハッシュは、バックエンド プール内の正常なバックエンド インスタンスにトラフィックをルーティングするために使用されます。 アルゴリズムでは、トランスポート セッション内でのみ持続性が提供されます。 クライアントが同じソース IP から新しいセッションを開始すると、接続元ポートが変更され、そのトラフィックは別のバックエンド インスタンスに送信されます。

ハッシュ ベースの分散を構成するには、Azure portal でセッション永続化に [なし] を選択する必要があります。 これにより、同じクライアントからの連続した要求を、任意の仮想マシンで処理できることが指定されます。

仮想マシンへのトラフィック ルーティングを示す 5 タプル ハッシュ ベースの分散モード図のスクリーンショット。

ソース IP アドレスとポートのバリエーションが限られている場合、ロード バランサーには、バックエンド間でトラフィックを均等に分散するのに十分な個別のフロー情報がない可能性があります。 中間デバイス (SNAT を実行するファイアウォールなど) が表示されるソース IP アドレスの数を減らし、予測可能なパターンでソース ポートを割り当てるシナリオでは、トラフィック フローで使用可能なバリエーションが大幅に制限される可能性があります。特に、トラフィックが少数のクライアントから送信される場合です。 これにより、バックエンド インスタンス間での分散が著しく偏ったり、まったく行われなくなったりする可能性があります。 分散が不均等な場合は、中間デバイス経由でトラフィックを送信するクライアントの数を増やすか、中間デバイス インスタンスまたはロード バランサー バックエンドの数を調整してハッシュ対称を解除してみてください。

セッション永続化

セッション永続化は、セッション アフィニティ、ソース IP アフィニティ、またはクライアント IP アフィニティとも呼ばれます。 この分散モードは 2 タプル (ソース IP と接続先 IP) または 3 タプル (ソース IP、接続先 IP、プロトコルの種類) のハッシュを使用して、バックエンド インスタンスにルーティングします。 セッション永続化を使用する場合、同じクライアントからの接続は、バックエンド プール内の同じバックエンド インスタンスに送信されます。

セッションの永続化モードには、次の 2 種類の構成があります。

  • クライアント IP (2 タプル) - 同じクライアント IP アドレスからの連続する要求が、同じバックエンド インスタンスによって処理されることを指定します。

  • クライアント IP とプロトコル (3 タプル) - 同じクライアント IP アドレスとプロトコルの組み合わせからの連続する要求が、同じバックエンド インスタンスによって処理されることを指定します。

次の図は 2 タプルの構成を示しています。 2 タプルの場合に、どのように接続がロード バランサーを通過して仮想マシン 1 (VM1) に向かうかに注目してください。 VM1 は VM2 と VM3 でバックアップされます。

ロード バランサー経由の仮想マシンへのトラフィック ルーティングを示す 2 タプル セッション アフィニティ分散モードの図のスクリーンショット。

ユースケース

クライアント IP とプロトコルによるソース IP アフィニティ (ソース IP アフィニティ 3 タプル) は、Azure Load Balancer とリモート デスクトップ ゲートウェイ (RD ゲートウェイ) 間の非互換性を解決します。

もう 1 つの使用シナリオは、メディア アップロードです。 データのアップロードを UDP 経由で行い、コントロール プレーンは TCP 経由で実現します。

  • クライアントは、負荷分散されたパブリック アドレス宛てに TCP セッションを開始し、特定の DIP に振り分けられます。 チャネルは、接続の正常性を監視するためにアクティブのままになります。
  • 同じクライアント コンピューターからの新しい UDP セッションが、負荷分散された同じパブリック エンドポイントに対して開始されます。 接続先は前回の TCP 接続と同じ DIP エンドポイントになります。 コントロール チャネルは TCP 経由で維持しつつ、メディア アップロードを高スループットで実行できます。

仮想マシンの削除または追加によって Load Balancer のバックエンド プールのメンバーが変更された場合、クライアント要求の分散が再計算されます。 最終的に同じサーバーに接続する既存のクライアントからの新しい接続に依存することはできません。 また、ソース IP アフィニティ分散モードを使用すると、トラフィックが均等に分散されない可能性があります。 プロキシの背後で実行しているクライアントは、1 つの固有のクライアント アプリケーションと見なすことができます。

次のステップ

Azure Load Balancer の分散モードを構成する方法の詳細については、「Azure Load Balancer の分散モードを構成する」を参照してください。