Azure Load Balancer の複数のフロントエンド

Azure Load Balancer は、複数のポート、複数の IP アドレス、またはその両方のサービスの負荷を分散できます。 パブリックまたは内部ロード バランサーを使用して、仮想マシン スケール セットや仮想マシン (VM) などの一連のサービス間のトラフィックを負荷分散することができます。

この記事では、同じポートとプロトコルを使用する複数の IP アドレス間での負荷分散の基礎について説明します。 1 つの IP アドレスにのみサービスを公開する場合は、パブリックまたは内部ロード バランサーの構成に関する簡略化された手順が用意されています。 複数フロントエンドの追加は、1 つのフロントエンド構成に対する増分です。 この記事の概念を使用することで、簡略化された構成をいつでも展開できます。

Azure Load Balancer を定義するときに、フロントエンドおよびバックエンド プールの構成は負荷分散規則に接続されています。 負荷分散規則によって参照される正常性プローブは、特定のポートとプロトコル上の VM の正常性を判断するために使用されます。 正常性プローブの結果に基づいて、バックエンド プール内の VM に新しいフローが送信されます。 フロントエンドは、IP アドレス (パブリックまたは内部)、トランスポート プロトコル (UDP または TCP)、および負荷分散規則のポート番号で構成される 3 タプルを使用して定義されます。 バックエンド プールは、Load Balancer バックエンド プールを参照する、Virtual Machine IP 構成 (NIC リソースの一部) のコレクションです。

次の表に、フロントエンド構成の例をいくつか示します。

フロントエンド IP アドレス protocol port
1 65.52.0.1 TCP 80
2 65.52.0.1 TCP 8080
3 65.52.0.1 UDP 80
4 65.52.0.2 TCP 80

この表は、4 つの異なるフロントエンドの構成を示します。 フロントエンド #1、#2、#3 には同じ IP アドレスが使用されますが、各フロントエンドのポートやプロトコルは異なります。 フロントエンド #1 および #4 は、複数のフロントエンド IP で同じフロントエンド プロトコルとポートが再利用されている、複数フロントエンドの例です。

Azure Load Balancer は、負荷分散規則を定義する際に柔軟性を提供します。 負荷分散規則は、フロントエンドのアドレスとポートをバックエンドの送信先アドレスとポートにマッピングする方法を宣言します。 バックエンドのポートが規則間で再利用されるかどうかは、規則のタイプによって変わります。 各規則のタイプには、ホストの構成とプローブの設計に影響を与える可能性がある特定の要件があります。 次の 2 つのタイプの規則があります。

  1. バックエンドのポートを再利用しない既定の規則。
  2. バックエンドのポートが再利用されるフローティング IP 規則。

Azure Load Balancer を使用すると、同じロード バランサーの構成で両方のタイプの規則を混在させることができます。 規則の制約に従っている場合は、ロード バランサーは指定の VM に対してそれらを同時または任意の組み合わせで使用できます。 選択する規則タイプは、アプリケーションの要件やその構成をサポートするための複雑さによって変わります。 該当するシナリオに対してどのタイプの規則が最適であるか評価してください。 これらのシナリオについてさらに詳しく見ていきましょう。まずは既定の動作から始めます。

規則タイプ #1: バックエンドのポートを再利用しない

Diagram of Load Balancer traffic with no backend port reuse.

このシナリオでは、フロントエンドが次のように構成されています。

フロントエンド IP アドレス protocol port
green frontend 1 65.52.0.1 TCP 80
purple frontend 2 65.52.0.2 TCP 80

バックエンド インスタンス IP (BIP) はバックエンド プール内のバックエンド サービスの IP アドレスであり、各 VM はバックエンド インスタンス IP 上の一意のポートで目的のサービスを公開します。 このサービスは、規則の定義を通じてフロントエンド IP (FIP) に関連付けられます。

次の 2 つのルールを定義します。

ルール フロントエンドのマッピング バックエンド プールへ
1 green frontend FIP1:80 green backend BIP1:80、green backend BIP2:80
2 VIP FIP2:80 purple backend BIP1:81、purple backend BIP2:81

Azure Load Balancer の完全なマッピングは次のようになりました。

ルール フロントエンド IP アドレス protocol port 宛先 port
green rule 1 65.52.0.1 TCP 80 BIP IP アドレス 80
purple rule 2 65.52.0.2 TCP 80 BIP IP アドレス 81

各規則は、宛先 IP アドレスと宛先ポートの一意の組み合わせでフローを生成する必要があります。 複数の負荷分散規則は、フローの宛先ポートを変更すると、異なるポートの同じバックエンド インスタンス IP にフローを配信できます。

正常性プローブは、常に VM のバックエンド インスタンス IP に送信されます。 プローブが VM の正常性を反映していることを確認する必要があります。

規則タイプ #2: Floating IP を使用してバックエンド ポートを再利用する

Azure Load Balancer により、フロントエンドのポートを複数フロントエンド構成に渡って再利用する柔軟性が提供されます。 さらに、一部のアプリケーション シナリオでは、バックエンド プール内の 1 つの VM で複数のアプリケーション インスタンスによって同じポートが使用されることを選択するまたは使用されることが求められる場合があります。 ポートを再利用する一般的な例としては、高可用性のためにクラスタリングする、ネットワークの仮想アプライアンス、再暗号化なしに複数の TLS エンドポイントを公開する場合などが挙げられます。

複数の規則でバックエンド ポートを再利用するには、負荷分散規則の定義でフローティング IP を有効にする必要があります。

"Floating IP" は、Direct Server Return (DSR) と呼ばれるものの一部に対する Azure の用語です。 DSR は、フロー トポロジーと IP アドレスのマッピング スキームの 2 つの部分で構成されます。 プラットフォーム レベルでは、Azure Load Balancer は Floating IP が有効かどうかに関係なく、常に DSR フロー トポロジで動作します。 これは、フローの送信部分は常に起点に直接フローするように正しく書き換えられることを意味します。

既定の規則タイプを使用することで、Azure は従来の負荷分散 IP アドレスのマッピング スキームを、簡単に使用できるように公開します。 フローティング IP を有効にすると、IP アドレスのマッピング スキームがより一層柔軟性を得られるように変わります。

Diagram of load balancer traffic for multiple frontend IPs with floating IP.

このシナリオでは、バックエンド プール内のすべての VM に次の 3 つのネットワーク インターフェイスがあります。

  • バックエンド IP: VM に関連付けられている仮想 NIC (Azure の NIC リソースの IP 構成)。
  • フロントエンド 1 (FIP1): FIP1 の IP アドレスで構成されているゲスト OS 内のループバック インターフェイス。
  • フロントエンド 2 (FIP2): FIP2 の IP アドレスで構成されているゲスト OS 内のループバック インターフェイス。

前のシナリオと同じフロントエンド構成であると仮定します。

フロントエンド IP アドレス protocol port
green frontend 1 65.52.0.1 TCP 80
purple frontend 2 65.52.0.2 TCP 80

次の 2 つのフローティング IP 規則を定義します。

ルール フロントエンド バックエンド プールにマップ
1 green rule FIP1:80 green backendFIP1:80 (VM1 および VM2 内)
2 purple rule FIP2:80 purple backendFIP2:80 (VM1 および VM2 内)

次の表は、ロード バランサーの完全なマッピングを示します。

ルール フロントエンド IP アドレス protocol port 宛先 port
green rule 1 65.52.0.1 TCP 80 フロントエンドと同じ (65.52.0.1) フロントエンドと同じ (80)
purple rule 2 65.52.0.2 TCP 80 フロントエンドと同じ (65.52.0.2) フロントエンドと同じ (80)

受信フローの宛先は、VM のループバック インターフェイスのフロントエンド IP アドレスになりました。 各規則は、宛先 IP アドレスと宛先ポートの一意の組み合わせでフローを生成する必要があります。 宛先 IP アドレスを、フローのフロントエンド IP アドレスに変更することで、同じ VM でポートを再利用できます。 お使いのサービスは、ロード バランサーをフロントエンドの IP アドレスと対応するループバック インターフェイスのポートにバインドすることによって、ロード バランサーに公開されます。

この例では、宛先ポートが変更されないことがわかります。 これはフローティング IP のシナリオで、Azure Load Balancer はバックエンドの宛先ポートを変更する負荷分散規則の定義もサポートし、フロントエンドの宛先ポートとは異なる規則にします。

Floating IP 規則タイプは、いくつかのロード バランサーの構成パターンの基盤になります。 現在使用できる 1 つの例として、1 つ以上の Always On 可用性グループ リスナーの構成があります。 これらのシナリオについては、今後徐々に文書化します。

注意

Floating IP を有効にするために必要な特定のゲスト OS 構成について、詳しくは「Azure Load Balancer のフローティング IP の構成」を参照してください。

制限事項

  • 複数のフロントエンド構成は、IaaS VM と仮想マシン スケール セットでのみサポートされます。
  • Floating IP 規則の場合、ご利用のアプリケーションではアウトバウンド SNAT フローにプライマリ IP 構成を使用する必要があります。 ご利用のアプリケーションがゲスト OS のループバック インターフェイスに構成されているフロントエンド IP アドレスにバインドされると、Azure のアウトバウンド SNAT がアウトバウンド フローを書き換えられないため、フローが失敗します。 アウトバウンドのシナリオを確認してください。
  • フローティング IP は現在、セカンダリ IP 構成ではサポートされていません。
  • パブリック IP アドレスは課金に影響します。 詳細については、「 IP アドレスの価格
  • サブスクリプションの制限が適用されます。 詳細については、「 サービスの制限 」を参照してください。

次のステップ

  • 送信接続に関するページを参照し、送信接続の動作に対する複数のフロントエンドの影響を理解します。