В этой статье показано, как развернуть приложение с двойным стеком (IPv4 + IPv6) с помощью Load Balancer (цен. категория "Стандартный") в Azure. Сценарий включает в себя виртуальную сеть с двумя стеками и подсетью с двумя стеками, стандартную подсистему балансировки нагрузки с двумя конфигурациями интерфейсов (IPv4 + IPv6), виртуальные машины с сетевыми адаптерами, имеющими двойную конфигурацию IP, двойные правила группы безопасности сети и два общедоступных IP-адреса.
Следуйте этим инструкциям в Azure PowerShell, чтобы развернуть приложение с двойным стеком (IPv4 и IPv6) с помощью Load Balancer (цен. категория "Стандартный") в Azure.
Создание группы ресурсов
Прежде чем вы сможете создать виртуальную сеть с двумя стеками, необходимо создать группу ресурсов с помощью командлета New-AzResourceGroup. В следующем примере создается группа ресурсов с именем myRGDualStack в расположении Восточная часть США.
$rg = New-AzResourceGroup `
-ResourceGroupName "dsRG1" `
-Location "east us"
Создание общедоступных IP-адресов IPv4 и IPv6
Для доступа к виртуальным машинам из Интернета требуются общедоступные IP-адреса IPv4 и IPv6 для балансировщика нагрузки. Создайте общедоступные IP-адреса с New-AzPublicIpAddress. В следующем примере создается общедоступный IP-адрес IPv4 и IPv6 с именем dsPublicIP_v4 и dsPublicIP_v6 в группе ресурсов dsRG1:
$PublicIP_v4 = New-AzPublicIpAddress `
-Name "dsPublicIP_v4" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-IpAddressVersion IPv4 `
-Sku Standard
$PublicIP_v6 = New-AzPublicIpAddress `
-Name "dsPublicIP_v6" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-IpAddressVersion IPv6 `
-Sku Standard
Чтобы получить доступ к виртуальным машинам с помощью подключения RDP, создайте общедоступные IP-адреса IPv4 для виртуальных машин с New-AzPublicIpAddress.
$RdpPublicIP_1 = New-AzPublicIpAddress `
-Name "RdpPublicIP_1" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-Sku Standard `
-IpAddressVersion IPv4
$RdpPublicIP_2 = New-AzPublicIpAddress `
-Name "RdpPublicIP_2" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-Sku Standard `
-IpAddressVersion IPv4
Создать стандартный балансировщик нагрузки
В этом разделе выполняется настройка двух интерфейсных IP-адресов (IPv4 и IPv6) и пула адресов обратного соединения для балансировщика нагрузки, а затем создается стандартный балансировщик нагрузки.
Создание интерфейсного IP-адреса
Создайте фронтальный IP-адрес, используя New-AzLoadBalancerFrontendIpConfig. В следующем примере создаются интерфейсные IP-конфигурации IPv4 и IPv6 с именами dsLbFrontEnd_v4 и dsLbFrontEnd_v6:
$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v4" `
-PublicIpAddress $PublicIP_v4
$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v6" `
-PublicIpAddress $PublicIP_v6
Создайте пул серверных адресов с New-AzLoadBalancerBackendAddressPoolConfig для виртуальных машин, планируемых к развертыванию позже. В следующем примере создаются пулы внутренних адресов с именем dsLbBackEndPool_v4 и dsLbBackEndPool_v6 для включения виртуальных машин с конфигурациями сетевого адаптера IPV4 и IPv6:
$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v4"
$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v6"
Создание пробы работоспособности
Используйте командлет Add-AzLoadBalancerProbeConfig для создания пробы работоспособности для отслеживания работоспособности виртуальных машин.
$probe = New-AzLoadBalancerProbeConfig -Name MyProbe -Protocol tcp -Port 3389 -IntervalInSeconds 15 -ProbeCount 2
Создать правило балансировщика нагрузки
Вы используете правило балансировщика нагрузки, чтобы определить, как трафик распределяется на виртуальные машины. Определите конфигурацию фронтенда IP для входящего трафика и пул IP-адресов для приёма трафика, а также необходимые исходные и конечные порты. Чтобы обеспечить получение трафика только здоровыми виртуальными машинами, по желанию определите зонд здоровья. Load Balancer (цен. категория "Стандартный") поддерживает явно заданные проверки работоспособности 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 `
-probe $probe
$lbrule_v6 = New-AzLoadBalancerRuleConfig `
-Name "dsLBrule_v6" `
-FrontendIpConfiguration $frontendIPv6 `
-BackendAddressPool $backendPoolv6 `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80 `
-probe $probe
Создание подсистемы балансировки нагрузки
Создайте стандартный балансировщик нагрузки с помощью командлета New-AzLoadBalancer. В следующем примере создается общедоступный балансировщик нагрузки стандартного уровня с именем myLoadBalancer, используя конфигурации IP-адресов фронтенда IPv4 и IPv6, серверные пулы и правила балансировки нагрузки, которые вы создали на предыдущих этапах.
$lb = New-AzLoadBalancer `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "MyLoadBalancer" `
-Sku "Standard" `
-FrontendIpConfiguration $frontendIPv4,$frontendIPv6 `
-BackendAddressPool $backendPoolv4,$backendPoolv6 `
-LoadBalancingRule $lbrule_v4,$lbrule_v6 `
-Probe $probe
Создание сетевых ресурсов
Прежде чем развертывать виртуальные машины и тестировать подсистему балансировки нагрузки, создайте вспомогательные ресурсы, т. е. группу доступности, группу безопасности сети, виртуальную сеть и виртуальные сетевые адаптеры.
Создайте группу доступности
Чтобы улучшить высокую доступность приложения, поместите виртуальные машины в группу доступности.
Создайте набор доступности с помощью командлета New-AzAvailabilitySet. В следующем примере создается набор доступности с именем myAvailabilitySet.
$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 с помощью командлета PowerShell New-AzNetworkSecurityRuleConfig.
$rule2 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleHTTP' `
-Description 'Allow HTTP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80
Создание группы безопасности сети
Создайте группу безопасности сети, используя командлет New-AzNetworkSecurityGroup.
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsNSG1" `
-SecurityRules $rule1,$rule2
Создание виртуальной сети
Создайте виртуальную сеть с помощью New-AzVirtualNetwork. В следующем примере создается виртуальная сеть с именем dsVnet и подсетью mySubnet.
# Create dual stack subnet
$subnet = 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 $subnet
Настройка сетевых адаптеров
Создайте виртуальные сетевые адаптеры с помощью команды New-AzNetworkInterface. В следующем примере создаются два виртуальных сетевых адаптера с конфигурациями IPv4 и IPv6. (по одной виртуальной сетевой карте для каждой виртуальной машины, создаваемой для вашего приложения на следующих шагах).
$Ip4Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp4Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv4 `
-LoadBalancerBackendAddressPool $backendPoolv4 `
-PublicIpAddress $RdpPublicIP_1
$Ip6Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp6Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv6 `
-LoadBalancerBackendAddressPool $backendPoolv6
$NIC_1 = New-AzNetworkInterface `
-Name "dsNIC1" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-NetworkSecurityGroupId $nsg.Id `
-IpConfiguration $Ip4Config,$Ip6Config
$Ip4Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp4Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv4 `
-LoadBalancerBackendAddressPool $backendPoolv4 `
-PublicIpAddress $RdpPublicIP_2
$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 VMs."
Теперь вы можете создать виртуальные машины с помощью 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
Определение IP-адресов конечных точек IPv4 и IPv6
Получите все объекты сетевого интерфейса в группе ресурсов, чтобы суммировать IP-адреса, используемые при этом развертывании get-AzNetworkInterface. Кроме того, получите адреса фронтальных конечных точек IPv4 и IPv6 балансировщика нагрузки с помощью get-AzpublicIpAddress.
$rgName= "dsRG1"
$NICsInRG= get-AzNetworkInterface -resourceGroupName $rgName
write-host `nSummary of IPs in this Deployment:
write-host ******************************************
foreach ($NIC in $NICsInRG) {
$VMid= $NIC.virtualmachine.id
$VMnamebits= $VMid.split("/")
$VMname= $VMnamebits[($VMnamebits.count-1)]
write-host `nPrivate IP addresses for $VMname
$IPconfigsInNIC= $NIC.IPconfigurations
foreach ($IPconfig in $IPconfigsInNIC) {
$IPaddress= $IPconfig.privateipaddress
write-host " "$IPaddress
IF ($IPconfig.PublicIpAddress.ID) {
$IDbits= ($IPconfig.PublicIpAddress.ID).split("/")
$PipName= $IDbits[($IDbits.count-1)]
$PipObject= get-azPublicIpAddress -name $PipName -resourceGroup $rgName
write-host " "RDP address: $PipObject.IpAddress
}
}
}
write-host `nPublic IP addresses on Load Balancer:
(get-AzpublicIpAddress -resourcegroupname $rgName | where { $_.name -notlike "RdpPublicIP*" }).IpAddress
На следующем рисунке показан пример выходных данных, в котором перечислены частные адреса IPv4 и IPv6 двух виртуальных машин, а также IP-адреса интерфейсов IPv4 и IPv6 для Load Balancer.
Виртуальная сеть IPv6 с двойным стеком на портале Azure
Вы можете просмотреть виртуальную сеть IPv6 с двумя стеками на портале Azure следующим образом:
- На портале в строке поиска введите dsVnet.
- Когда в результатах поиска появится пункт dsVnet, выберите его. Откроется страница Обзор для виртуальной сети с двумя стеками с именем dsVnet. Виртуальная сеть с двойным стеком показывает две сетевые карты, имеющие конфигурации IPv4 и IPv6, в двойной стековой подсети с именем dsSubnet.
Очистка ресурсов
Вы можете удалить ставшие ненужными группу ресурсов, виртуальную машину и все связанные с ней ресурсы, выполнив команду Remove-AzResourceGroup.
Remove-AzResourceGroup -Name dsRG1
Следуйте этим инструкциям в Azure CLI, чтобы развернуть приложение с двойным стеком (IPv4 и IPv6) с помощью Load Balancer (цен. категория "Стандартный") в Azure.
Создание группы ресурсов
Прежде чем создать виртуальную сеть с двумя стеками, необходимо создать группу ресурсов, выполнив команду az group create. В следующем примере создается группа ресурсов с именем DsResourceGroup01 в расположении eastus :
az group create \
--name DsResourceGroup01 \
--location eastus
Создание общедоступных IP-адресов IPv4 и IPv6 для подсистемы балансировки нагрузки
Для доступа к конечным точкам IPv4 и IPv6 в Интернете требуются общедоступные IP-адреса IPv4 и IPv6 для подсистемы балансировки нагрузки. Создайте общедоступный IP-адрес с помощью az network public-ip create. В следующем примере создается общедоступный IP-адрес IPv4 и IPv6 с именем dsPublicIP_v4 и dsPublicIP_v6 в группе ресурсов DsResourceGroup01 :
# Create an IPV4 IP address
az network public-ip create \
--name dsPublicIP_v4 \
--resource-group DsResourceGroup01 \
--location eastus \
--sku STANDARD \
--allocation-method static \
--version IPv4
# Create an IPV6 IP address
az network public-ip create \
--name dsPublicIP_v6 \
--resource-group DsResourceGroup01 \
--location eastus \
--sku STANDARD \
--allocation-method static \
--version IPv6
Создание общедоступных IP-адресов для виртуальных машин
Для удаленного доступа к виртуальным машинам в Интернете требуется общедоступный IP-адрес IPv4 для виртуальных машин. Создайте общедоступный IP-адрес с помощью az network public-ip create.
az network public-ip create \
--name dsVM0_remote_access \
--resource-group DsResourceGroup01 \
--location eastus \
--sku Standard \
--allocation-method static \
--version IPv4
az network public-ip create \
--name dsVM1_remote_access \
--resource-group DsResourceGroup01 \
--location eastus \
--sku Standard \
--allocation-method static \
--version IPv4
Создать стандартный балансировщик нагрузки
В этом разделе выполняется настройка двух интерфейсных IP-адресов (IPv4 и IPv6) и пула адресов обратного соединения для балансировщика нагрузки, а затем создается стандартный балансировщик нагрузки.
Создание подсистемы балансировки нагрузки
Создайте балансировщик нагрузки уровня "Стандартный" с помощью az network lb create под названием dsLB, который включает в себя интерфейсный пул с именем dsLbFrontEnd_v4 и внутренний пул с именем dsLbBackEndPool_v4, связанный с общедоступным IPv4-адресом dsPublicIP_v4, созданным на предыдущем шаге.
az network lb create \
--name dsLB \
--resource-group DsResourceGroup01 \
--sku Standard \
--location eastus \
--frontend-ip-name dsLbFrontEnd_v4 \
--public-ip-address dsPublicIP_v4 \
--backend-pool-name dsLbBackEndPool_v4
Создание интерфейса IPv6
Создайте внешний IP-адрес IPV6 командой az network lb frontend-ip create. В следующем примере создается интерфейсная IP-конфигурация с именем dsLbFrontEnd_v6 и подключается адрес dsPublicIP_v6 :
az network lb frontend-ip create \
--lb-name dsLB \
--name dsLbFrontEnd_v6 \
--resource-group DsResourceGroup01 \
--public-ip-address dsPublicIP_v6
Создайте бекэнд-пулы адресов IPv6 с помощью az network lb address-pool create. В следующем примере создается пул внутренних адресов с именем dsLbBackEndPool_v6 для включения виртуальных машин с конфигурациями сетевого адаптера IPv6:
az network lb address-pool create \
--lb-name dsLB \
--name dsLbBackEndPool_v6 \
--resource-group DsResourceGroup01
Создание пробы работоспособности
Создайте проверку работоспособности с помощью команды az network lb probe create для мониторинга состояния виртуальных машин.
az network lb probe create -g DsResourceGroup01 --lb-name dsLB -n dsProbe --protocol tcp --port 3389
Создать правило балансировщика нагрузки
Правило балансировщика нагрузки позволяет определить распределение трафика между виртуальными машинами. Вы определяете конфигурацию внешнего IP-адреса для входящего трафика и пул внутренних IP-адресов для приема трафика, а также требуемый порт источника и назначения.
Создайте правило балансировщика нагрузки с помощью команды az network lb rule create. В следующем примере создаются правила подсистемы балансировки нагрузки с именами dsLBrule_v4 и dsLBrule_v6, а также выполняется балансировка трафика на TCP-порту 80 в интерфейсных конфигурациях IP-адреса версий IPv4 и IPv6.
az network lb rule create \
--lb-name dsLB \
--name dsLBrule_v4 \
--resource-group DsResourceGroup01 \
--frontend-ip-name dsLbFrontEnd_v4 \
--protocol Tcp \
--frontend-port 80 \
--backend-port 80 \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v4
az network lb rule create \
--lb-name dsLB \
--name dsLBrule_v6 \
--resource-group DsResourceGroup01 \
--frontend-ip-name dsLbFrontEnd_v6 \
--protocol Tcp \
--frontend-port 80 \
--backend-port 80 \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v6
Создание сетевых ресурсов
Перед развертыванием некоторых виртуальных машин необходимо создать вспомогательные сетевые ресурсы — группу доступности, группу безопасности сети, виртуальную сеть и виртуальные сетевые адаптеры.
Создайте группу доступности
Чтобы повысить доступность приложения, разместите виртуальные машины в группе доступности.
Создайте группу доступности с az vm availability-set create. В следующем примере создается группа доступности с именем dsAVset.
az vm availability-set create \
--name dsAVset \
--resource-group DsResourceGroup01 \
--location eastus \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Создание группы безопасности сети
Создайте группу безопасности сети для правил, регулирующих входящий и исходящий обмен данными в виртуальной сети.
Создание группы безопасности сети
Создайте группу безопасности сети с az network nsg create
az network nsg create \
--name dsNSG1 \
--resource-group DsResourceGroup01 \
--location eastus
Создание правила группы безопасности сети для входящих и исходящих подключений
Создайте правило группы безопасности сети, чтобы разрешить подключения RDP через порт 3389, подключение к Интернету через порт 80, и создайте правило для исходящих подключений с командой az network nsg rule create.
# Create inbound rule for port 3389
az network nsg rule create \
--name allowRdpIn \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 100 \
--description "Allow Remote Desktop In" \
--access Allow \
--protocol "*" \
--direction Inbound \
--source-address-prefixes "*" \
--source-port-ranges "*" \
--destination-address-prefixes "*" \
--destination-port-ranges 3389
# Create inbound rule for port 80
az network nsg rule create \
--name allowHTTPIn \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 200 \
--description "Allow HTTP In" \
--access Allow \
--protocol "*" \
--direction Inbound \
--source-address-prefixes "*" \
--source-port-ranges 80 \
--destination-address-prefixes "*" \
--destination-port-ranges 80
# Create outbound rule
az network nsg rule create \
--name allowAllOut \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 300 \
--description "Allow All Out" \
--access Allow \
--protocol "*" \
--direction Outbound \
--source-address-prefixes "*" \
--source-port-ranges "*" \
--destination-address-prefixes "*" \
--destination-port-ranges "*"
Создание виртуальной сети
Создайте виртуальную сеть с помощью команды az network vnet create. В следующем примере создается виртуальная сеть с именем dsVNET с подсетями dsSubNET_v4 и dsSubNET_v6:
# Create the virtual network
az network vnet create \
--name dsVNET \
--resource-group DsResourceGroup01 \
--location eastus \
--address-prefixes "10.0.0.0/16" "fd00:db8:deca::/48"
# Create a single dual stack subnet
az network vnet subnet create \
--name dsSubNET \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--address-prefixes "10.0.0.0/24" "fd00:db8:deca:deed::/64" \
--network-security-group dsNSG1
Настройка сетевых адаптеров
Создайте виртуальные сетевые адаптеры для каждой виртуальной машины с помощью az network nic create. В следующем примере создается виртуальный сетевой адаптер для каждой виртуальной машины. У каждой сетевой карты есть две IP-конфигурации (1 конфигурация IPv4, 1 конфигурация IPv6). Вы создаете конфигурацию IPV6 с помощью az network nic ip-config create.
# Create NICs
az network nic create \
--name dsNIC0 \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4 \
--lb-name dsLB \
--public-ip-address dsVM0_remote_access
az network nic create \
--name dsNIC1 \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4 \
--lb-name dsLB \
--public-ip-address dsVM1_remote_access
# Create IPV6 configurations for each NIC
az network nic ip-config create \
--name dsIp6Config_NIC0 \
--nic-name dsNIC0 \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB
az network nic ip-config create \
--name dsIp6Config_NIC1 \
--nic-name dsNIC1 \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB
Создание виртуальных машин
Создайте виртуальные машины с помощью az vm create. В следующем примере создаются две виртуальные машины и необходимые компоненты виртуальной сети, если они еще не существуют.
Создайте виртуальную машину dsVM0 следующим образом:
az vm create \
--name dsVM0 \
--resource-group DsResourceGroup01 \
--nics dsNIC0 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest
Создайте виртуальную машину dsVM1 следующим образом:
az vm create \
--name dsVM1 \
--resource-group DsResourceGroup01 \
--nics dsNIC1 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest
Виртуальная сеть IPv6 с двойным стеком на портале Azure
Вы можете просмотреть виртуальную сеть IPv6 с двумя стеками на портале Azure следующим образом:
- На портале в строке поиска введите dsVnet.
- Когда в результатах поиска появится пункт myVirtualNetwork, выберите его. Откроется страница Обзор для виртуальной сети с двумя стеками с именем dsVnet. Виртуальная сеть с двойным стеком показывает две сетевые карты, имеющие конфигурации IPv4 и IPv6, в двойной стековой подсети с именем dsSubnet.
Очистка ресурсов
Вы можете удалить ставшие ненужными группу ресурсов, виртуальную машину и все связанные с ней ресурсы, выполнив команду az group delete.
az group delete --name DsResourceGroup01
Используйте шаблон, описанный в этой статье, для развертывания приложения с двойным стеком (IPv4 + IPv6) с помощью Load Balancer (цен. категория "Стандартный") в Azure.
Обязательные конфигурации
Найдите разделы шаблона в шаблоне, чтобы узнать, где они должны происходить.
Пространство адресов IPv6 для виртуальной сети
Добавляемый раздел шаблона:
"addressSpace": {
"addressPrefixes": [
"[variables('vnetv4AddressRange')]",
"[variables('vnetv6AddressRange')]"
Подсеть IPv6 в пространстве адресов виртуальной сети IPv6
Добавляемый раздел шаблона:
{
"name": "V6Subnet",
"properties": {
"addressPrefix": "[variables('subnetv6AddressRange')]"
}
Конфигурация IPv6 для сетевого адаптера
Добавляемый раздел шаблона:
{
"name": "ipconfig-v6",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"privateIPAddressVersion":"IPv6",
"subnet": {
"id": "[variables('v6-subnet-id')]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[concat(resourceId('Microsoft.Network/loadBalancers','loadBalancer'),'/backendAddressPools/LBBAP-v6')]"
}
Правила группы безопасности сети IPv6 (NSG)
{
"name": "default-allow-rdp",
"properties": {
"description": "Allow RDP",
"protocol": "Tcp",
"sourcePortRange": "33819-33829",
"destinationPortRange": "5000-6000",
"sourceAddressPrefix": "fd00:db8:deca:deed::/64",
"destinationAddressPrefix": "fd00:db8:deca:deed::/64",
"access": "Allow",
"priority": 1003,
"direction": "Inbound"
}
Условная конфигурация
Если вы используете сетевое виртуальное устройство, добавьте маршруты IPv6 в таблицу маршрутов. В противном случае эта конфигурация является необязательной.
{
"type": "Microsoft.Network/routeTables",
"name": "v6route",
"apiVersion": "[variables('ApiVersion')]",
"location": "[resourceGroup().location]",
"properties": {
"routes": [
{
"name": "v6route",
"properties": {
"addressPrefix": "fd00:db8:deca:deed::/64",
"nextHopType": "VirtualAppliance",
"nextHopIpAddress": "fd00:db8:ace:f00d::1"
}
Дополнительные настройки
Доступ к Интернету IPv6 для виртуальной сети
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
Общедоступные IP-адреса IPv6
{
"apiVersion": "[variables('ApiVersion')]",
"type": "Microsoft.Network/publicIPAddresses",
"name": "lbpublicip-v6",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAllocationMethod": "Static",
"publicIPAddressVersion": "IPv6"
}
Интерфейс IPv6 для балансировщика нагрузки
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
Пул адресов серверной части IPv6 для балансировщика нагрузки
"backendAddressPool": {
"id": "[concat(resourceId('Microsoft.Network/loadBalancers', 'loadBalancer'), '/backendAddressPools/LBBAP-v6')]"
},
"protocol": "Tcp",
"frontendPort": 8080,
"backendPort": 8080
},
"name": "lbrule-v6"
Правила подсистемы балансировки нагрузки IPv6 для связывания входящих и исходящих портов
{
"name": "ipconfig-v6",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"privateIPAddressVersion":"IPv6",
"subnet": {
"id": "[variables('v6-subnet-id')]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[concat(resourceId('Microsoft.Network/loadBalancers','loadBalancer'),'/backendAddressPools/LBBAP-v6')]"
}
Пример шаблона виртуальной машины JSON
Чтобы развернуть приложение с двойным стеком IPv6 в виртуальной сети Azure с помощью шаблона Azure Resource Manager, просмотрите пример шаблона здесь.