PowerShell を使用した Resource Manager でのパブリック ロード バランサーの作成Creating a public load balancer in Resource Manager by using PowerShell

重要

Azure Load Balancer では、Basic と Standard の 2 種類がサポートされています。Azure Load Balancer supports two different types: Basic and Standard. この記事では、Basic Load Balancer について説明します。This article discusses Basic Load Balancer. Basic Load Balancer は一般公開されていますが、Standard Load Balancer は現在パブリック プレビュー中です。Although Basic Load Balancer is generally available, Standard Load Balancer is currently in public preview. Standard Load Balancer について詳しくは、Standard Load Balancer の概要に関するページをご覧ください。For more information about Standard Load Balancer, see Standard Load Balancer overview.

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

ロード バランサーは次の目的で構成できます。You can configure a load balancer to:

  • 仮想マシン (VM) への着信インターネット トラフィックを負荷分散します。Load balance incoming Internet traffic to virtual machines (VMs). このシナリオのロード バランサーを、 インターネット接続ロード バランサーと呼びます。We refer to a load balancer in this scenario as an Internet-facing load balancer.
  • 仮想ネットワーク (VNet) 内の VM 間、クラウド サービス内の VM 間、またはクロスプレミスの仮想ネットワーク内のオンプレミス コンピューターと VM 間でトラフィックを負荷分散します。Load balance traffic between VMs in a virtual network (VNet), between VMs in cloud services, or between on-premises computers and VMs in a cross-premises virtual network. このシナリオのロード バランサーを、 内部ロード バランサー (ILB)と呼びます。We refer to a load balancer in this scenario as an internal load balancer (ILB).
  • 外部トラフィックを特定の VM インスタンスに転送します。Forward external traffic to a specific VM instance.

このシナリオでは、次のタスクを実行します。The following tasks will be done in this scenario:

  • ポート 80 でネットワーク トラフィックを受信するロード バランサーを作成し、負荷分散されたトラフィックを仮想マシン "web1" と "web2" に送信するCreate a load balancer that receives network traffic on port 80 and send load-balanced traffic to virtual machines "web1" and "web2"
  • ロード バランサーの背後にある仮想マシンのリモート デスクトップ アクセス/ SSH 用の NAT 規則を作成するCreate NAT rules for remote desktop access/SSH for virtual machines behind the load balancer
  • 正常性プローブを作成するCreate health probes

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

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

以下の手順では、PowerShell で Azure Resource Manager を使用して、パブリック ロード バランサーを作成する方法について説明します。The following procedures explain how to create a public load balancer by using Azure Resource Manager with PowerShell. Azure Resource Manager では、それぞれのリソースは個別に作成されて構成された後、ロード バランサーを作成するためにまとめられます。With Azure Resource Manager, each resource is created and configured individually, and then put together to create a load balancer.

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

  • フロント エンド IP 構成: 受信ネットワーク トラフィックのパブリック IP (PIP) アドレスが含まれます。Front-end IP configuration: contains public IP (PIP) 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 規則: ロード バランサーのパブリック ポートをバック エンド アドレス プール内の特定の仮想マシンのポートにマッピングする規則が含まれます。Inbound NAT rules: contains 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 used to check availability of virtual machine instances in the back-end address pool.

詳細については、「 Azure Resource Manager によるロード バランサーのサポート」を参照してください。For more information, see Azure Resource Manager support for Load Balancer.

Resource Manager を使用するための PowerShell をセットアップSet up PowerShell to use Resource Manager

PowerShell 用 Azure Resource Manager (ARM) モジュールが最新の製品版であることを確認する:Make sure you have the latest production version of the Azure Resource Manager module for PowerShell:

  1. Azure にサインインします。Sign in to Azure.

    Login-AzureRmAccount
    

    メッセージが表示されたら、資格情報を入力します。Enter your credentials when prompted.

  2. アカウントのサブスクリプションを確認します。Check the subscriptions for the account.

    Get-AzureRmSubscription
    
  3. 使用する Azure サブスクリプションを選択します。Choose which of your Azure subscriptions to use.

    Select-AzureRmSubscription -SubscriptionId 'GUID of subscription'
    
  4. リソース グループを作成します。Create a resource group. (既存のリソース グループを使用する場合は、この手順をスキップしてください。)(Skip this step if you're using an existing resource group.)

    New-AzureRmResourceGroup -Name NRP-RG -location "West US"
    

Virtual Network と、フロント エンド IP プールのパブリック IP アドレスの作成Create a virtual network and a public IP address for the front-end IP pool

  1. サブネットと仮想ネットワークを作成します。Create a subnet and a virtual network.

    $backendSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name LB-Subnet-BE -AddressPrefix 10.0.2.0/24
    New-AzureRmvirtualNetwork -Name NRPVNet -ResourceGroupName NRP-RG -Location 'West US' -AddressPrefix 10.0.0.0/16 -Subnet $backendSubnet
    
  2. フロントエンド IP プールで使用される PublicIP という名前の Azure パブリック IP アドレス リソースを作成します。DNS 名は loadbalancernrp.westus.cloudapp.azure.com です。次のコマンドでは、静的な割り当てタイプが使用されます。Create an Azure public IP address resource, named PublicIP, to be used by a front-end IP pool with the DNS name loadbalancernrp.westus.cloudapp.azure.com. The following command uses the static allocation type.

    $publicIP = New-AzureRmPublicIpAddress -Name PublicIp -ResourceGroupName NRP-RG -Location 'West US' -AllocationMethod Static -DomainNameLabel loadbalancernrp
    

    重要

    ロード バランサーはその FQDN のプレフィックスとしてパブリック IP のドメイン ラベルを使用します。 これは、ロード バランサー FQDN としてクラウド サービスを使用するクラシック デプロイ モデルからの変更点です。 この例では、FQDN は loadbalancernrp.westus.cloudapp.azure.comになります。

フロントエンド IP プールとバックエンド アドレス プールの作成Create a front-end IP pool and a back-end address pool

  1. PublicIp リソースを使用する LB-Frontend という名前のフロントエンド IP プールを作成します。Create a front-end IP pool named LB-Frontend that uses the PublicIp resource.

    $frontendIP = New-AzureRmLoadBalancerFrontendIpConfig -Name LB-Frontend -PublicIpAddress $publicIP
    
  2. LB-backendという名前のバックエンド アドレス プールを作成します。Create a back-end address pool named LB-backend.

    $beaddresspool = New-AzureRmLoadBalancerBackendAddressPoolConfig -Name LB-backend
    

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

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

  • ポート 3441 のすべての受信トラフィックをポート 3389 に転送する NAT 規則A NAT rule to translate all incoming traffic on port 3441 to port 3389
  • ポート 3442 のすべての受信トラフィックをポート 3389 に転送する NAT 規則A NAT rule to translate all incoming traffic on port 3442 to port 3389
  • HealthProbe.aspxA probe rule to check the health status on a page named HealthProbe.aspx
  • バックエンド プールのアドレスでポート 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
  • これらのオブジェクトをすべて使用するロード バランサーA load balancer that uses all these objects

次の手順を使用します:Use these steps:

  1. NAT 規則を作成します。Create the NAT rules.

    $inboundNATRule1= New-AzureRmLoadBalancerInboundNatRuleConfig -Name RDP1 -FrontendIpConfiguration $frontendIP -Protocol TCP -FrontendPort 3441 -BackendPort 3389
    
    $inboundNATRule2= New-AzureRmLoadBalancerInboundNatRuleConfig -Name RDP2 -FrontendIpConfiguration $frontendIP -Protocol TCP -FrontendPort 3442 -BackendPort 3389
    
  2. 正常性プローブを作成します。Create a health probe. プローブは次の 2 とおりの方法で構成できます。There are two ways to configure a probe:

    HTTP プローブHTTP probe

    $healthProbe = New-AzureRmLoadBalancerProbeConfig -Name HealthProbe -RequestPath 'HealthProbe.aspx' -Protocol http -Port 80 -IntervalInSeconds 15 -ProbeCount 2
    

    TCP プローブTCP probe

    $healthProbe = New-AzureRmLoadBalancerProbeConfig -Name HealthProbe -Protocol Tcp -Port 80 -IntervalInSeconds 15 -ProbeCount 2
    
  3. ロード バランサー規則を作成します。Create a load balancer rule.

    $lbrule = New-AzureRmLoadBalancerRuleConfig -Name HTTP -FrontendIpConfiguration $frontendIP -BackendAddressPool  $beAddressPool -Probe $healthProbe -Protocol Tcp -FrontendPort 80 -BackendPort 80
    
  4. ロード バランサーを作成するには、以前に作成したオブジェクトを使用します。Create the load balancer by using the previously created objects.

    $NRPLB = New-AzureRmLoadBalancer -ResourceGroupName NRP-RG -Name NRP-LB -Location 'West US' -FrontendIpConfiguration $frontendIP -InboundNatRule $inboundNATRule1,$inboundNatRule2 -LoadBalancingRule $lbrule -BackendAddressPool $beAddressPool -Probe $healthProbe
    

NIC の作成Create NICs

ネットワーク インターフェイスを作成し (または既存のネットワーク インターフェイスを変更し)、それを NAT 規則、ロード バランサー規則、プローブに関連付ける:Create network interfaces (or modify existing ones) and then associate them to NAT rules, load balancer rules, and probes:

  1. NIC の作成先となる仮想ネットワークと仮想ネットワークのサブネットを取得します。Get the virtual network and a virtual network subnet, where the NICs need to be created.

    $vnet = Get-AzureRmVirtualNetwork -Name NRPVNet -ResourceGroupName NRP-RG
    $backendSubnet = Get-AzureRmVirtualNetworkSubnetConfig -Name LB-Subnet-BE -VirtualNetwork $vnet
    
  2. lb-nic1-beという名前の NIC を作成し、それを最初の NAT 規則に関連付け、それから最初 (で唯一) のバックエンド アドレス プールに関連付けます。Create a NIC named lb-nic1-be, and associate it with the first NAT rule and the first (and only) back-end address pool.

    $backendnic1= New-AzureRmNetworkInterface -ResourceGroupName NRP-RG -Name lb-nic1-be -Location 'West US' -PrivateIpAddress 10.0.2.6 -Subnet $backendSubnet -LoadBalancerBackendAddressPool $nrplb.BackendAddressPools[0] -LoadBalancerInboundNatRule $nrplb.InboundNatRules[0]
    
  3. lb-nic2-beという名前の NIC を作成し、それを 2 番目の NAT 規則に関連付け、それから最初 (で唯一) のバックエンド アドレス プールに関連付けます。Create a NIC named lb-nic2-be, and associate it with the second NAT rule and the first (and only) back-end address pool.

    $backendnic2= New-AzureRmNetworkInterface -ResourceGroupName NRP-RG -Name lb-nic2-be -Location 'West US' -PrivateIpAddress 10.0.2.7 -Subnet $backendSubnet -LoadBalancerBackendAddressPool $nrplb.BackendAddressPools[0] -LoadBalancerInboundNatRule $nrplb.InboundNatRules[1]
    
  4. NIC を確認します。Check the NICs.

     $backendnic1
    

    予想される出力:Expected output:

     Name                 : lb-nic1-be
     ResourceGroupName    : NRP-RG
     Location             : westus
     Id                   : /subscriptions/f50504a2-1865-4541-823a-b32842e3e0ee/resourceGroups/NRP-RG/providers/Microsoft.Network/networkInterfaces/lb-nic1-be
     Etag                 : W/"d448256a-e1df-413a-9103-a137e07276d1"
     ResourceGuid         : 896cac4f-152a-40b9-b079-3e2201a5906e
     ProvisioningState    : Succeeded
     Tags                 :
     VirtualMachine       : null
     IpConfigurations     : [
                         {
                         "Name": "ipconfig1",
                         "Etag": "W/\"d448256a-e1df-413a-9103-a137e07276d1\"",
                         "Id": "/subscriptions/f50504a2-1865-4541-823a-b32842e3e0ee/resourceGroups/NRP-RG/providers/Microsoft.Network/networkInterfaces/lb-nic1-be/ipConfigurations/ipconfig1",
                         "PrivateIpAddress": "10.0.2.6",
                         "PrivateIpAllocationMethod": "Static",
                         "Subnet": {
                             "Id": "/subscriptions/f50504a2-1865-4541-823a-b32842e3e0ee/resourceGroups/NRP-RG/providers/Microsoft.Network/virtualNetworks/NRPVNet/subnets/LB-Subnet-BE"
                         },
                         "ProvisioningState": "Succeeded",
                         "PrivateIpAddressVersion": "IPv4",
                         "PublicIpAddress": {
                             "Id": null
                         },
                         "LoadBalancerBackendAddressPools": [
                             {
                             "Id": "/subscriptions/f50504a2-1865-4541-823a-b32842e3e0ee/resourceGroups/NRP-RG/providers/Microsoft.Network/loadBalancers/NRPlb/backendAddressPools/LB-backend"
                             }
                         ],
                         "LoadBalancerInboundNatRules": [
                             {
                             "Id": "/subscriptions/f50504a2-1865-4541-823a-b32842e3e0ee/resourceGroups/NRP-RG/providers/Microsoft.Network/loadBalancers/NRPlb/inboundNatRules/RDP1"
                             }
                         ],
                         "Primary": true,
                         "ApplicationGatewayBackendAddressPools": []
                         }
                     ]
     DnsSettings          : {
                         "DnsServers": [],
                         "AppliedDnsServers": [],
                         "InternalDomainNameSuffix": "prcwibzcuvie5hnxav0yjks2cd.dx.internal.cloudapp.net"
                     }
     EnableIPForwarding   : False
     NetworkSecurityGroup : null
     Primary              :
    
  5. Add-AzureRmVMNetworkInterface コマンドレットを使用し、NIC をさまざまな VM に割り当てます。Use the Add-AzureRmVMNetworkInterface cmdlet to assign the NICs to different VMs.

仮想マシンの作成Create a virtual machine

仮想マシンの作成と NIC の割り当て方法については、「Powershell を使用した Windows VM の作成」をご覧ください。For guidance on creating a virtual machine and assigning a NIC, see Create an Azure VM using PowerShell.

ロード バランサーにネットワーク インターフェイスを追加するAdd the network interface to the load balancer

  1. Azure からロード バランサーを取得します。Retrieve the load balancer from Azure.

    変数にロード バランサーのリソースを読み込みます (まだ実行していない場合)。Load the load balancer resource into a variable (if you haven't done that yet). 変数は $lb と呼ばれます。先ほど作成したロード バランサーのリソースと同じ名前を使用します。The variable is called $lb. Use the same names from the load balancer resource that you created earlier.

    $lb= get-azurermloadbalancer -name NRP-LB -resourcegroupname NRP-RG
    
  2. 変数にバックエンド構成を読み込みます。Load the back-end configuration to a variable.

    $backend=Get-AzureRmLoadBalancerBackendAddressPoolConfig -name LB-backend -LoadBalancer $lb
    
  3. 変数に作成済みのネットワーク インターフェイスを読み込みます。Load the already created network interface into a variable. 変数名は $nicです。The variable name is $nic. ネットワーク インターフェイス名は、前述の例と同じです。The network interface name is the same one from the earlier example.

    $nic =get-azurermnetworkinterface -name lb-nic1-be -resourcegroupname NRP-RG
    
  4. ネットワーク インターフェイス上のバックエンド構成を変更します。Change the back-end configuration on the network interface.

    $nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$backend
    
  5. ネットワーク インターフェイス オブジェクトを保存します。Save the network interface object.

    Set-AzureRmNetworkInterface -NetworkInterface $nic
    

    ネットワーク インターフェイスがロード バランサーのバックエンド プールに追加されると、そのロード バランサー リソースの負荷分散規則に基づいてネットワーク トラフィックの受信を開始します。After a network interface is added to the load balancer back-end pool, it starts receiving network traffic based on the load-balancing rules for that load balancer resource.

既存のロード バランサーの更新Update an existing load balancer

  1. 前述の例のロード バランサーを使用し、ロード バランサーのオブジェクトを Get-AzureLoadBalancer を使って変数 $slb に割り当てます。By using the load balancer from the earlier example, assign a load balancer object to the variable $slb by using Get-AzureLoadBalancer.

    $slb = get-AzureRmLoadBalancer -Name NRP-LB -ResourceGroupName NRP-RG
    
  2. 次の例では、フロント エンド プールでポート 81、バック エンド プールでポート 8181 を使用し、既存のロード バランサーに新しい受信 NAT 規則を追加します。In the following example, you add an inbound NAT rule--by using port 81 in the front-end pool and port 8181 for the back-end pool--to an existing load balancer.

    $slb | Add-AzureRmLoadBalancerInboundNatRuleConfig -Name NewRule -FrontendIpConfiguration $slb.FrontendIpConfigurations[0] -FrontendPort 81  -BackendPort 8181 -Protocol TCP
    
  3. Set-AzureLoadBalancerを使用して、新しい構成を保存します。Save the new configuration by using Set-AzureLoadBalancer.

    $slb | Set-AzureRmLoadBalancer
    

ロード バランサーの削除Remove a load balancer

Remove-AzureLoadBalancer コマンドを使用して、NRP-RG というリソース グループから、以前に作成されたNRP-LB という名前のロード バランサーを削除します。Use the command Remove-AzureLoadBalancer to delete a previously created load balancer named NRP-LB in a resource group called NRP-RG.

Remove-AzureRmLoadBalancer -Name NRP-LB -ResourceGroupName NRP-RG

注意

オプションのスイッチ -Force を使用することで、削除のためのプロンプトを回避できます。

次の手順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