本文介绍如何在 Azure 中使用标准负载均衡器部署双堆栈(IPv4 + IPv6)应用程序。 此方案包括具有双堆栈子网的双堆栈虚拟网络、具有双 (IPv4 + IPv6) 前端配置的标准负载均衡器、具有配置了双 IP 的 NIC 的 VM、双重网络安全组规则和双重公共 IP。
按照 Azure PowerShell 中的这些说明在 Azure 中使用标准负载均衡器部署双堆栈 (IPv4 + IPv6) 应用程序。
创建资源组
在创建双堆栈虚拟网络之前,必须先使用 New-AzResourceGroup 创建一个资源组。 以下示例在“美国东部”位置创建名为 myRGDualStack 的资源组:
$rg = New-AzResourceGroup `
-ResourceGroupName "dsRG1" `
-Location "east us"
创建 IPv4 和 IPv6 公共 IP 地址
若要从 Internet 访问虚拟机,需要为负载均衡器创建 IPv4 和 IPv6 公共 IP 地址。 使用 New-AzPublicIpAddress 创建公共 IP 地址。 以下示例在 dsRG1 资源组中创建名为 dsPublicIP_v4 与 dsPublicIP_v6 的 IPv4 和 IPv6 公共 IP 地址:
$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 连接访问虚拟机,请使用 New-AzPublicIpAddress 为虚拟机创建 IPv4 公共 IP 地址。
$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
使用 New-AzLoadBalancerFrontendIpConfig 创建一个前端 IP 池。 以下示例创建名为 dsLbFrontEnd_v4 与 dsLbFrontEnd_v6 的 IPv4 和 IPv6 前端 IP 配置:
$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 NIC 配置的虚拟机:
$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v4"
$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v6"
创建健康探测器
使用 Add-AzLoadBalancerProbeConfig 可创建运行状况探测以监视 VM 的运行状况。
$probe = New-AzLoadBalancerProbeConfig -Name MyProbe -Protocol tcp -Port 3389 -IntervalInSeconds 15 -ProbeCount 2
创建负载均衡器规则
负载均衡器规则用于定义将流量分配给 VM 的方式。 定义传入流量的前端 IP 配置和后端 IP 池以接收流量,同时定义所需的源端口和目标端口。 若要确保仅正常运行的 VM 接收流量,可以选择性地定义一个运行状况探测。 基本负载均衡器使用 IPv4 探测来评估 VM 上 IPv4 和 IPv6 终结点的运行状况。 标准负载均衡器支持显式 IPv6 运行状况探测。
使用 Add-AzLoadBalancerRuleConfig 创建一个负载均衡器规则。 以下示例创建名为 dsLBrule_v4 和 dsLBrule_v6 的负载均衡器规则,并通过 IPv4 和 IPv6 前端 IP 配置均衡 TCP 端口 80 上的流量:
$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 创建标准负载均衡器。 以下示例使用前面步骤中创建的 IPv4 和 IPv6 前端 IP 配置、后端池和负载均衡规则创建名为 myLoadBalancer 的公共标准负载均衡器:
$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
创建网络资源
在部署某些 VM 和测试均衡器之前,必须创建支持性的网络资源 - 可用性集、网络安全组、虚拟网络和虚拟 NIC。
创建可用性集
若要提高应用的高可用性,请将 VM 放置在可用性集中。
使用 New-AzAvailabilitySet 创建一个可用性集。 以下示例创建名为 myAvailabilitySet 的可用性集:
$avset = New-AzAvailabilitySet `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsAVset" `
-PlatformFaultDomainCount 2 `
-PlatformUpdateDomainCount 2 `
-Sku aligned
创建网络安全组
创建一个网络安全组,以通过其中的规则控制虚拟网络中的入站和出站通信。
为端口 3389 创建网络安全组规则
使用 New-AzNetworkSecurityRuleConfig 创建网络安全组规则,以便通过端口 3389 创建 RDP 连接。
$rule1 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleRDP' `
-Description 'Allow RDP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 100 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389
为端口 80 创建网络安全组规则
使用 New-AzNetworkSecurityRuleConfig 创建网络安全组规则以允许通过端口 80 进行 Internet 连接。
$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 创建虚拟网络。 以下示例创建包含 mySubnet 的名为 dsVnet 的虚拟网络:
# 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
创建 NIC
使用 New-AzNetworkInterface 创建虚拟 NIC。 以下示例创建采用 IPv4 和 IPv6 配置的两个虚拟 NIC。 (在以下步骤中针对为应用创建的每个 VM 各使用一个虚拟 NIC)。
$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
创建虚拟机
使用 New-AzureRmNetworkInterface 设置 VM 的管理员用户名和密码:
$cred = get-credential -Message "DUAL STACK VNET SAMPLE: Please enter the Administrator credential to log into the VMs."
现在,可使用 New-AzVM 创建 VM。 以下示例创建两台 VM 和所需的虚拟网络组件(如果它们尚不存在)。
$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
确定 IPv4 和 IPv6 终结点的 IP 地址
使用 get-AzNetworkInterface
获取资源组中的所有网络接口对象,以汇总此部署中使用的 IP。 另外,请使用 get-AzpublicIpAddress
获取 IPv4 和 IPv6 终结点的负载均衡器前端地址。
$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
下图显示了示例输出,其中列出了两个 VM 的专用 IPv4 和 IPv6 地址,以及负载均衡器的前端 IPv4 和 IPv6 IP 地址。

在 Azure 门户中查看 IPv6 双堆栈虚拟网络
可以在 Azure 门户中查看 IPv6 双堆栈虚拟网络,如下所示:
- 在门户的搜索栏中输入 dsVnet。
- 当“dsVnet”出现在搜索结果中时,将其选中。 此时会启动名为 dsVnet 的双堆栈虚拟网络的“概述”页。 该双堆栈虚拟网络显示了位于 dsSubnet 双堆栈子网中的两个 NIC,这些 NIC 采用 IPv4 和 IPv6 配置。
清理资源
如果不再需要资源组、VM 和所有相关的资源,可以使用 Remove-AzResourceGroup 命令将其删除。
Remove-AzResourceGroup -Name dsRG1
按照 Azure CLI 中的这些说明在 Azure 中使用标准负载均衡器部署双堆栈 (IPv4 + IPv6) 应用程序。
创建资源组
在创建双堆栈虚拟网络之前,必须先使用 az group create 创建一个资源组。 以下示例在 eastus 位置创建名为 DsResourceGroup01 的资源组:
az group create \
--name DsResourceGroup01 \
--___location eastus
为负载均衡器创建 IPv4 和 IPv6 公共 IP 地址
若要在 Internet 上访问 IPv4 和 IPv6 终结点,需要为负载均衡器创建 IPv4 和 IPv6 公共 IP 地址。 使用 az network public-ip create 创建公共 IP 地址。 以下示例在 DsResourceGroup01 资源组中创建名为 dsPublicIP_v4 与 dsPublicIP_v6 的 IPv4 和 IPv6 公共 IP 地址:
# 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
为 VM 创建公共 IP 地址
若要在 Internet 上远程访问 VM,需要为 VM 创建 IPv4 公共 IP 地址。 使用 az network public-ip create 创建公共 IP 地址。
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 公共 IP 地址 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 前端
使用 az network lb frontend-ip create 创建 IPv6 前端 IP。 以下示例创建名为 dsLbFrontEnd_v6 的前端 IP 配置,并附加 dsPublicIP_v6 地址:
az network lb frontend-ip create \
--lb-name dsLB \
--name dsLbFrontEnd_v6 \
--resource-group DsResourceGroup01 \
--public-ip-address dsPublicIP_v6
使用 az network lb address-pool create 创建 IPv6 后端地址池。 以下示例会创建名为 dsLbBackEndPool_v6 的后端地址池,以包含采用 IPv6 NIC 配置的 VM:
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
创建负载均衡器规则
负载均衡器规则用于定义将流量分配给 VM 的方式。 定义传入流量的前端 IP 配置和后端 IP 池以接收流量,同时定义所需的源端口和目标端口。
使用 az network lb rule create 创建负载均衡器规则。 以下示例创建名为 dsLBrule_v4 和 dsLBrule_v6 的负载均衡器规则,并通过 IPv4 和 IPv6 前端 IP 配置均衡 TCP 端口 80 上的流量:
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
创建网络资源
在部署某些 VM 之前,必须创建支持性的网络资源 - 可用性集、网络安全组、虚拟网络和虚拟 NIC。
创建可用性集
若要提高应用的可用性,请将 VM 放到可用性集中。
使用 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
针对入站和出站连接创建网络安全组规则
使用 az network nsg rule create 创建网络安全组规则,以允许通过端口 3389 进行 RDP 连接、通过端口 80 进行 Internet 连接,并允许出站连接。
# 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
创建 NIC
使用 az network nic create 为每个 VM 创建虚拟 NIC。 以下示例为每个 VM 创建一个虚拟 NIC。 每个 NIC 采用两个 IP 配置(1 个 IPv4 配置,1 个 IPv6 配置)。 使用 az network nic ip-config create 创建 IPv6 配置。
# 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 创建 VM。 以下示例创建两台 VM 和所需的虚拟网络组件(如果它们尚不存在)。
按如下所示创建虚拟机 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
在 Azure 门户中查看 IPv6 双堆栈虚拟网络
可以在 Azure 门户中查看 IPv6 双堆栈虚拟网络,如下所示:
- 在门户的搜索栏中输入 dsVnet。
- 当“myVirtualNetwork”出现在搜索结果中时,将其选中。 此时会启动名为 dsVnet 的双堆栈虚拟网络的“概述”页。 该双堆栈虚拟网络显示了位于 dsSubnet 双堆栈子网中的两个 NIC,这些 NIC 采用 IPv4 和 IPv6 配置。
清理资源
如果不再需要资源组、VM 和所有相关的资源,可以使用 az group delete 命令将其删除。
az group delete --name DsResourceGroup01
使用本文中所述的模板,在 Azure 中使用标准负载均衡器部署双堆栈 (IPv4 + IPv6) 应用程序。
所需的配置
在模板中搜索模板节,以了解它们应该出现的位置。
虚拟网络的 IPv6 地址空间
要添加的模板节:
"addressSpace": {
"addressPrefixes": [
"[variables('vnetv4AddressRange')]",
"[variables('vnetv6AddressRange')]"
IPv6 虚拟网络地址空间中的 IPv6 子网
要添加的模板节:
{
"name": "V6Subnet",
"properties": {
"addressPrefix": "[variables('subnetv6AddressRange')]"
}
NIC 的 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 Internet 访问
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
IPv6 公共 IP 地址
{
"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')]"
}
示例 VM 模板 JSON
若要使用 Azure 资源管理器模板在 Azure 虚拟网络中部署 IPv6 双堆栈应用程序,请查看此处的示例模板。