本文将介绍中国区Windows Azure Cloud Service可以启用多个虚拟IP的功能。
【Part.1】应用场景:
(1)同一个云服务下有多个SSL Website VM,为了能给每个VM分配443端口,需要配置多VIP。
(2)SQL AlwaysOn:Another scenario for the use themultiple VIPs is hosting multiple SQL AlwaysOn availability group listeners onthe same set of Virtual Machines.
【Part.2】配置方法:仅能通过Azure Powershell配置,参考脚本如下:
#为云服务增加VIP
$Servicename="winhe" #定义云服务名字
$VIPname="Vip-01" #定义新增的VIP的名字
Add-AzureVirtualIP -VirtualIPName $VIPname -ServiceName$Servicename #执行增加命令
#获取一下增加后的VIP状态,发现只有名字Vip-01,并无VIP生成
$deployment= Get-AzureDeployment -ServiceName winhe
$deployment.VirtualIPs
#对Vip-01添加端口映射:虚拟机win2012mem,内网80--外网80
$Servicename="winhe" #定义云服务名字
$VMname="win2012mem" #定义虚拟机名字
$VM=Get-AzureVM -ServiceName $Servicename -Name $VMname #定义VM变量
$endpointname="vip-01-http" #终结点名字
$Protocol="tcp" #协议类型
$Localport="80" #私有端口
$Publicport="80" #公共端口
$VIPname="Vip-01" #VIP的名字
Add-AzureEndpoint-VM $VM -Name $endpointname -Protocol $Protocol -LocalPort $Localport-PublicPort $Publicport -VirtualIPName $VIPname | Update-AzureVM
#再次使用以下命令获取以便VIP状态,可见获取了Vip-01的VIP地址
$deployment= Get-AzureDeployment -ServiceName winhe
$deployment.VirtualIPs
由于映射已经做好,那么通过139.217.22.239:80就可以访问虚拟机win2012mem的网站了。
winhe.chinacloudapp.cn对应 139.217.19.59 对应虚拟机win-2012的网站
这样就实现了一个云服务winhe有一个原装VIP(139.217.19.59),又配置了一个多VIP(139.217.22.239)都可以实现映射到后端的VM。
【补充命令】:
#获取指定虚拟机的所有端点
$Servicename="winhe" #定义云服务名字
$VMname="win2012mem" #定义虚拟机名字
$VM=Get-AzureVM -ServiceName $Servicename -Name $VMname #定义VM变量
Get-AzureEndpoint-VM $VM
#删除某一个VIP对应的端点
$Servicename="winhe" #定义云服务名字
$VMname="win2012mem" #定义虚拟机名字
$VM=Get-AzureVM -ServiceName $Servicename -Name $VMname #定义VM变量
$endpointname="vip-01-http" #即将删除的端点名字,一个云服务下端点名字是唯一的
Remove-AzureEndpoint-VM $VM -Name $endpointname | Update-AzureVM
#删除多VIP
$Servicename="winhe" #定义云服务名字
$VIP="Vip-01" #即将删除的VIP的名字
Remove-AzureVirtualIP-VirtualIPName $VIP -ServiceName $Servicename
【Part.3】Azure Powershell 配置负载平衡
当你配置完多VIP功能后,就无法在管理门户上操作以配置Endpoint了:
那么如何使用AzurePowershell配置基于端点的负载平衡呢?
基于Part.2的实验,我的VM:win-2012和win2012mem在云服务winhe下,
默认的VIP是 win-2012ContractContract:139.217.19.59
新增的VIP是Vip-01:139.217.22.239
由于要使用两台VM的80端口,所以需要删除Vip-01原先设定好的80端口映射,一旦这个唯一的映射移除,139.217.22.239就被释放了,所再次验证负载平衡是需要重新查看IP。我们会在Part.4介绍如何固定这些VIP。
对Vip-01配置基于80端口的负载平衡,后端服务器分别是win-2012和win2012mem,参考脚本如下:
Get-AzureVM-ServiceName winhe -Name win-2012 `
|Add-AzureEndpoint -Name myEndpoint -LoadBalancedEndpointSetName myLBSet `
-Protocol tcp -LocalPort 80 -PublicPort 80-VirtualIPName Vip-01 -DefaultProbe `
|Update-AzureVM
Get-AzureVM-ServiceName winhe -Name win2012mem `
|Add-AzureEndpoint -Name myEndpoint -LoadBalancedEndpointSetName myLBSet `
-Protocol tcp -LocalPort 80 -PublicPort 80-VirtualIPName Vip-01 -DefaultProbe `
|Update-AzureVM
#获取一下增加后的VIP状态,发现只有名字Vip-01变成了139.217.26.194
$deployment= Get-AzureDeployment -ServiceName winhe
$deployment.VirtualIPs
Vip-01(139.217.26.194)的80端口实现了负载平衡,效果如下:
【Part.4】固定VIP
#固定Vip-01
New-AzureReservedIP-ReservedIPName winherip-vip01 -Location "China North" -ServiceNamewinhe -VirtualIPName Vip-01
#固定默认VIP
New-AzureReservedIP-ReservedIPName winherip-win-2012Contract -Location "China North"-ServiceName winhe -VirtualIPName win-2012ContractContract
#也可以使用Get-AzureReservedIP验证是否固定成功
Get-AzureReservedIP| Where-Object Servicename -eq winhe