設定公用負載平衡器

已完成

身為醫療保健入口網站的解決方案架構設計人員,您必須透過 Web 伺服陣列中的虛擬機器來分散用戶端瀏覽器的負載。 您必須設定負載平衡器,並設定要平衡的虛擬機器。

公用負載平衡器會將連入流量的公用 IP 位址和連接埠號碼對應到後端集區中虛擬機器的私人 IP 位址和連接埠號碼。 然後將回應傳回用戶端。 藉由套用負載平衡規則,即可將特定類型的流量分散到多部虛擬機器或多個服務。

分散模式

根據預設,Azure Load Balancer 會將網路流量平均分散到多個虛擬機器執行個體。 如果需要不同的行為,也能夠使用下列分散模式:

  • 五個 Tuple 的雜湊:Load Balancer 的預設分散模式是五個 Tuple 的雜湊。 此 Tuple 由來源 IP、來源連接埠、目的地 IP、目的地連接埠及通訊協定類型所組成。 因為來源連接埠包含在雜湊中,而每個工作階段的來源連接埠都會變更,所以針對每個工作階段,用戶端可能會被導向至不同的虛擬機器。

    Diagram showing how hash-based distribution works.

  • 來源 IP 親和性:此分散模式也稱為「工作階段親和性」或「用戶端 IP 親和性」。 為了將流量對應至可用的伺服器,來源 IP 親和性模式會使用雙元組雜湊 (來自來源 IP 位址和目的地 IP 位址) 或三元組雜湊 (來自來源 IP 位址、目的地 IP 位址和通訊協定類型)。 雜湊可確保來自特定用戶端的要求一律會傳送到負載平衡器後方的相同虛擬機器。

    Diagram showing how session affinity works.

選擇分散模式

在醫療保健入口網站範例中,假設展示層的開發人員需求是在使用者與入口網站互動時,使用記憶體內部工作階段來儲存登入使用者的設定檔。

在此案例中,負載平衡器必須提供來源 IP 同質性,以維護使用者工作階段。 此設定檔只會儲存於用戶端第一次連線的虛擬機器上,因為會將該 IP 位址導向到相同伺服器。 當您建立負載平衡器端點時,必須使用下列 PowerShell 範例來指定分散模式:

$lb = Get-AzLoadBalancer -Name MyLb -ResourceGroupName MyResourceGroup
$lb.LoadBalancingRules[0].LoadDistribution = 'sourceIp'
Set-AzLoadBalancer -LoadBalancer $lb

透過 Azure 入口網站新增工作階段持續性:

  1. 在 Azure 入口網站中,選取您的 Load Balancer 資源。

  2. [負載平衡規則] 頁面的 [設定] 窗格底下,選取相關的負載平衡規則。

    Screenshot showing how to select a load balancing rule in the Azure portal.

  3. [負載平衡規則設定] 頁面中,將 [工作階段持續性] 的值從 [無] 變更為 [用戶端 IP]

Screenshot showing how to set IP affinity in the Azure portal.

Load Balancer 與遠端桌面閘道

遠端桌面閘道是一個 Windows 服務,您可用它來讓網際網路上的用戶端透過防火牆建立與您私人網路上遠端桌面伺服器的遠端桌面通訊協定 (RDP) 連線。 Load Balancer 中預設的五個 Tuple 的雜湊與此服務不相容。 如果想要使用負載平衡器搭配您的遠端桌面伺服器,請使用來源 IP 同質性。

Load Balancer 與媒體上傳

另一個來源 IP 同質性使用案例是媒體上傳。 在許多實作中,用戶端會透過 TCP 通訊協定起始工作階段,並連線到目的地 IP 位址。 此連線在整個上傳期間會保持開啟以監視進度,但檔案會透過不同的 UDP 通訊協定進行上傳。

使用五個 Tuple 的雜湊時,負載平衡器可能會將 TCP 和 UDP 連線傳送到不同的目的地 IP 位址,因此上傳將無法順利完成。 使用來源 IP 同質性來解決此問題。