Azure CLI を使用して IPv6 のパブリック ロード バランサーを作成するCreate a public load balancer with IPv6 using Azure CLI

Azure Load Balancer は、第 4 層 (TCP、UDP) のロード バランサーです。An Azure load balancer is a Layer-4 (TCP, UDP) load balancer. ロード バランサーは、ロード バランサー セット内のクラウド サービスまたは仮想マシンの正常なサービス インスタンスに着信トラフィックを分散することによって高可用性を提供します。Load balancers provide high availability by distributing incoming traffic among healthy service instances in cloud services or virtual machines in a load balancer set. さらに、ロード バランサーは、これらのサービスを複数のポート、複数の IP アドレス、またはその両方に提供できます。Load balancers can also present these services on multiple ports or multiple IP addresses or both.

デプロイ シナリオの例Example deployment scenario

次の図は、この記事で説明されているテンプレートの例を使用してデプロイされる負荷分散メソッドを示します。The following diagram illustrates the load balancing solution that's deployed by using the example template described in this article.

ロード バランサーのシナリオ

このシナリオでは、次の Azure リソースを作成します。In this scenario, you create the following Azure resources:

  • 2 つの仮想マシン (VM)Two virtual machines (VMs)
  • IPv4 と IPv6 の両方のアドレスが割り当てられている各 VM の仮想ネットワーク インターフェイスA virtual network interface for each VM with both IPv4 and IPv6 addresses assigned
  • IPv4 と IPv6 のパブリック IP アドレスを使用するパブリック ロード バランサーA public load balancer with an IPv4 and an IPv6 public IP address
  • 2 つの VM が含まれる可用性セットAn availability set that contains the two VMs
  • パブリック VIP をプライベート エンドポイントにマップする 2 つの負荷分散規則Two load balancing rules to map the public VIPs to the private endpoints

Azure CLI を使用したソリューションのデプロイDeploy the solution by using Azure CLI

次の手順では、Azure CLI を使用して、パブリック ロード バランサーを作成する方法を示します。The following steps show how to create a public load balancer by using Azure CLI. CLI を使用して、各オブジェクトを個別に作成および構成した後、それらをまとめてリソースを作成します。Using CLI, you create and configure each object individually, and then put them together to create a resource.

ロード バランサーをデプロイするには、次のオブジェクトを作成して構成します。To deploy a load balancer, create and configure the following objects:

  • フロントエンド IP 構成:受信ネットワーク トラフィックのパブリック IP アドレスが含まれます。Front-end IP configuration: Contains public IP addresses for incoming network traffic.
  • バックエンド アドレス プール:ロード バランサーからネットワーク トラフィックを受信する、仮想マシンのネットワーク インターフェイス (NIC) が含まれます。Back-end address pool: Contains network interfaces (NICs) for the virtual machines to receive network traffic from the load balancer.
  • 負荷分散規則:ロード バランサーのパブリック ポートをバック エンド アドレス プール内のポートにマッピングする規則が含まれます。Load balancing rules: Contains rules that map a public port on the load balancer to a port in the back-end address pool.
  • 受信 NAT 規則:ロード バランサーのパブリック ポートをバックエンド アドレス プール内の特定の仮想マシンのポートにマッピングするネットワーク アドレス変換 (NAT) 規則が含まれます。Inbound NAT rules: Contains network address translation (NAT) rules that map a public port on the load balancer to a port for a specific virtual machine in the back-end address pool.
  • プローブ:バックエンド アドレス プール内の仮想マシン インスタンスの可用性を確認するために使用する正常性プローブが含まれます。Probes: Contains health probes that are used to check the availability of virtual machine instances in the back-end address pool.

Azure CLI をセットアップするSet up Azure CLI

この例では、PowerShell コマンド ウィンドウで Azure CLI ツールを実行しています。In this example, you run the Azure CLI tools in a PowerShell command window. 読みやすさを改善し、再利用できるようにするために、Azure PowerShell コマンドレットではなく、PowerShell のスクリプト機能を使用します。To improve readability and reuse, you use PowerShell's scripting capabilities, not the Azure PowerShell cmdlets.

  1. リンクされている記事の手順に従って Azure CLI をインストールして構成し、Azure アカウントにサインインします。Install and Configure the Azure CLI by following the steps in the linked article and sign in to your Azure account.

  2. Azure CLI コマンドで使用するために PowerShell 変数を設定します。Set up PowerShell variables for use with the Azure CLI commands:

    $subscriptionid = "########-####-####-####-############"  # enter subscription id
    $location = "southcentralus"
    $rgName = "pscontosorg1southctrlus09152016"
    $vnetName = "contosoIPv4Vnet"
    $vnetPrefix = "10.0.0.0/16"
    $subnet1Name = "clicontosoIPv4Subnet1"
    $subnet1Prefix = "10.0.0.0/24"
    $subnet2Name = "clicontosoIPv4Subnet2"
    $subnet2Prefix = "10.0.1.0/24"
    $dnsLabel = "contoso09152016"
    $lbName = "myIPv4IPv6Lb"
    

リソース グループ、ロード バランサー、仮想ネットワークおよびサブネットの作成Create a resource group, a load balancer, a virtual network, and subnets

  1. リソース グループを作成します。Create a resource group:

    az group create --name $rgName --location $location
    
  2. ロード バランサーを作成します。Create a load balancer:

    $lb = az network lb create --resource-group $rgname --location $location --name $lbName
    
  3. 仮想ネットワークを作成します。Create a virtual network:

    $vnet = az network vnet create  --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
    
  4. この仮想ネットワークでは、2 つのサブネットを作成します。In this virtual network, create two subnets:

    $subnet1 = az network vnet subnet create --resource-group $rgname --name $subnet1Name --address-prefix $subnet1Prefix --vnet-name $vnetName
    $subnet2 = az network vnet subnet create --resource-group $rgname --name $subnet2Name --address-prefix $subnet2Prefix --vnet-name $vnetName
    

フロントエンド プール用のパブリック IP アドレスの作成Create public IP addresses for the front-end pool

  1. PowerShell 変数を設定します。Set up the PowerShell variables:

    $publicIpv4Name = "myIPv4Vip"
    $publicIpv6Name = "myIPv6Vip"
    
  2. フロントエンド IP プール用のパブリック IP アドレスを作成します。Create a public IP address for the front-end IP pool:

    $publicipV4 = az network public-ip create --resource-group $rgname --name $publicIpv4Name --location $location --version IPv4 --allocation-method Dynamic --dns-name $dnsLabel
    $publicipV6 = az network public-ip create --resource-group $rgname --name $publicIpv6Name --location $location --version IPv6 --allocation-method Dynamic --dns-name $dnsLabel
    

    重要

    ロード バランサーはその完全修飾ドメイン名 (FQDN) としてパブリック IP のドメイン ラベルを使用します。The load balancer uses the domain label of the public IP as its fully qualified domain name (FQDN). これはロード バランサー FQDN としてクラウド サービス名を使用する従来のデプロイメントからの変更点です。This a change from classic deployment, which uses the cloud service name as the load balancer FQDN.

    この例では、FQDN は contoso09152016.southcentralus.cloudapp.azure.comです。In this example, the FQDN is contoso09152016.southcentralus.cloudapp.azure.com.

フロントエンド プールとバックエンド プールの作成Create front-end and back-end pools

このセクションでは、以下の IP プールを作成します。In this section, you create the following IP pools:

  • ロード バランサーの着信ネットワーク トラフィックを受け取るフロントエンド IP プール。The front-end IP pool that receives the incoming network traffic on the load balancer.
  • フロントエンド プールから負荷分散されたネットワーク トラフィックを送信する先のバックエンド IP プール。The back-end IP pool where the front-end pool sends the load-balanced network traffic.
  1. PowerShell 変数を設定します。Set up the PowerShell variables:

    $frontendV4Name = "FrontendVipIPv4"
    $frontendV6Name = "FrontendVipIPv6"
    $backendAddressPoolV4Name = "BackendPoolIPv4"
    $backendAddressPoolV6Name = "BackendPoolIPv6"
    
  2. 前の手順で作成したパブリック IP とロード バランサーを関連付けてフロントエンド IP プールを作成します。Create a front-end IP pool, and associate it with the public IP that you created in the previous step and the load balancer.

    $frontendV4 = az network lb frontend-ip create --resource-group $rgname --name $frontendV4Name --public-ip-address $publicIpv4Name --lb-name $lbName
    $frontendV6 = az network lb frontend-ip create --resource-group $rgname --name $frontendV6Name --public-ip-address $publicIpv6Name --lb-name $lbName
    $backendAddressPoolV4 = az network lb address-pool create --resource-group $rgname --name $backendAddressPoolV4Name --lb-name $lbName
    $backendAddressPoolV6 = az network lb address-pool create --resource-group $rgname --name $backendAddressPoolV6Name --lb-name $lbName
    

プローブ、NAT 規則、およびロード バランサー規則の作成Create the probe, NAT rules, and load balancer rules

次の例では、以下の項目が作成されます:This example creates the following items:

  • TCP ポート 80 への接続を確認するプローブ規則。A probe rule to check for connectivity to TCP port 80.
  • ポート 3389 のすべての受信トラフィックを RDP のポート 3389 に転送する NAT 規則。*A NAT rule to translate all incoming traffic on port 3389 to port 3389 for RDP.*
  • ポート 3391 のすべての受信トラフィックをリモート デスクトップ プロトコル (RDP) のポート 3389 に転送する NAT 規則。*A NAT rule to translate all incoming traffic on port 3391 to port 3389 for remote desktop protocol (RDP).*
  • ポート 80 のすべての受信トラフィックをバックエンド プールのアドレスのポート 80 に分散するロード バランサー規則。A load balancer rule to balance all incoming traffic on port 80 to port 80 on the addresses in the back-end pool.

* NAT 規則は、ロード バランサーの背後にある特定の仮想マシン インスタンスに関連付けられます。* NAT rules are associated with a specific virtual-machine instance behind the load balancer. ポート 3389 に到着したネットワーク トラフィックは、この NAT 規則に関連付けられている特定の仮想マシンとポートに送信されます。The network traffic that arrives on port 3389 is sent to the specific virtual machine and port that's associated with the NAT rule. NAT 規則のプロトコル (UDP または TCP) を指定する必要があります。You must specify a protocol (UDP or TCP) for a NAT rule. 両方のプロトコルを同じポートに割り当てることはできません。You cannot assign both protocols to the same port.

  1. PowerShell 変数を設定します。Set up the PowerShell variables:

    $probeV4V6Name = "ProbeForIPv4AndIPv6"
    $natRule1V4Name = "NatRule-For-Rdp-VM1"
    $natRule2V4Name = "NatRule-For-Rdp-VM2"
    $lbRule1V4Name = "LBRuleForIPv4-Port80"
    $lbRule1V6Name = "LBRuleForIPv6-Port80"
    
  2. プローブを作成します。Create the probe.

    次の例では、15 秒ごとにバックエンド TCP ポート 80 への接続を確認する TCP プローブを作成します。The following example creates a TCP probe that checks for connectivity to the back-end TCP port 80 every 15 seconds. 2 回連続して失敗すると、バックエンド リソースは利用不可とマークされます。After two consecutive failures, it marks the back-end resource as unavailable.

    $probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
    
  3. バックエンド リソースへの RDP 接続を許可する受信 NAT 規則を作成します。Create inbound NAT rules that allow RDP connections to the back-end resources:

    $inboundNatRuleRdp1 = az network lb inbound-nat-rule create --resource-group $rgname --name $natRule1V4Name --frontend-ip-name $frontendV4Name --protocol Tcp --frontend-port 3389 --backend-port 3389 --lb-name $lbName
    $inboundNatRuleRdp2 = az network lb inbound-nat-rule create --resource-group $rgname --name $natRule2V4Name --frontend-ip-name $frontendV4Name --protocol Tcp --frontend-port 3391 --backend-port 3389 --lb-name $lbName
    
  4. 要求を受信したフロントエンドによって、トラフィックを別のバックエンド ポートに送信するロード バランサー規則を作成します。Create load balancer rules that send traffic to different back-end ports, depending on the front end that received the request.

    $lbruleIPv4 = az network lb rule create --resource-group $rgname --name $lbRule1V4Name --frontend-ip-name $frontendV4Name --backend-pool-name $backendAddressPoolV4Name --probe-name $probeV4V6Name --protocol Tcp --frontend-port 80 --backend-port 80 --lb-name $lbName
    $lbruleIPv6 = az network lb rule create --resource-group $rgname --name $lbRule1V6Name --frontend-ip-name $frontendV6Name --backend-pool-name $backendAddressPoolV6Name --probe-name $probeV4V6Name --protocol Tcp --frontend-port 80 --backend-port 8080 --lb-name $lbName
    
  5. 設定を確認します。Check your settings:

    az network lb show --resource-group $rgName --name $lbName
    

    予想される出力:Expected output:

     info:    Executing command network lb show
     info:    Looking up the load balancer "myIPv4IPv6Lb"
     data:    Id                              : /subscriptions/########-####-####-####-############/resourceGroups/pscontosorg1southctrlus09152016/providers/Microsoft.Network/loadBalancers/myIPv4IPv6Lb
     data:    Name                            : myIPv4IPv6Lb
     data:    Type                            : Microsoft.Network/loadBalancers
     data:    Location                        : southcentralus
     data:    Provisioning state              : Succeeded
     data:
     data:    Frontend IP configurations:
     data:    Name             Provisioning state  Private IP allocation  Private IP   Subnet  Public IP
     data:    ---------------  ------------------  ---------------------  -----------  ------  ---------
     data:    FrontendVipIPv4  Succeeded           Dynamic                                     myIPv4Vip
     data:    FrontendVipIPv6  Succeeded           Dynamic                                     myIPv6Vip
     data:
     data:    Probes:
     data:    Name                 Provisioning state  Protocol  Port  Path  Interval  Count
     data:    -------------------  ------------------  --------  ----  ----  --------  -----
     data:    ProbeForIPv4AndIPv6  Succeeded           Tcp       80          15        2
     data:
     data:    Backend Address Pools:
     data:    Name             Provisioning state
     data:    ---------------  ------------------
     data:    BackendPoolIPv4  Succeeded
     data:    BackendPoolIPv6  Succeeded
     data:
     data:    Load Balancing Rules:
     data:    Name                  Provisioning state  Load distribution  Protocol  Frontend port  Backend port  Enable floating IP  Idle timeout in minutes
     data:    --------------------  ------------------  -----------------  --------  -------------  ------------  ------------------  -----------------------
     data:    LBRuleForIPv4-Port80  Succeeded           Default            Tcp       80             80            false               4
     data:    LBRuleForIPv6-Port80  Succeeded           Default            Tcp       80             8080          false               4
     data:
     data:    Inbound NAT Rules:
     data:    Name                 Provisioning state  Protocol  Frontend port  Backend port  Enable floating IP  Idle timeout in minutes
     data:    -------------------  ------------------  --------  -------------  ------------  ------------------  -----------------------
     data:    NatRule-For-Rdp-VM1  Succeeded           Tcp       3389           3389          false               4
     data:    NatRule-For-Rdp-VM2  Succeeded           Tcp       3391           3389          false               4
     info:    network lb show
    

NIC の作成Create NICs

NIC を作成し、それらを NAT 規則、ロード バランサー規則、およびプローブに関連付けます。Create NICs and associate them with NAT rules, load balancer rules, and probes.

  1. PowerShell 変数を設定します。Set up the PowerShell variables:

    $nic1Name = "myIPv4IPv6Nic1"
    $nic2Name = "myIPv4IPv6Nic2"
    $subnet1Id = "/subscriptions/$subscriptionid/resourceGroups/$rgName/providers/Microsoft.Network/VirtualNetworks/$vnetName/subnets/$subnet1Name"
    $subnet2Id = "/subscriptions/$subscriptionid/resourceGroups/$rgName/providers/Microsoft.Network/VirtualNetworks/$vnetName/subnets/$subnet2Name"
    $backendAddressPoolV4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/backendAddressPools/$backendAddressPoolV4Name"
    $backendAddressPoolV6Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/backendAddressPools/$backendAddressPoolV6Name"
    $natRule1V4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/inboundNatRules/$natRule1V4Name"
    $natRule2V4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/inboundNatRules/$natRule2V4Name"
    
  2. 各バックエンドに NIC を作成し、IPv6 構成を追加します。Create a NIC for each back end, and add an IPv6 configuration:

    $nic1 = az network nic create --name $nic1Name --resource-group $rgname --location $location --private-ip-address-version "IPv4" --subnet $subnet1Id --lb-address-pools $backendAddressPoolV4Id --lb-inbound-nat-rules $natRule1V4Id
    $nic1IPv6 = az network nic ip-config create --resource-group $rgname --name "IPv6IPConfig" --private-ip-address-version "IPv6" --lb-address-pools $backendAddressPoolV6Id --nic-name $nic1Name
    
    $nic2 = az network nic create --name $nic2Name --resource-group $rgname --location $location --private-ip-address-version "IPv4" --subnet $subnet2Id --lb-address-pools $backendAddressPoolV4Id --lb-inbound-nat-rules $natRule2V4Id
    $nic2IPv6 = az network nic ip-config create --resource-group $rgname --name "IPv6IPConfig" --private-ip-address-version "IPv6" --lb-address-pools $backendAddressPoolV6Id --nic-name $nic2Name
    

バックエンドの VM のリソースの作成および各 NIC の関連付けCreate the back-end VM resources, and attach each NIC

VM を作成するには、ストレージ アカウントが必要です。To create VMs, you must have a storage account. 負荷分散には、VM を可用性セットのメンバーにする必要があります。For load balancing, the VMs need to be members of an availability set. VM の作成の詳細については、PowerShell で Azure VM を作成する方法に関するページを参照してください。For more information about creating VMs, see Create an Azure VM by using PowerShell.

  1. PowerShell 変数を設定します。Set up the PowerShell variables:

    $availabilitySetName = "myIPv4IPv6AvailabilitySet"
    $vm1Name = "myIPv4IPv6VM1"
    $vm2Name = "myIPv4IPv6VM2"
    $nic1Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/networkInterfaces/$nic1Name"
    $nic2Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/networkInterfaces/$nic2Name"
    $imageurn = "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest"
    $vmUserName = "vmUser"
    $mySecurePassword = "PlainTextPassword*1"
    

    警告

    この例では、VM のユーザー名とパスワードをクリア テキストで使用します。This example uses the username and password for the VMs in cleartext. クリア テキストでこれらの資格情報を使用するときは、適切な注意を払ってください。Take appropriate care when you use these credentials in cleartext. PowerShell で資格情報を処理するより安全な方法については、Get-Credential コマンドレットを参照してください。For a more secure method of handling credentials in PowerShell, see the Get-Credential cmdlet.

  2. 可用性セットを作成します。Create the availability set:

    $availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
    
  3. 関連付けられた NIC を使用して仮想マシンを作成します。Create the virtual machines with the associated NICs:

    az vm create --resource-group $rgname --name $vm1Name --image $imageurn --admin-username $vmUserName --admin-password $mySecurePassword --nics $nic1Id --location $location --availability-set $availabilitySetName --size "Standard_A1" 
    
    az vm create --resource-group $rgname --name $vm2Name --image $imageurn --admin-username $vmUserName --admin-password $mySecurePassword --nics $nic2Id --location $location --availability-set $availabilitySetName --size "Standard_A1" 
    

次の手順Next steps

内部ロード バランサーの構成の開始Get started configuring an internal load balancer
ロード バランサー分散モードの構成Configure a load balancer distribution mode
ロード バランサーのアイドル TCP タイムアウト設定の構成Configure idle TCP timeout settings for your load balancer