パブリック ロード バランサーを構成する

完了

あなたは医療ポータルのソリューション設計者として、クライアント ブラウザーからの負荷を Web ファーム内の仮想マシンに分散する必要があります。 ロード バランサーを設定し、仮想マシンの負荷を分散するように構成する必要があります。

パブリック ロード バランサーによって、受信トラフィックのパブリック IP アドレスとポート番号が、バックエンド プールにある仮想マシンのプライベート IP アドレスとポート番号にマップされます。 その後、クライアントに応答が返されます。 負荷分散規則を適用することで、特定の種類のトラフィックを複数の仮想マシンやサービスに対して分散できます。

分散モード

Azure Load Balancer の既定では、ネットワーク トラフィックが複数の仮想マシン インスタンス間で均等に分散されます。 別の動作が必要な場合は、次の分散モードも使用できます。

  • 5 タプル ハッシュ:Load Balancer の既定の分散モードは、5 タプル ハッシュです。 そのタプルは、接続元 IP、接続元ポート、接続先 IP、接続先ポート、プロトコルの種類で構成されます。 接続元ポートがハッシュに含まれ、接続元ポートはセッションごとに変わるため、クライアントはセッションごとに異なる仮想マシンに転送される可能性があります。

    ハッシュベースの分散のしくみを示す図。

  • ソース IP アフィニティ:この分散モードは、"セッション アフィニティ" または "クライアント IP アフィニティ" とも呼ばれます。 接続元 IP アフィニティ モードでは、使用可能なサーバーにトラフィックをマップするために、2 タプル ハッシュ (接続元 IP アドレスと接続先 IP アドレス) または 3 タプル ハッシュ (接続元 IP アドレス、接続先 IP アドレス、プロトコルの種類) が使用されます。 ハッシュによって、特定のクライアントからの要求が、ロード バランサーの背後にある同じ仮想マシンに、常に確実に送信されます。

    セッション アフィニティのしくみを示す図。

分散モードの選択

医療ポータルの例で、プレゼンテーション層の開発者の要件が、インメモリ セッションを使用して、サインイン ユーザーのプロファイルをそのユーザーがポータルを操作する際に保存することだとします。

このシナリオでは、ユーザーのセッションを維持するために、ロード バランサーによって発信元 IP アフィニティが提供される必要があります。 その IP アドレスは同じサーバーに転送されるため、プロファイルはクライアントが最初に接続した仮想マシンのみに保存されます。 ロードバランサー エンドポイントを作成する場合は、次の PowerShell の例を使用して、分散モードを指定する必要があります。

$lb = Get-AzLoadBalancer -Name MyLb -ResourceGroupName MyResourceGroup
$lb.LoadBalancingRules[0].LoadDistribution = 'sourceIp'
Set-AzLoadBalancer -LoadBalancer $lb

Azure portal を使用してセッションの永続性を追加するには:

  1. Azure portal で、Load Balancer リソースを選択します。

  2. [設定] ペインの [負荷分散規則] ページで、関連する負荷分散規則を選択します。

    Azure portal で負荷分散規則を選択する方法を示すスクリーンショット。

  3. 負荷分散規則の設定ページで、[セッション永続化] の値を [なし] から [クライアント IP] に変更します。

Azure portal で IP アフィニティを設定する方法を示すスクリーンショット。

Load Balancer とリモート デスクトップ ゲートウェイ

リモート デスクトップ ゲートウェイは、インターネット上のクライアントからプライベート ネットワーク上のリモート デスクトップ サーバーに対して、ファイアウォール経由でリモート デスクトップ プロトコル (RDP) 接続ができる Windows サービスです。 Load Balancer の既定の 5 タプル ハッシュは、このサービスと互換性がありません。 リモート デスクトップ サーバーで Load Balancer を使用する場合は、接続元 IP アフィニティを使用します。

Load Balancer とメディアのアップロード

接続元 IP アフィニティのもう 1 つのユースケースは、メディアのアップロードです。 多くの実装においては、クライアントからプロトコルとして伝送制御プロトコル (TCP) を使用してセッションを開始し、宛先 IP アドレスに接続します。 この接続は、進行状況を監視するためにアップロード中に開いたままになりますが、ファイルはプロトコルとして別のユーザー データグラム プロトコル (UDP) を使用してアップロードされます。

5 タプル ハッシュを使用すると、TCP 接続と UDP 接続がロード バランサーによって異なる接続先 IP アドレスに送信される可能性があり、アップロードが正常に完了しません。 この問題を解決するには、接続元 IP アフィニティを使用します。