Load-Balancing

是否可以在同一個 Azure 雲服務中同時使用 ILB 和 ELB(偵聽同一埠)?

  • September 5, 2019

我正在 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 並在外部對它們進行負載平衡(但是,您將機器暴露在網際網路上,通常是不可取的)。

希望有幫助!

引用自:https://serverfault.com/questions/681817