开始使用用于 Resource Manager 的 PowerShell 创建具有 IPv6 的面向 Internet 的负载均衡器
注意
本文介绍了一项简介性的 IPv6 功能,该功能允许基本负载均衡器提供 IPv4 和 IPv6 连接。 适用于 Azure VNET 的 IPv6 现在提供综合性 IPv6 连接,可以将 IPv6 连接与虚拟网络集成,包含 IPv6 网络安全组规则、IPv6 用户定义路由、IPv6 基本和标准负载均衡等关键功能。 适用于 Azure VNET 的 IPv6 是建议用于 Azure 中的 IPv6 应用程序的标准。 请参阅适用于 Azure VNET PowerShell 部署的 IPv6
Azure load balancer 是位于第 4 层 (TCP, UDP) 的负载均衡器。 该负载均衡器可以在云服务或负载均衡器集的虚拟机中运行状况良好的服务实例之间分配传入流量,从而提供高可用性。 Azure Load Balancer 还可以在多个端口和/或多个 IP 地址上显示这些服务。
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
示例部署方案
下图演示了要在本文中部署的负载均衡解决方案。
在此方案中,将会创建以下 Azure 资源:
- 已分配 IPv4 和 IPv6 公共 IP 地址的面向 Internet 的负载均衡器
- 两个负载均衡规则,用于将公共 VIP 映射到专用终结点
- 包含两个 VM 的可用性集
- 两个虚拟机 (VM)
- 虚拟网络接口,用于每个已分配 IPv4 和 IPv6 地址的 VM
使用 Azure PowerShell 部署解决方案
以下步骤说明如何使用 Azure 资源管理器和 PowerShell 创建面向 Internet 的负载均衡器。 借助 Azure 资源管理器,可单独创建和配置每个资源,再将其合成一个新资源。
若要部署负载均衡器,需要创建并配置以下对象:
- 前端 IP 配置 - 包含传入网络流量的公共 IP 地址。
- 后端地址池 - 包含从负载均衡器接收网络流量的虚拟机的网络接口 (NIC)。
- 负载均衡规则 - 包含将负载均衡器上的公共端口映射到后端地址池中的端口的规则。
- 入站 NAT 规则 - 包含将负载均衡器上的公共端口映射到后端地址池中特定虚拟机的端口的规则。
- 探测器 - 包含用于检查后端地址池中虚拟机实例的可用性的运行状况探测器。
有关详细信息,请参阅 Azure 负载均衡器组件。
将 PowerShell 设置为使用 Resource Manager
确保具备 Azure 资源管理器模块的最新生产版本才可用于 PowerShell。
登录 Azure
Connect-AzAccount -Environment AzureChinaCloud
在系统提示时输入凭据。
检查帐户的订阅
Get-AzSubscription
选择要使用的 Azure 订阅。
Select-AzSubscription -SubscriptionId 'GUID of subscription'
创建资源组(如果要使用现有的资源组,请跳过此步骤)
New-AzResourceGroup -Name NRP-RG -location "China East 2"
为前端 IP 池创建虚拟网络和公共 IP 地址
创建一个包含子网的虚拟网络。
$backendSubnet = New-AzVirtualNetworkSubnetConfig -Name LB-Subnet-BE -AddressPrefix 10.0.2.0/24 $vnet = New-AzvirtualNetwork -Name VNet -ResourceGroupName NRP-RG -Location 'China East 2' -AddressPrefix 10.0.0.0/16 -Subnet $backendSubnet
为前端 IP 地址池创建 Azure 公共 IP 地址 (PIP) 资源。 请确保在运行以下命令之前更改
-DomainNameLabel
的值。 此值在 Azure 区域中必须具有唯一性。$publicIPv4 = New-AzPublicIpAddress -Name 'pub-ipv4' -ResourceGroupName NRP-RG -Location 'China East 2' -AllocationMethod Static -IpAddressVersion IPv4 -DomainNameLabel lbnrpipv4 $publicIPv6 = New-AzPublicIpAddress -Name 'pub-ipv6' -ResourceGroupName NRP-RG -Location 'China East 2' -AllocationMethod Dynamic -IpAddressVersion IPv6 -DomainNameLabel lbnrpipv6
重要
负载均衡器将公共 IP 的域标签用作 FQDN 的前缀。 在此示例中,FQDN 为“lbnrpipv4.chinaeast2.chinacloudapp.cn”和“lbnrpipv6.chinaeast2.chinacloudapp.cn”。
创建前端 IP 配置和后端地址池
创建使用所创建公共 IP 地址的前端地址配置。
$FEIPConfigv4 = New-AzLoadBalancerFrontendIpConfig -Name "LB-Frontendv4" -PublicIpAddress $publicIPv4 $FEIPConfigv6 = New-AzLoadBalancerFrontendIpConfig -Name "LB-Frontendv6" -PublicIpAddress $publicIPv6
创建后端地址池。
$backendpoolipv4 = New-AzLoadBalancerBackendAddressPoolConfig -Name "BackendPoolIPv4" $backendpoolipv6 = New-AzLoadBalancerBackendAddressPoolConfig -Name "BackendPoolIPv6"
创建 LB 规则、NAT 规则、探测器和负载均衡器
下例会创建以下项:
- 用于将端口 443 上的所有传入流量转换到端口 4443 的 NAT 规则
- 用于将端口 80 上的所有传入流量均衡到后端池中的地址端口 80 的负载均衡器规则。
- 一个负载均衡器规则,用来与端口 3389 上的 VM 建立 RDP 连接。
- 一个探测规则,用于检查名为 HealthProbe.aspx 的页面上或者端口 8080 上的服务的运行状况
- 使用上述所有对象的负载均衡器
创建 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
创建运行状况探测器。 有两种方法可以配置探测器:
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 探测。
创建负载均衡器规则。
$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
使用前面创建的对象创建负载均衡器。
$NRPLB = New-AzLoadBalancer -ResourceGroupName NRP-RG -Name 'myNrpIPv6LB' -Location 'China East 2' -FrontendIpConfiguration $FEIPConfigv4,$FEIPConfigv6 -InboundNatRule $inboundNATRule1v6,$inboundNATRule1v4 -BackendAddressPool $backendpoolipv4,$backendpoolipv6 -Probe $healthProbe,$RDPprobe -LoadBalancingRule $lbrule1v4,$lbrule1v6,$RDPrule
为后端 VM 创建 NIC
获取需要创建 NIC 的虚拟网络和虚拟网络子网。
$vnet = Get-AzVirtualNetwork -Name VNet -ResourceGroupName NRP-RG $backendSubnet = Get-AzVirtualNetworkSubnetConfig -Name LB-Subnet-BE -VirtualNetwork $vnet
为 VM 创建 IP 配置和 NIC。
$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 'China East 2' $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 'China East 2'
创建虚拟机并分配新建的 NIC
有关创建 VM 的详细信息,请参阅使用 Resource Manager 和 Azure PowerShell 创建并预先配置 Windows 虚拟机
创建可用性集和存储帐户
New-AzAvailabilitySet -Name 'myNrpIPv6AvSet' -ResourceGroupName NRP-RG -location 'China East 2' $availabilitySet = Get-AzAvailabilitySet -Name 'myNrpIPv6AvSet' -ResourceGroupName NRP-RG New-AzStorageAccount -ResourceGroupName NRP-RG -Name 'mynrpipv6stacct' -Location 'China East 2' -SkuName "Standard_LRS" $CreatedStorageAccount = Get-AzStorageAccount -ResourceGroupName NRP-RG -Name 'mynrpipv6stacct'
创建每个 VM 并分配前面创建的 NIC
$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 'China East 2' -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 'China East 2' -VM $vm2