Приступая к созданию балансировщика нагрузки для Интернета с поддержкой IPv6 с помощью PowerShell для Resource Manager

Примечание.

В этой статье описывается вводная функция IPv6, позволяющая подсистемам Azure Load Balancer категории "Базовый" предоставлять возможность подключения IPv4 и IPv6. Теперь доступны комплексные возможности подключения IPv6, которые обеспечивает IPv6 для виртуальных сетей Azure. Эта функция интегрирует подключение по протоколу IPv6 с виртуальными сетями и содержит ключевые компоненты, такие как правила группы безопасности сети IPv6, определяемая пользователем маршрутизация IPv6, подсистема балансировки нагрузки IPv6 категории "Стандартный" и "Базовый" и многие другие. IPv6 для виртуальных сетей Azure является рекомендуемым стандартом для приложений IPv6 в Azure. См. статью Развертывание приложения с двойным стеком IPv6 в Azure — PowerShell

Azure Load Balancer является балансировщиком нагрузки 4-го уровня (TCP, UDP). Балансировщик нагрузки обеспечивает высокий уровень доступности, распределяя входящий трафик между работоспособными экземплярами службы в облачных службах или виртуальных машинах, определенных в наборе балансировщика нагрузки. Azure Load Balancer может также представить данные службы на нескольких портах, нескольких IP-адресах или обоими этими способами.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Пример сценария развертывания

На следующей схеме показано решение балансировки нагрузки, которое развертывается в этой статье.

Load balancer scenario

В этом сценарии вы создадите следующие ресурсы Azure:

  • балансировщик нагрузки для Интернета с общедоступными IPv4- и IPv6-адресами;
  • два правила балансировки нагрузки для сопоставления общедоступных виртуальных IP-адресов с частными конечными точками.
  • группу доступности, которая содержит две виртуальные машины;
  • две виртуальные машины;
  • виртуальный сетевой интерфейс для каждой виртуальной машины с назначенными IPv4 и IPv6-адресами;

Развертывание решения с помощью Azure PowerShell

Ниже описана процедура создания балансировщика нагрузки для Интернета с помощью Azure Resource Manager и PowerShell. Azure Resource Manager позволяет по отдельности создавать и настраивать ресурсы, после чего на их основе создается единый ресурс.

Чтобы развернуть балансировщик нагрузки, необходимо создать и настроить следующие объекты:

  • Конфигурация IP-адресов внешнего интерфейса. Содержит общедоступные IP-адреса для входящего сетевого трафика.
  • Пул адресов внутреннего интерфейса. Содержит сетевые интерфейсы (NIC) для получения виртуальными машинами трафика от подсистемы балансировки нагрузки.
  • Правила балансировки нагрузки — содержат правила, сопоставляющие общедоступный порт подсистемы балансировки нагрузки с портом в серверном пуле адресов.
  • Правила NAT для входящего трафика — содержат правила, сопоставляемые общедоступным портом подсистемы балансировки нагрузки с портом для конкретной виртуальной машины в серверном пуле адресов.
  • Пробы — содержат пробы работоспособности, используемые для проверка доступности экземпляров виртуальных машин в серверном пуле адресов.

Дополнительные сведения см. в статье Компоненты подсистемы балансировки нагрузки Azure.

Настройка PowerShell для использования Resource Manager

Убедитесь, что вы используете последнюю рабочую версию модуля Azure Resource Manager для PowerShell.

  1. Вход в Azure

    Connect-AzAccount
    

    При появлении запроса введите свои учетные данные.

  2. Проверка подписок для учетной записи

     Get-AzSubscription
    
  3. Выберите, какие подписки Azure будут использоваться.

    Select-AzSubscription -SubscriptionId 'GUID of subscription'
    
  4. Создайте группу ресурсов (этот шаг можно пропустить, если вы используете существующую группу).

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

Создание виртуальной сети и общедоступного IP-адреса для пула интерфейсных IP-адресов

  1. Создание виртуальной сети с подсетью.

    $backendSubnet = New-AzVirtualNetworkSubnetConfig -Name LB-Subnet-BE -AddressPrefix 10.0.2.0/24
    $vnet = New-AzvirtualNetwork -Name VNet -ResourceGroupName NRP-RG -Location 'West US' -AddressPrefix 10.0.0.0/16 -Subnet $backendSubnet
    
  2. Создайте ресурсы общедоступного IP-адреса Azure (PIP) для пула внешних IP-адресов. Обязательно измените значение для -DomainNameLabel перед выполнением следующих команд. Это значение должно быть уникальным в пределах региона Azure.

    $publicIPv4 = New-AzPublicIpAddress -Name 'pub-ipv4' -ResourceGroupName NRP-RG -Location 'West US' -AllocationMethod Static -IpAddressVersion IPv4 -DomainNameLabel lbnrpipv4
    $publicIPv6 = New-AzPublicIpAddress -Name 'pub-ipv6' -ResourceGroupName NRP-RG -Location 'West US' -AllocationMethod Dynamic -IpAddressVersion IPv6 -DomainNameLabel lbnrpipv6
    

    Внимание

    Балансировщик нагрузки использует метку домена общедоступного IP-адреса в качестве префикса к полному доменному имени (FQDN). В этом примере полные доменные имена — lbnrpipv4.westus.cloudapp.azure.com и lbnrpipv6.westus.cloudapp.azure.com.

Создание интерфейсных IP-конфигураций и пула внутренних адресов

  1. Создайте конфигурацию внешнего адреса, которая использует созданные общедоступные IP-адреса.

    $FEIPConfigv4 = New-AzLoadBalancerFrontendIpConfig -Name "LB-Frontendv4" -PublicIpAddress $publicIPv4
    $FEIPConfigv6 = New-AzLoadBalancerFrontendIpConfig -Name "LB-Frontendv6" -PublicIpAddress $publicIPv6
    
  2. Создайте пулы внутренних адресов.

    $backendpoolipv4 = New-AzLoadBalancerBackendAddressPoolConfig -Name "BackendPoolIPv4"
    $backendpoolipv6 = New-AzLoadBalancerBackendAddressPoolConfig -Name "BackendPoolIPv6"
    

Создание правил балансировки нагрузки, правил преобразования сетевых адресов, пробы и балансировщика нагрузки

В этом примере создаются следующие элементы:

  • правило NAT, которое направляет весь входящий трафик с порта 443 на порт 4443;
  • Правило подсистемы балансировки нагрузки для балансировки всего входящего трафика через порт 80 до порта 80 на адреса в серверном пуле.
  • правило балансировщика нагрузки, которое разрешает подключение к виртуальным машинам по протоколу удаленного рабочего стола на порте 3389;
  • правило пробы, которое проверяет состояние работоспособности на странице HealthProbe.aspx или службу на порте 8080;
  • балансировщик нагрузки, который использует все эти объекты.
  1. Создайте правила NAT.

    $inboundNATRule1v4 = New-AzLoadBalancerInboundNatRuleConfig -Name "NicNatRulev4" -FrontendIpConfiguration $FEIPConfigv4 -Protocol TCP -FrontendPort 443 -BackendPort 4443
    $inboundNATRule1v6 = New-AzLoadBalancerInboundNatRuleConfig -Name "NicNatRulev6" -FrontendIpConfiguration $FEIPConfigv6 -Protocol TCP -FrontendPort 443 -BackendPort 4443
    
  2. Создайте пробу работоспособности. Существует два способа настройки пробы:

    Проба HTTP

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

    или проба TCP:

    $healthProbe = New-AzLoadBalancerProbeConfig -Name 'HealthProbe-v4v6' -Protocol Tcp -Port 8080 -IntervalInSeconds 15 -ProbeCount 2
    $RDPprobe = New-AzLoadBalancerProbeConfig -Name 'RDPprobe' -Protocol Tcp -Port 3389 -IntervalInSeconds 15 -ProbeCount 2
    

    В этом примере мы будем использовать пробы TCP.

  3. Создайте правило балансировщика нагрузки.

    $lbrule1v4 = New-AzLoadBalancerRuleConfig -Name "HTTPv4" -FrontendIpConfiguration $FEIPConfigv4 -BackendAddressPool $backendpoolipv4 -Probe $healthProbe -Protocol Tcp -FrontendPort 80 -BackendPort 8080
    $lbrule1v6 = New-AzLoadBalancerRuleConfig -Name "HTTPv6" -FrontendIpConfiguration $FEIPConfigv6 -BackendAddressPool $backendpoolipv6 -Probe $healthProbe -Protocol Tcp -FrontendPort 80 -BackendPort 8080
    $RDPrule = New-AzLoadBalancerRuleConfig -Name "RDPrule" -FrontendIpConfiguration $FEIPConfigv4 -BackendAddressPool $backendpoolipv4 -Probe $RDPprobe -Protocol Tcp -FrontendPort 3389 -BackendPort 3389
    
  4. Создайте балансировщик нагрузки, используя ранее созданные объекты.

    $NRPLB = New-AzLoadBalancer -ResourceGroupName NRP-RG -Name 'myNrpIPv6LB' -Location 'West US' -FrontendIpConfiguration $FEIPConfigv4,$FEIPConfigv6 -InboundNatRule $inboundNATRule1v6,$inboundNATRule1v4 -BackendAddressPool $backendpoolipv4,$backendpoolipv6 -Probe $healthProbe,$RDPprobe -LoadBalancingRule $lbrule1v4,$lbrule1v6,$RDPrule
    

Создание сетевых адаптеров для внутренних виртуальных машин

  1. Получите виртуальную сеть и подсеть виртуальной сети, в которых должны быть созданы сетевые карты.

    $vnet = Get-AzVirtualNetwork -Name VNet -ResourceGroupName NRP-RG
    $backendSubnet = Get-AzVirtualNetworkSubnetConfig -Name LB-Subnet-BE -VirtualNetwork $vnet
    
  2. Создайте конфигурации IP-адресов и сетевые карты для виртуальных машин.

    $nic1IPv4 = New-AzNetworkInterfaceIpConfig -Name "IPv4IPConfig" -PrivateIpAddressVersion "IPv4" -Subnet $backendSubnet -LoadBalancerBackendAddressPool $backendpoolipv4 -LoadBalancerInboundNatRule $inboundNATRule1v4
    $nic1IPv6 = New-AzNetworkInterfaceIpConfig -Name "IPv6IPConfig" -PrivateIpAddressVersion "IPv6" -LoadBalancerBackendAddressPool $backendpoolipv6 -LoadBalancerInboundNatRule $inboundNATRule1v6
    $nic1 = New-AzNetworkInterface -Name 'myNrpIPv6Nic0' -IpConfiguration $nic1IPv4,$nic1IPv6 -ResourceGroupName NRP-RG -Location 'West US'
    
    $nic2IPv4 = New-AzNetworkInterfaceIpConfig -Name "IPv4IPConfig" -PrivateIpAddressVersion "IPv4" -Subnet $backendSubnet -LoadBalancerBackendAddressPool $backendpoolipv4
    $nic2IPv6 = New-AzNetworkInterfaceIpConfig -Name "IPv6IPConfig" -PrivateIpAddressVersion "IPv6" -LoadBalancerBackendAddressPool $backendpoolipv6
    $nic2 = New-AzNetworkInterface -Name 'myNrpIPv6Nic1' -IpConfiguration $nic2IPv4,$nic2IPv6 -ResourceGroupName NRP-RG -Location 'West US'
    

Создание виртуальных машин и назначение только что созданных сетевых карт

Дополнительные сведения о создании виртуальной машины см. в статье Создание виртуальной машины Windows с помощью Resource Manager и PowerShell.

  1. Создайте группу доступности и учетную запись хранения.

    New-AzAvailabilitySet -Name 'myNrpIPv6AvSet' -ResourceGroupName NRP-RG -location 'West US'
    $availabilitySet = Get-AzAvailabilitySet -Name 'myNrpIPv6AvSet' -ResourceGroupName NRP-RG
    New-AzStorageAccount -ResourceGroupName NRP-RG -Name 'mynrpipv6stacct' -Location 'West US' -SkuName "Standard_LRS"
    $CreatedStorageAccount = Get-AzStorageAccount -ResourceGroupName NRP-RG -Name 'mynrpipv6stacct'
    
  2. Создайте каждую из виртуальных машин и назначьте только что созданные сетевые карты.

    $mySecureCredentials= Get-Credential -Message "Type the username and password of the local administrator account."
    
    $vm1 = New-AzVMConfig -VMName 'myNrpIPv6VM0' -VMSize 'Standard_G1' -AvailabilitySetId $availabilitySet.Id
    $vm1 = Set-AzVMOperatingSystem -VM $vm1 -Windows -ComputerName 'myNrpIPv6VM0' -Credential $mySecureCredentials -ProvisionVMAgent -EnableAutoUpdate
    $vm1 = Set-AzVMSourceImage -VM $vm1 -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2012-R2-Datacenter -Version "latest"
    $vm1 = Add-AzVMNetworkInterface -VM $vm1 -Id $nic1.Id -Primary
    $osDisk1Uri = $CreatedStorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/myNrpIPv6VM0osdisk.vhd"
    $vm1 = Set-AzVMOSDisk -VM $vm1 -Name 'myNrpIPv6VM0osdisk' -VhdUri $osDisk1Uri -CreateOption FromImage
    New-AzVM -ResourceGroupName NRP-RG -Location 'West US' -VM $vm1
    
    $vm2 = New-AzVMConfig -VMName 'myNrpIPv6VM1' -VMSize 'Standard_G1' -AvailabilitySetId $availabilitySet.Id
    $vm2 = Set-AzVMOperatingSystem -VM $vm2 -Windows -ComputerName 'myNrpIPv6VM1' -Credential $mySecureCredentials -ProvisionVMAgent -EnableAutoUpdate
    $vm2 = Set-AzVMSourceImage -VM $vm2 -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2012-R2-Datacenter -Version "latest"
    $vm2 = Add-AzVMNetworkInterface -VM $vm2 -Id $nic2.Id -Primary
    $osDisk2Uri = $CreatedStorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/myNrpIPv6VM1osdisk.vhd"
    $vm2 = Set-AzVMOSDisk -VM $vm2 -Name 'myNrpIPv6VM1osdisk' -VhdUri $osDisk2Uri -CreateOption FromImage
    New-AzVM -ResourceGroupName NRP-RG -Location 'West US' -VM $vm2