本文將介紹中國區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