開始使用 PowerShell 在 Resource Manager 中建立配置有 IPv6 的網際網路面向負載平衡器
注意
本文說明可讓基本負載平衡器提供 IPv4 和 IPv6 連線的入門 IPv6 功能。 適用於 Azure VNET 的 Ipv6 現已提供完整的 IPv6 連線,可整合 IPv6 連線與您的虛擬網路,並包含 Ipv6 網路安全性群組規則、IPv6 使用者定義路由、IPv6 基本和標準負載平衡等主要功能。 適用於 Azure VNET 的 IPv6 是 Azure 中 IPv6 應用程式的建議標準。 請參閱適用於 Azure VNET PowerShell 部署的 IPv6
Azure 負載平衡器是第 4 層 (TCP、UDP) 負載平衡器。 此負載平衡器可藉由在負載平衡器集合中,將連入流量分散於雲端服務或虛擬機器中狀況良好的服務執行個體之間,來提供高可用性。 Azure Load Balancer 也會在多個連接埠、多個 IP 位址或兩者上顯示這些服務。
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
範例部署案例
下圖說明本文中部署的負載平衡解決方案。
在此案例中,您將建立下列 Azure 資源:
- 配置有 IPv4 和 IPv6 公用 IP 位址的網際網路面向負載平衡器
- 兩個負載平衡規則,用以對應公用 VIP 至私人端點
- 包含兩個 VM 的可用性設定組
- 兩部虛擬機器 (VM)
- 虛擬網路介面,用於每個已指派 IPv4 和 IPv6 位址的 VM
使用 Azure PowerShell 部署解決方案
下列步驟說明如何搭配 PowerShell 使用 Azure Resource Manager,來建立網際網路對向負載平衡器。 使用 Azure Resource Manager 時,會個別建立並設定每項資源,然後放在一起來建立一項資源。
若要部署負載平衡器,請建立並設定下列物件:
- 前端 IP 組態 - 包含傳入網路流量的公用 IP 位址。
- 後端位址集區 - 包含虛擬機器的網路介面 (NIC),可從負載平衡器接收網路流量。
- 負載平衡規則 - 包含將負載平衡器上的公用連接埠對應至後端位址集區中連接埠的規則。
- 輸入 NAT 規則 - 包含將負載平衡器上的公用連接埠對應至後端位址集區中特定虛擬機器之連接埠的規則。
- 探查 - 包含用來檢查後端位址集區中虛擬機器執行個體可用性的健全狀態探查。
如需詳細資訊,請參閱 Azure Load Balancer 元件。
設定 PowerShell 以使用 Resource Manager
請確定您擁有適用於 PowerShell 的 Azure Resource Manager 模組最新生產版本。
登入 Azure
Connect-AzAccount
出現提示時,請輸入您的認證。
檢查帳戶的訂用帳戶
Get-AzSubscription
選擇其中一個要使用的 Azure 訂用帳戶。
Select-AzSubscription -SubscriptionId 'GUID of subscription'
建立資源群組 (如果是使用現有的資源群組,請略過此步驟)
New-AzResourceGroup -Name NRP-RG -location "West US"
建立前端 IP 集區的虛擬網路和公用 IP 位址
建立具有子網路的虛擬網路。
$backendSubnet = New-AzVirtualNetworkSubnetConfig -Name LB-Subnet-BE -AddressPrefix 10.0.2.0/24 $vnet = New-AzvirtualNetwork -Name VNet -ResourceGroupName NRP-RG -Location 'West US' -AddressPrefix 10.0.0.0/16 -Subnet $backendSubnet
建立前端 IP 位址集區的 Azure 公用 IP 位址 (PIP) 資源。 在執行下列命令之前,請務必變更
-DomainNameLabel
的值。 此值在 Azure 區域中必須是唯一的。$publicIPv4 = New-AzPublicIpAddress -Name 'pub-ipv4' -ResourceGroupName NRP-RG -Location 'West US' -AllocationMethod Static -IpAddressVersion IPv4 -DomainNameLabel lbnrpipv4 $publicIPv6 = New-AzPublicIpAddress -Name 'pub-ipv6' -ResourceGroupName NRP-RG -Location 'West US' -AllocationMethod Dynamic -IpAddressVersion IPv6 -DomainNameLabel lbnrpipv6
重要
負載平衡器會使用公用 IP 的網域標籤做為其 FQDN 的前置詞。 在此範例中,FQDN 是 lbnrpipv4.westus.cloudapp.azure.com 和lbnrpipv6.westus.cloudapp.azure.com。
建立前端 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 規則、探查及負載平衡器
此範例會建立下列項目:
- NAT 規則,用以將連接埠 443 上的所有傳入流量轉譯至連接埠 4443
- 負載平衡器規則,將連接埠 80 上的所有傳入流量,負載平衡至後端集區中位址的連接埠 80。
- 允許 RDP 連線到 VM 連接埠 3389 的負載平衡器規則。
- 探查規則,用以檢查名為 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 'West US' -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 'West US' $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 'West US'
建立虛擬機器並指派新建立的 NIC
如需有關建立 VM 的詳細資訊,請參閱 使用 Resource Manager 和 Azure PowerShell 建立及預先設定 Windows 虛擬機器
建立可用性設定組和儲存體帳戶
New-AzAvailabilitySet -Name 'myNrpIPv6AvSet' -ResourceGroupName NRP-RG -location 'West US' $availabilitySet = Get-AzAvailabilitySet -Name 'myNrpIPv6AvSet' -ResourceGroupName NRP-RG New-AzStorageAccount -ResourceGroupName NRP-RG -Name 'mynrpipv6stacct' -Location 'West US' -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 'West US' -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 'West US' -VM $vm2