Развертывание приложения с двойным стеком IPv6 с помощью внутренней подсистемы балансировки нагрузки уровня "Стандартный" в Azure с помощью PowerShell
В этой статье показано, как развернуть приложение с двойным стеком (IPv4 + IPv6) в Azure, включающее виртуальную сеть с двумя стека и подсеть, внутреннюю подсистему балансировки нагрузки уровня "Стандартный" с двумя интерфейсными конфигурациями (IPv4 + IPv6), виртуальные машины с сетевыми адаптерами, которые имеют двойную IP-конфигурацию, группу безопасности сети и общедоступные IP-адреса.
Процедура создания внутренней версии Load Balancer, поддерживающей IPv6, практически идентична процессу создания Load Balancer для IPv6 с доступом через Интернет, который описан здесь. Единственные различия при создании внутренней подсистемы балансировки нагрузки находятся в конфигурации внешнего интерфейса, как показано в приведенном ниже примере PowerShell:
$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v6" `
-PrivateIpAddress "fd00:db8:deca:deed::100" `
-PrivateIpAddressVersion "IPv6" `
-Subnet $DsSubnet
Изменения, внесенные выше в конфигурацию внешнего интерфейса подсистемы балансировки нагрузки, являются следующими:
PrivateIpAddressVersion
указывается как "IPv6".- Аргумент
-PublicIpAddress
опущен либо заменен на-PrivateIpAddress
. Обратите внимание, что частный адрес должен находиться в диапазоне IP-пространства подсети, в котором будет развернута внутренняя подсистема балансировки нагрузки. Если статический параметр-PrivateIpAddress
опущен, будет выбран следующий свободный IPv6-адрес в подсети, в которой развернута внутренняя подсистема балансировки нагрузки. - Подсеть с двумя стеками, в которой будет развернута внутренняя подсистема балансировки нагрузки, указывается с помощью аргумента
-Subnet
или-SubnetId
.
Azure Cloud Shell
В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.
Начало работы с Azure Cloud Shell
Вариант | Пример и ссылка |
---|---|
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. | |
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. | |
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. |
Чтобы использовать Azure Cloud Shell, выполните следующие действия:
Запустите Cloud Shell.
Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.
Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.
Нажмите клавишу ВВОД, чтобы запустить код или команду.
Чтобы установить и использовать PowerShell локально для работы с этой статьей, вам понадобится модуль Azure PowerShell 6.9.0 или более поздней версии. Выполните командлет Get-Module -ListAvailable Az
, чтобы узнать установленную версию. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. Если модуль PowerShell запущен локально, необходимо также выполнить командлет Connect-AzAccount
, чтобы создать подключение к Azure.
Создание или изменение группы ресурсов
Прежде чем создавать виртуальную сеть с двумя стеками, необходимо создать группу ресурсов с помощью командлета New-AzResourceGroup. В следующем примере создается группа ресурсов с именем dsStd_ILB_RG в расположении Восточная часть США.
$rg = New-AzResourceGroup `
-ResourceGroupName "dsStd_ILB_RG" `
-Location "east us"
Общедоступные IP-адреса IPv4 и IPv6
Для доступа к виртуальным машинам из Интернета требуются общедоступные IP-адреса IPv4 и IPv6 для виртуальных машин. Создайте общедоступные IP-адреса с помощью командлета New-AzPublicIpAddress. В следующем примере создаются общедоступные IP-адреса IPv4 и IPv6 с именами RdpPublicIP_1 и RdpPublicIP_2 в группе ресурсов dsStd_ILB_RG.
$RdpPublicIP_1 = New-AzPublicIpAddress `
-Name "RdpPublicIP_1" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-IpAddressVersion IPv4 `
-sku Standard
$RdpPublicIP_2 = New-AzPublicIpAddress `
-Name "RdpPublicIP_2" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-IpAddressVersion IPv6 `
-sku Standard
Создание виртуальной сети и подсети
Создайте виртуальную сеть с помощью командлета New-AzVirtualNetworkк, применив конфигурацию подсети с двумя стеками с помощью AzVirtualNetworkSubnetConfig. В следующем примере создается виртуальная сеть с именем dsVnet и подсетью dsSubnet.
# Create dual stack subnet config
$DsSubnet = New-AzVirtualNetworkSubnetConfig `
-Name "dsSubnet" `
-AddressPrefix "10.0.0.0/24","fd00:db8:deca:deed::/64"
# Create the virtual network
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsVnet" `
-AddressPrefix "10.0.0.0/16","fd00:db8:deca::/48" `
-Subnet $DsSubnet
#Refresh the fully populated subnet for use in load balancer frontend configuration
$DsSubnet = get-AzVirtualNetworkSubnetconfig -name dsSubnet -VirtualNetwork $vnet
Создание подсистемы балансировки нагрузки (цен. категория "Стандартный")
В этом разделе описана настройка двух интерфейсных IP-адресов (IPv4 и IPv6) и пула внутренних адресов для подсистемы балансировки нагрузки, а затем создание Load Balancer (цен. категория .
Создание интерфейсного IP-адреса
Создайте внешний IP-адрес с помощью New-AzLoadBalancerFrontendIpConfig. В следующем примере создаются интерфейсные IP-конфигурации IPv4 и IPv6 с именами dsLbFrontEnd_v4 и dsLbFrontEnd_v6:
$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v4" `
-PrivateIpAddress "10.0.0.100" `
-PrivateIpAddressVersion "IPv4" `
-Subnet $DsSubnet
$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v6" `
-PrivateIpAddress "fd00:db8:deca:deed::100" `
-PrivateIpAddressVersion "IPv6" `
-Subnet $DsSubnet
Настройка серверного пула адресов
Создайте серверный пул адресов с помощью командлета New-AzLoadBalancerBackendAddressPoolConfig. Виртуальные машины присоединяются в этот внутренний пул на следующих шагах. В следующем примере создаются пулы внутренних адресов с именем dsLbBackEndPool_v4 и dsLbBackEndPool_v6 для включения виртуальных машин с конфигурациями сетевого адаптера IPV4 и IPv6:
$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v4"
$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v6"
Создание правила подсистемы балансировки нагрузки
Правило балансировщика нагрузки позволяет определить распределение трафика между виртуальными машинами. Вы определяете конфигурацию внешнего IP-адреса для входящего трафика и пул внутренних IP-адресов для приема трафика, а также требуемый порт источника и назначения. Чтобы трафик поступал только на работоспособные виртуальные машины, можно дополнительно определить пробу работоспособности. Load Balancer (цен. категории "Базовый") использует пробу IPv4 для оценки работоспособности конечных точек IPv4 и IPv6 на виртуальных машинах. В подсистему балансировки нагрузки стандартной ценовой категории входит поддержка явно заданных проб работоспособности IPv6.
Создайте правило подсистемы балансировки нагрузки с помощью командлета Add-AzLoadBalancerRuleConfig. В следующем примере создаются правила подсистемы балансировки нагрузки с именами dsLBrule_v4 и dsLBrule_v6, а также выполняется балансировка трафика на TCP-порту 80 в интерфейсных конфигурациях IP-адреса версий IPv4 и IPv6.
$lbrule_v4 = New-AzLoadBalancerRuleConfig `
-Name "dsLBrule_v4" `
-FrontendIpConfiguration $frontendIPv4 `
-BackendAddressPool $backendPoolv4 `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80
$lbrule_v6 = New-AzLoadBalancerRuleConfig `
-Name "dsLBrule_v6" `
-FrontendIpConfiguration $frontendIPv6 `
-BackendAddressPool $backendPoolv6 `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80
Создание подсистемы балансировки нагрузки
Создайте Load Balancer (цен. категория "Стандартный") с помощью командлета New-AzLoadBalancer. В приведенном ниже примере создается общедоступный экземпляр Load Balancer (цен. категория "Стандартный") с именем myInternalLoadBalancer с использованием интерфейсных IP-конфигураций IPv4 и IPv6, серверных пулов, проверки работоспособности и правил балансировки нагрузки, созданных на предыдущих шагах.
$lb = New-AzLoadBalancer `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "MyInternalLoadBalancer" `
-Sku "Standard" `
-FrontendIpConfiguration $frontendIPv4,$frontendIPv6 `
-BackendAddressPool $backendPoolv4,$backendPoolv6 `
-LoadBalancingRule $lbrule_v4,$lbrule_v6
Создание сетевых ресурсов
Прежде чем развертывать виртуальные машины и тестировать подсистему балансировки нагрузки, создайте вспомогательные ресурсы, то есть группу доступности, группу безопасности сети и виртуальные сетевые адаптеры.
Создание группы доступности
Чтобы повысить высокую доступность приложения, поместите виртуальные машины в группу доступности.
Создайте группу доступности с помощью командлета New-AzAvailabilitySet. В следующем примере создается группа доступности с именем dsAVset.
$avset = New-AzAvailabilitySet `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsAVset" `
-PlatformFaultDomainCount 2 `
-PlatformUpdateDomainCount 2 `
-Sku aligned
Создание группы безопасности сети
Создайте группу безопасности сети для правил, которые будут управлять входящей и исходящей связью в виртуальной сети.
Создание правила группы безопасности сети для порта 3389
Создайте правило для группы безопасности сети, разрешающее RDP-подключения через порт 3389, с помощью командлета New-AzNetworkSecurityRuleConfig.
$rule1 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleRDP' `
-Description 'Allow RDP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 100 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389
Создание правила группы безопасности сети для порта 80
Создайте правило для группы безопасности сети, разрешающее интернет-подключения через порт 80, с помощью командлета New-AzNetworkSecurityRuleConfig.
$rule2 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleHTTP' `
-Description 'Allow HTTP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange 80 `
-DestinationAddressPrefix * `
-DestinationPortRange 80
Создание группы безопасности сети
Создайте группу безопасности сети с помощью командлета New-AzNetworkSecurityGroup.
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsNSG1" `
-SecurityRules $rule1,$rule2
Создание сетевых адаптеров
Создайте виртуальные сетевые адаптеры с помощью командлета New-AzNetworkInterface. В следующем примере создаются два виртуальных сетевых адаптера с конфигурациями IPv4 и IPv6. (по одной виртуальной сетевой карте для каждой виртуальной машины, используемой приложением).
# Create the IPv4 configuration for NIC 1
$Ip4Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp4Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv4 `
-LoadBalancerBackendAddressPool $backendPoolv4 `
-PublicIpAddress $RdpPublicIP_1
# Create the IPv6 configuration
$Ip6Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp6Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv6 `
-LoadBalancerBackendAddressPool $backendPoolv6
# Create NIC 1
$NIC_1 = New-AzNetworkInterface `
-Name "dsNIC1" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-NetworkSecurityGroupId $nsg.Id `
-IpConfiguration $Ip4Config,$Ip6Config
# Create the IPv4 configuration for NIC 2
$Ip4Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp4Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv4 `
-LoadBalancerBackendAddressPool $backendPoolv4 `
-PublicIpAddress $RdpPublicIP_2
# Create NIC 2 reusing the IPv6 configuration from NIC 1
$NIC_2 = New-AzNetworkInterface `
-Name "dsNIC2" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-NetworkSecurityGroupId $nsg.Id `
-IpConfiguration $Ip4Config,$Ip6Config
Создание виртуальных машин
Укажите имя и пароль администратора для виртуальной машины с помощью командлета Get-Credential:
$cred = get-credential -Message "DUAL STACK VNET SAMPLE: Please enter the Administrator credential to log into the VM's"
Теперь вы можете создать виртуальные машины с помощью командлета New-AzVM. В приведенном ниже примере создаются две виртуальные машины и обязательные компоненты виртуальной сети, если их еще нет:
$vmsize = "Standard_A2"
$ImagePublisher = "MicrosoftWindowsServer"
$imageOffer = "WindowsServer"
$imageSKU = "2019-Datacenter"
$vmName= "dsVM1"
$VMconfig1 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage 3> $null | Add-AzVMNetworkInterface -Id $NIC_1.Id 3> $null
$VM1 = New-AzVM -ResourceGroupName $rg.ResourceGroupName -Location $rg.Location -VM $VMconfig1
$vmName= "dsVM2"
$VMconfig2 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage 3> $null | Add-AzVMNetworkInterface -Id $NIC_2.Id 3> $null
$VM2 = New-AzVM -ResourceGroupName $rg.ResourceGroupName -Location $rg.Location -VM $VMconfig2
Виртуальная сеть IPv6 с двойным стеком на портале Azure
Вы можете просмотреть виртуальную сеть IPv6 с двумя стеками на портале Azure следующим образом:
- На портале в строке поиска введите dsVnet.
- Когда в результатах поиска появится пункт dsVnet, выберите его. Откроется страница Обзор для виртуальной сети с двумя стеками с именем dsVnet. В виртуальной сети с двойным стеком показаны две сетевые карты с конфигурациями IPv4 и IPv6, расположенные в подсети с двойным стеком и именем dsSubnet.
Примечание.
В этой предварительной версии поддержка IPv6 для виртуальной сети Azure доступна на портале Azure в режиме только для чтения.
Очистка ресурсов
Вы можете удалить ставшие ненужными группу ресурсов, виртуальную машину и все связанные с ней ресурсы, выполнив команду Remove-AzResourceGroup.
Remove-AzResourceGroup -Name dsStd_ILB_RG
Следующие шаги
Из этой статьи вы узнали, как создать Load Balancer (цен. категория "Стандартный") с двойной интерфейсной IP-конфигурацией (IPv4 и IPv6). Вы также создали две виртуальные машины, которые включали сетевые адаптеры с двумя IP-конфигурациями (IPV4 + IPv6), которые были добавлены в внутренний пул подсистемы балансировки нагрузки. Дополнительные сведения о поддержке IPv6 в виртуальных сетях Azure см. в статье Что такое IPv6 для виртуальной сети Azure?