Azure Load Balancer : 动态扩展

笔者在前文《AzureLoadBalancer:支持IPv6》中介绍了如何通过PowerShell脚本创建支持IPv6的LoadBalancer。本文我们接着介绍如何在前文创建的LoadBalancer中添加新的后端虚机。可扩展的LoadBalancer对于负载均衡来说,最重要的能力就是支持通过在后端添加更多的资源来提高系统的处理能力。可正如笔者在前文所述,我们无法通过Azure门户的UI创建支持...

Azure Load Balancer : 动态扩展

笔者在前文《Azure Load Balancer : 支持 IPv6》中介绍了如何通过 PowerShell 脚本创建支持 IPv6 的 Load Balancer。本文我们接着介绍如何在前文创建的 Load Balancer 中添加新的后端虚机。

可扩展的 Load Balancer

对于负载均衡来说,最重要的能力就是支持通过在后端添加更多的资源来提高系统的处理能力。可正如笔者在前文所述,我们无法通过 Azure 门户的 UI 创建支持 IPv6 的 Load Balancer,当然也无法通过 UI 来为已经支持 IPv6 的 Load Balancer 扩展后端池中的虚机。要想扩展支持 IPv6 的 Load Balancer 的后端池中的虚机,还是得通过脚本!我们仍然使用 PowerShell 脚本完成 Load Balancer 的扩展。

扩展支持 IPv6 的 Load Balancer

下面是扩展 Load Balancer 的主要逻辑。

定义脚本中所需的变量
为了能更好的重用该脚本,笔者把所需的变量都定义到了脚本的开头处,虽然变量的数目很多,但是只要修改 vmIndex 、prodNamePrefix、userName、sshPublicKey 和 location 等几个关键变量的值脚本就可以工作了:

# 新添加的虚机索引$vmIndex = "3"# 资源名称的前缀$prodNamePrefix = "Nick"$lowerProdNamePrefix = $prodNamePrefix.ToLower()# vm user name$userName = "nick"# vm user public key$sshPublicKey = "your public key"# resource loacation$location = "japaneast"# resource group name$rgName = $prodNamePrefix"LBGroup"...

获取虚拟网络及其虚拟子网的实例

# 获取虚拟网络的实例$vnet = Get-AzureRmVirtualNetwork -Name $vnetName ` -ResourceGroupName $rgName# 获取虚拟子网的实例$backendSubnet = Get-AzureRmVirtualNetworkSubnetConfig `  -Name $subnetName `  -VirtualNetwork $vnet

获取 Load Balancer 及其子属性的实例

$loadbalancer = Get-AzureRmLoadBalancer -Name $lbName ` -ResourceGroupName $rgName# 获取 Load Balancer 的 Backend pools 实例$backendpoolipv4 = Get-AzureRmLoadBalancerBackendAddressPoolConfig ` -Name $backendAddressPoolV4Name ` -LoadBalancer $loadbalancer$backendpoolipv6 = Get-AzureRmLoadBalancerBackendAddressPoolConfig ` -Name $backendAddressPoolV6Name ` -LoadBalancer $loadbalancer# 获取 Load Balancer 的 Frontend IP 实例$FEIPConfigv4 = Get-AzureRmLoadBalancerFrontendIpConfig ` -Name $frontendV4Name ` -LoadBalancer $loadbalancer$FEIPConfigv6 = Get-AzureRmLoadBalancerFrontendIpConfig ` -Name $frontendV6Name ` -LoadBalancer $loadbalancer# 在 Load Balancer 实例中添加新的 Inbound NAT rule$loadbalancer | Add-AzureRmLoadBalancerInboundNatRuleConfig ` -Name $natRulexV4Name ` -FrontendIPConfiguration $FEIPConfigv4 ` -Protocol TCP ` -FrontendPort $frontendPort ` -BackendPort 22

在云端更新 Load Balancer 实例

# 在云端更新 Load Balancer 实例$loadbalancer | Set-AzureRmLoadBalancer# 获得更新后的 Load Balancer 实例$loadbalancer = Get-AzureRmLoadBalancer ` -Name $lbName ` -ResourceGroupName $rgName$inboundNATRulev4 = Get-AzureRmLoadBalancerInboundNatRuleConfig `  -Name $natRulexV4Name `  -LoadBalancer $loadbalancer

创建虚拟网卡

$nicIPv4 = New-AzureRmNetworkInterfaceIpConfig `  -Name "IPv4IPConfig" `  -PrivateIpAddressVersion "IPv4" `  -Subnet $backendSubnet `  -LoadBalancerBackendAddressPool $backendpoolipv4 `  -LoadBalancerInboundNatRule $inboundNATRulev4$nicIPv6 = New-AzureRmNetworkInterfaceIpConfig `  -Name "IPv6IPConfig" `  -PrivateIpAddressVersion "IPv6" `  -LoadBalancerBackendAddressPool $backendpoolipv6$nic = New-AzureRmNetworkInterface ` -Name $nicxName ` -IpConfiguration $nicIPv4,$nicIPv6 ` -ResourceGroupName $rgName ` -Location $location

创建虚拟机并分配新建的 NIC

# 获取 Availability Set$availabilitySet = Get-AzureRmAvailabilitySet ` -Name $availabilitySetName ` -ResourceGroupName $rgName# 创建用户 Credential$securePassword = ConvertTo-SecureString $userPassword `  -AsPlainText -Force$userCred = New-Object System.Management.Automation.PSCredential `($userName, $securePassword)# 创建虚机$vm = New-AzureRmVMConfig -VMName $vmxName `  -VMSize $vmSize `  -AvailabilitySetId $availabilitySet.Id$vm = Set-AzureRmVMOperatingSystem `-VM $vm `-Linux `-ComputerName $vmxComputerHostName `-Credential $userCred `-DisablePasswordAuthentication$vm = Set-AzureRmVMSourceImage `-VM $vm `-PublisherName Canonical `-Offer UbuntuServer `-Skus $vmVersion `-Version "latest"$vm = Set-AzureRmVMBootDiagnostics `-VM $vm `-Disable$vm = Add-AzureRmVMNetworkInterface `-VM $vm `-Id $nic.Id -Primary$vm = Set-AzureRmVMOSDisk `-VM $vm `  
源文地址:https://www.guoxiongfei.cn/cntech/9894.html