是否可以在同一個 Azure 雲服務中同時使用 ILB 和 ELB(偵聽同一埠)?
我正在 Azure 上建構測試 Lync 部署;是的,我知道這不受支持,因此是“測試”。
Lync 前端伺服器公開了兩組 Web 服務,一組用於內部使用者,一組用於外部使用者;他們偵聽同一伺服器上的不同埠(443 和 4443);發布外部服務時,您需要反向代理或埠轉發,以便將公共 IP 地址的埠 443 映射到前端伺服器的埠 4443。當池中有多個前端伺服器時,您還需要對它們進行負載平衡。
因此,典型的 Lync 部署如下所示:
Internal users | 443 | Internal LB 192.168.0.20 / \ / \ 443 443 | | Lync FE 1 Lync FE 2 192.168.0.21 192.168.0.22 | | 4443 4443 \ / \ / External LB Public IP Address | 443 | External Users
這應該很容易在 Azure 中複製,因為它支持外部負載平衡(配置方法)和內部負載平衡(配置方法)。它們甚至在同一個雲服務中同時受到支持,因此這種配置應該很容易。但是,看起來“應該”是這裡的關鍵字。
創建外部負載平衡端點(偵聽外部埠 443 並轉發到伺服器上的埠 4443)後,我正在嘗試創建內部負載平衡器並將內部端點添加到 is; 但是,雖然 ILB 可以成功創建,但添加一個內部端點偵聽埠 443 並轉發到伺服器上的埠 443 卻慘遭失敗,並顯示埠 443 已被另一個端點使用的錯誤:
Update-AzureVM : BadRequest : Port 443 is already in use by one of the endpoints in this deployment. Ensure that the port numbers are unique across endpoints within a deployment.
作為參考,我的命令是:
Add-AzureInternalLoadBalancer -InternalLoadBalancerName "LyncILB" -ServiceName "LyncFrontEnd" -SubnetName "LabSubnet" -StaticVNetIPAddress 192.168.0.20
(這成功完成)
Get-AzureVM LYNCFE1 | Add-AzureEndpoint -Name "Https-Int" -Protocol "tcp" -LocalPort 443 -PublicPort 443 -LBSetName "HttpsIntLB" -DefaultProbe -InternalLoadBalancerName "LyncILB"
(這失敗了)
現有的外部端點配置如下:
Get-AzureVM LYNCFE1 | get-azureendpoint LBSetName : HttpsExtLB LocalPort : 4443 Name : HTTPS-Ext Port : 443 Protocol : tcp Vip : ProbePath : ProbePort : 4443 ProbeProtocol : tcp ProbeIntervalInSeconds : 15 ProbeTimeoutInSeconds : 31 EnableDirectServerReturn : False Acl : {} InternalLoadBalancerName : IdleTimeoutInMinutes : LoadBalancerDistribution :
這個錯誤甚至沒有多大意義。外部負載均衡器偵聽公共 IP 地址,而內部負載均衡器偵聽內部網路中的私有 IP 地址;這裡不應該有任何衝突……但是看起來有一個。
為什麼這不起作用?是我做錯了什麼,還是 Azure 網路又像往常一樣愚蠢?
這個問題現在沒有實際意義,因為 Azure 現在允許(並且已經允許一段時間)使用內部和公共負載均衡器從相同的 VM 公開相同的服務。
為什麼需要使用兩個完全不同的對象來完成完全相同的工作,只是前端 IP 地址不同,這仍然是一個謎。但至少,你現在可以。
剛剛在不同的部署中遇到了同樣的問題。問題是您不能使用相同的後端 IP 池在相同的埠和協議上配置多個 LB 規則。
要實現您想要的,您需要向機器添加額外的 NIC,並將不同的 IP 用於內部與外部平衡規則。或者,您可以為機器提供公共 IP 並在外部對它們進行負載平衡(但是,您將機器暴露在網際網路上,通常是不可取的)。
希望有幫助!