В этой статье показано, как развернуть приложение с двойным стеком (IPv4 + IPv6) с помощью Standard Load Balancer в Azure. Сценарий включает в себя виртуальную сеть с двумя стеками и подсетью с двумя стеками, стандартную подсистему балансировки нагрузки с двумя конфигурациями интерфейсов (IPv4 + IPv6), виртуальные машины с сетевыми адаптерами, имеющими двойную конфигурацию IP, двойные правила группы безопасности сети и два общедоступных IP-адреса.
Следуйте этим инструкциям в Azure PowerShell, чтобы развернуть приложение с двойным стеком (IPv4 и IPv6) с помощью Standard 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-адресов для приема трафика, а также требуемый порт источника и назначения. Чтобы трафик поступал только на работоспособные виртуальные машины, можно дополнительно определить пробу работоспособности. Базовый балансировщик нагрузки использует зонд 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 `
-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, с помощью командлета 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) с помощью Standard 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) с помощью Standard 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 для Load Balancer
"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, просмотрите пример шаблона здесь.