Azure Load Balancer の分散モードを構成するConfigure the distribution mode for Azure Load Balancer

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

ハッシュベースの分散モードHash-based distribution mode

Azure Load Balancer の既定の分散モードは、5 タプルのハッシュです。The default distribution mode for Azure Load Balancer is a 5-tuple hash. そのタプルは、ソース IP、接続元ポート、接続先 IP、接続先ポート、プロトコルの種類で構成されます。The tuple is composed of the source IP, source port, destination IP, destination port, and protocol type. ハッシュは使用可能なサーバーにトラフィックをマップするために使用され、アルゴリズムはトランスポート セッション内でのみ持続性を提供します。The hash is used to map traffic to the available servers and the algorithm provides stickiness only within a transport session. 同じセッション内のパケットは、負荷分散されたエンドポイントの背後にある同じデータセンター IP (DIP) インスタンスに送信されます。Packets that are in the same session are directed to the same datacenter IP (DIP) instance behind the load-balanced endpoint. クライアントが同じソース IP から新しいセッションを開始すると、接続元ポートが変更され、そのトラフィックは別の DIP エンドポイントに送信されます。When the client starts a new session from the same source IP, the source port changes and causes the traffic to go to a different DIP endpoint.

5 タプルのハッシュベースの分散モード

ソース IP アフィニティ モードSource IP affinity mode

Load Balancer は、ソース IP アフィニティ分散モードを使用して構成することもできます。Load Balancer can also be configured by using the source IP affinity distribution mode. この分散モードは、セッション アフィニティまたはクライアント IP アフィニティとも呼ばれます。This distribution mode is also known as session affinity or client IP affinity. このモードは 2 タプル (ソース IP と接続先 IP) または 3 タプル (ソース IP、接続先 IP、プロトコルの種類) のハッシュを使用して、使用可能なサーバーにトラフィックをマップします。The mode uses a 2-tuple (source IP and destination IP) or 3-tuple (source IP, destination IP, and protocol type) hash to map traffic to the available servers. ソース IP アフィニティを使用すると、同じクライアント コンピューターから開始された接続は同じ DIP エンドポイントに向かいます。By using source IP affinity, connections that are started from the same client computer go to the same DIP endpoint.

次の図は 2 タプルの構成を示しています。The following figure illustrates a 2-tuple configuration. 2 タプルの場合に、どのように接続がロード バランサーを通過して仮想マシン 1 (VM1) に向かうかに注目してください。Notice how the 2-tuple runs through the load balancer to virtual machine 1 (VM1). その後、VM1 は VM2 と VM3 でバックアップされます。VM1 is then backed up by VM2 and VM3.

2 タプルのセッション アフィニティ分散モード

ソース IP アフィニティ モードは、Azure Load Balancer とリモート デスクトップ ゲートウェイ(RD ゲートウェイ) 間の非互換性を解決します。Source IP affinity mode solves an incompatibility between Azure Load Balancer and Remote Desktop Gateway (RD Gateway). このモードを使用すれば、1 つのクラウド サービス内に RD ゲートウェイ ファームを構築できます。By using this mode, you can build an RD Gateway farm in a single cloud service.

もう 1 つの使用シナリオは、メディア アップロードです。Another use case scenario is media upload. データのアップロードを UDP 経由で行い、コントロール プレーンは TCP 経由で実現します。The data upload happens through UDP, but the control plane is achieved through TCP:

  • クライアントで、負荷分散されたパブリック アドレスに対する TCP セッションが開始され、特定の DIP に送られます。A client starts a TCP session to the load-balanced public address and is directed to a specific DIP. チャネルは、接続の正常性を監視するためにアクティブのままになります。The channel is left active to monitor the connection health.
  • 同じクライアント コンピューターからの新しい UDP セッションが、負荷分散された同じパブリック エンドポイントに対して開始されます。A new UDP session from the same client computer is initiated to the same load-balanced public endpoint. 接続先は前回の TCP 接続と同じ DIP エンドポイントになります。The connection is directed to the same DIP endpoint as the previous TCP connection. コントロール チャネルは TCP 経由で維持しつつ、メディア アップロードを高スループットで実行できます。The media upload can be executed at high throughput while maintaining a control channel through TCP.

注意

負荷分散されたセットが仮想マシンの削除や追加で変更されると、クライアント要求の分散が再計算されます。When a load-balanced set changes by removing or adding a virtual machine, the distribution of client requests is recomputed. 最終的に同じサーバーに接続する既存のクライアントからの新しい接続に依存することはできません。You can't depend on new connections from existing clients to end up at the same server. また、ソース IP アフィニティ分散モードを使用すると、トラフィックが均等に分散されない可能性があります。Additionally, using source IP affinity distribution mode can cause an unequal distribution of traffic. プロキシの背後で実行しているクライアントは、1 つの固有のクライアント アプリケーションと見なすことができます。Clients that run behind proxies might be seen as one unique client application.

ソース IP アフィニティ設定を構成するConfigure source IP affinity settings

Azure ポータルAzure portal

分散モードの構成を変更するには、ポータルで負荷分散規則を変更します。You can change the configuration of the distribution mode by modifying the load-balancing rule in the portal.

  1. Azure portal にサインインし、 [リソース グループ] をクリックして、変更するロード バランサーが含まれているリソース グループを見つけます。Sign in to the Azure portal and locate the Resource Group containing the load balancer you wish to change by clicking on Resource Groups.

  2. ロード バランサーの概要ブレードで、 [設定][負荷分散規則] をクリックします。In the load balancer overview blade, click on Load balancing rules under Settings.

  3. [負荷分散規則] ブレードで、分散モードを変更する負荷分散規則をクリックします。In the load balancing rules blade, click on the load balancing rule that you wish to change the distribution mode.

  4. 規則の [セッション永続化] ドロップ ダウン ボックスを変更することで、分散モードが変更されます。Under the rule, the distribution mode is changed by changing the Session persistence drop down box. 次のオプションを使用できます。The following options are available:

    • [None (hash-based)](なし (ハッシュベース)) - 同じクライアントからの連続した要求が、任意の仮想マシンによって処理できることを指定します。None (hash-based) - Specifies that successive requests from the same client may be handled by any virtual machine.
    • [Client IP (source IP affinity 2-tuple)](クライアント IP (ソース IP アフィニティ 2 タプル)) - 同じクライアント IP アドレスからの連続する要求が、同じ仮想マシンによって処理されることを指定します。Client IP (source IP affinity 2-tuple) - Specifies that successive requests from the same client IP address will be handled by the same virtual machine.
    • [Client IP and protocol (source IP affinity 3-tuple)](クライアント IP とプロトコル (ソース IP アフィニティ 3 タプル)) - 同じクライアント IP アドレスとプロトコルの組み合わせからの連続する要求が、同じ仮想マシンによって処理されることを指定します。Client IP and protocol (source IP affinity 3-tuple) - Specifies that successive requests from the same client IP address and protocol combination will be handled by the same virtual machine.
  5. 分散モードを選択し、 [保存] をクリックします。Choose the distribution mode and then click Save.

Azure PowerShellAzure PowerShell

Resource Manager を使用してデプロイされた仮想マシンの場合は、PowerShell を使用して、既存の負荷分散規則でのロード バランサーの分散設定を変更します。For virtual machines deployed with Resource Manager, use PowerShell to change the load-balancer distribution settings on an existing load-balancing rule. 次のコマンドで、分散モードが更新されます。The following command updates the distribution mode:

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

従来の仮想マシンの場合は、Azure PowerShell を使用して分散設定を変更します。For classic virtual machines, use Azure PowerShell to change the distribution settings. 次のようにして、Azure エンドポイントを仮想マシンに追加してロード バランサー分散モードを構成します。Add an Azure endpoint to a virtual machine and configure the load balancer distribution mode:

Get-AzureVM -ServiceName mySvc -Name MyVM1 | Add-AzureEndpoint -Name HttpIn -Protocol TCP -PublicPort 80 -LocalPort 8080 –LoadBalancerDistribution sourceIP | Update-AzureVM

LoadBalancerDistribution 要素の値を、希望の負荷分散の量に合わせて設定します。Set the value of the LoadBalancerDistribution element for the desired amount of load balancing. 2 タプル (ソース IP と接続先 IP) の負荷分散の場合は sourceIP を指定します。Specify sourceIP for 2-tuple (source IP and destination IP) load balancing. 3 タプル (ソース IP、接続先 IP、プロトコルの種類) の負荷分散の場合は sourceIPProtocol を指定します。Specify sourceIPProtocol for 3-tuple (source IP, destination IP, and protocol type) load balancing. 既定の 5 タプルの負荷分散の動作の場合は none を指定します。Specify none for the default behavior of 5-tuple load balancing.

次の設定を使用して、エンドポイント ロード バランサー分散モード構成を取得します。Retrieve an endpoint load balancer distribution mode configuration by using these settings:

PS C:\> Get-AzureVM –ServiceName MyService –Name MyVM | Get-AzureEndpoint

VERBOSE: 6:43:50 PM - Completed Operation: Get Deployment
LBSetName : MyLoadBalancedSet
LocalPort : 80
Name : HTTP
Port : 80
Protocol : tcp
Vip : 65.52.xxx.xxx
ProbePath :
ProbePort : 80
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes : 15
LoadBalancerDistribution : sourceIP

LoadBalancerDistribution 要素が存在しない場合、Azure Load Balancer は既定の 5 タプルのアルゴリズムを使用します。When the LoadBalancerDistribution element isn't present, Azure Load Balancer uses the default 5-tuple algorithm.

負荷分散エンドポイント セットで分散モードを構成するConfigure distribution mode on load-balanced endpoint set

エンドポイントが負荷分散エンドポイント セットの一部である場合、分散モードは負荷分散エンドポイント セットで構成される必要があります。When endpoints are part of a load-balanced endpoint set, the distribution mode must be configured on the load-balanced endpoint set:

Set-AzureLoadBalancedEndpoint -ServiceName MyService -LBSetName LBSet1 -Protocol TCP -LocalPort 80 -ProbeProtocolTCP -ProbePort 8080 –LoadBalancerDistribution sourceIP

Cloud Services エンドポイントで分散モードを構成するConfigure distribution mode for Cloud Services endpoints

クラウド サービスを更新するには、Azure SDK for .NET 2.5 をご使用ください。Use the Azure SDK for .NET 2.5 to update your cloud service. Cloud Services のエンドポイントの設定は、.csdef ファイルで行われます。The endpoint settings for Cloud Services are made in the .csdef file. ロード バランサー分散モードを更新して Cloud Services をデプロイするには、デプロイのアップグレードが必要です。To update the load balancer distribution mode for a Cloud Services deployment, a deployment upgrade is required.

エンドポイント設定の .csdef の変更例は次の通りです。Here is an example of .csdef changes for endpoint settings:

<WorkerRole name="worker-role-name" vmsize="worker-role-size" enableNativeCodeExecution="[true|false]">
    <Endpoints>
    <InputEndpoint name="input-endpoint-name" protocol="[http|https|tcp|udp]" localPort="local-port-number" port="port-number" certificate="certificate-name" loadBalancerProbe="load-balancer-probe-name" loadBalancerDistribution="sourceIP" />
    </Endpoints>
</WorkerRole>
<NetworkConfiguration>
    <VirtualNetworkSite name="VNet"/>
    <AddressAssignments>
<InstanceAddress roleName="VMRolePersisted">
    <PublicIPs>
    <PublicIP name="public-ip-name" idleTimeoutInMinutes="timeout-in-minutes"/>
    </PublicIPs>
</InstanceAddress>
    </AddressAssignments>
</NetworkConfiguration>

API の例API example

次の例では、デプロイで指定された負荷分散セットのロード バランサー分散モードを再構成する方法を示します。The following example shows how to reconfigure the load balancer distribution mode for a specified load-balanced set in a deployment.

デプロイ済みの負荷分散セットの分散モードを変更するChange distribution mode for deployed load-balanced set

Azure クラシック デプロイ モデルを使用して、既存のデプロイ構成を変更します。Use the Azure classic deployment model to change an existing deployment configuration. x-ms-version ヘッダーを追加し、値をバージョン 2014-09-01 以降に設定します。Add the x-ms-version header and set the value to version 2014-09-01 or later.

RequestRequest

POST https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments/<deployment-name>?comp=UpdateLbSet   x-ms-version: 2014-09-01
Content-Type: application/xml

<LoadBalancedEndpointList xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="https://www.w3.org/2001/XMLSchema-instance">
  <InputEndpoint>
    <LoadBalancedEndpointSetName> endpoint-set-name </LoadBalancedEndpointSetName>
    <LocalPort> local-port-number </LocalPort>
    <Port> external-port-number </Port>
    <LoadBalancerProbe>
      <Port> port-assigned-to-probe </Port>
      <Protocol> probe-protocol </Protocol>
      <IntervalInSeconds> interval-of-probe </IntervalInSeconds>
      <TimeoutInSeconds> timeout-for-probe </TimeoutInSeconds>
    </LoadBalancerProbe>
    <Protocol> endpoint-protocol </Protocol>
    <EnableDirectServerReturn> enable-direct-server-return </EnableDirectServerReturn>
    <IdleTimeoutInMinutes>idle-time-out</IdleTimeoutInMinutes>
    <LoadBalancerDistribution>sourceIP</LoadBalancerDistribution>
  </InputEndpoint>
</LoadBalancedEndpointList>

前述のとおり、LoadBalancerDistribution 要素を sourceIP (2 タプルのアフィニティ)、sourceIPProtocol (3 タプルのアフィニティ)、none (アフィニティなし、5 タプルのアフィニティ) に設定します。As previously described, set the LoadBalancerDistribution element to sourceIP for 2-tuple affinity, sourceIPProtocol for 3-tuple affinity, or none for no affinity (5-tuple affinity).

ResponseResponse

HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Length: 0
Server: 1.0.6198.146 (rd_rdfe_stable.141015-1306) Microsoft-HTTPAPI/2.0
x-ms-servedbyregion: ussouth2
x-ms-request-id: 9c7bda3e67c621a6b57096323069f7af
Date: Thu, 16 Oct 2014 22:49:21 GMT

次の手順Next steps