標籤:
《Windows Azure Platform 系列文章目錄》
注意:如果Azure面對的客戶只是企業級客戶,企業級客戶使用NAT裝置訪問Internet的話,因為多個用戶端使用相同的Source IP地址,會造成單台伺服器壓力過大的情況。
這個功能已經出來一段時間了,筆者在這裡做一下小記。
熟悉Azure平台的讀者都知道,Azure Load Balancer(負載平衡器)的規則,是由五要素組成source IP, source port, destination IP, destination port, protocol type。
參考資料:http://azure.microsoft.com/blog/2014/04/08/microsoft-azure-load-balancing-services/
這樣Azure Load Balancer可以保證絕對的負載平衡,如:
但是這樣的負載平衡器會有缺陷,當企業使用者的應用程式需要保留會話(Session)的時候,不得不要修改應用程式代碼,將Session儲存到SQL Server或者In-Role Cache中去。
最新的Azure Load Balancer可以將規則進行修改,改為2要素(Source IP,Destination IP)或3要素(Source IP, Destination IP, Protocol)。這樣由同一個用戶端發起的請求,會指向同一個Azure目標伺服器。通過這種方式,就可以保留Session。如所示:
準備工作:請讀者參考[New Portal]Windows Azure Virtual Machine (9) Virtual Machine高可用與自動負載平衡(下),在Azure建立如下內容:
- 建立2台Windows Server 2012 VM,命名為LeiZhangVMOne和LeiZhangVMTwo
- 建立DNS Name為LeiZhangVM
- 負載平衡設定Public Port為80連接埠,Private Port為80連接埠,負載平衡器為LB_80
1.查看80連接埠的預設Endpoint規則
我們執行以下代碼:
Get-AzureVM –ServiceName ‘LeiZhangVM‘ –Name ‘LeiZhangVMOne‘ | Get-AzureEndpoint
可以查看到
中,我們看到LoadBalancerDistribution屬性為空白。使用預設的規則,為五要素:source IP, source port, destination IP, destination port, protocol type
2.重新設定Azure Load Balancer規則為sourceIP
然後我們執行以下的代碼:
Set-AzureLoadBalancedEndpoint -ServiceName ‘LeiZhangVM‘ -LBSetName ‘LB_80‘ -Protocol tcp -LocalPort 80 -ProbeProtocolTCP -ProbePort 80 –LoadBalancerDistribution ‘sourceIP‘
查看執行結果,如:
3.查看更新後的Load Balancer規則
我們重新執行以下PS代碼:
Get-AzureVM –ServiceName ‘LeiZhangVM‘ –Name ‘LeiZhangVMOne‘ | Get-AzureEndpoint
查看與圖1中的區別,如紅色部分
可以看到,相比圖1,中LoadBalancerDistribution屬性為sourceIP,這樣就完成配置Load Balancer的2要素(Source IP,Destination IP)
參考資料:http://azure.microsoft.com/blog/2014/10/30/azure-load-balancer-new-distribution-mode/
Azure PowerShell (8) 使用PowerShell設定Azure負載平衡器規則