針對 Azure Load Balancer 進行疑難排解

已完成

Azure Load Balancer 會在網路堆疊的傳輸層運作。 Load Balancer 會公告所有用戶端連線的單一公用 IP 位址。 Load Balancer 接著會使用自己的路由和位址轉譯規則,將傳入的 TCP 要求導向其中一組輸出位址。 一般而言,每個輸出位址會與不同的虛擬機器 (VM) 建立關聯,而每部虛擬機器都會執行應用程式的執行個體。

Load Balancer 會使用健全狀態探查來判斷後端集區中每個 VM 的可用性。 Load Balancer 只會將要求傳送至指出狀況良好的 VM。

在範例案例中,您已收到警示指出 Load Balancer 無法將要求導向後端集區中的 VM。 您懷疑可能是最近變更的網路設定造成了此問題。 但是,您必須了解網路變更會如何影響 Load Balancer 的運作。

本單元結束時,您將能夠:

  • 描述 Load Balancer 的一般設定,以及將要求路由傳送至 VM 所涉及的元件。
  • 說明可能導致 Load Balancer 無法將要求散發至 VM 的常見問題。

Load Balancer 如何運作?

Azure Load Balancer 包含幾個元件:

  • 前端 IP 位址
  • VM 位址的後端集區
  • 一或多個路由規則
  • 健康狀態探查
  • VM 的集合,通常位於虛擬網路中

下列圖表顯示 Load Balancer 使用的各種項目如何共同運作。

顯示 Azure Load Balancer 元件的圖表。

前端 IP 位址和後端集區

Load Balancer 提供從用戶端到在 VM 集合上所執行應用程式的端對端透明連線。 Load Balancer 會將這些 VM 其 IP 位址儲存在通常稱為「後端集區」的存放庫中。 Load Balancer 會向用戶端公開自己的「前端」IP 位址。 當用戶端將要求傳送到此位址時,Load Balancer 會從後端集區選取 VM 的 IP 位址。 Load Balancer 接著會透過此後端 IP 位址將要求路由傳送至 VM。

用戶端並不知道 Load Balancer。 用戶端會看到 IP 位址或 DNS 名稱,並將要求傳送至這個目的地。 此程序和用戶端直接與 VM 通訊的方式相同。 當要求抵達 VM 時,原始用戶端的位址會受到保留。

此外,從用戶端傳送至 VM 的訊息承載,對 Load Balancer 來說並不透明。 Load Balancer 不會檢查任何訊息的內容,也不會對其進行控制。 但會將訊息重新定址,使其傳送至所選 VM。

Load Balancer 會使用設計為平均散發要求的演算法,從後端集區選取 VM 的 IP 位址。 Load Balancer 會使用下列資訊來產生雜湊:

  • 用戶端的來源 IP 和連接埠位址
  • 目的地 IP 位址和連接埠
  • 網路通訊協定

雜湊值用來作為保存後端集區中 IP 位址的資料表索引鍵。

延展性

您隨時都可以啟動其他 VM 執行個體,並將其 IP 位址新增至後端集區。 Load Balancer 會在散發使用者要求時包含這些新的執行個體。

Load Balancer 可以公開超過一個公用前端 IP 位址,並可能有多個後端集區。 此配置可供重複使用相同 Load Balancer 執行個體以處理不同系統的要求。

路由規則

您可定義負載平衡規則,以指定要如何將每個導向至前端 IP 位址的要求對應至後端集區。 負載平衡規則也會指定要比對的通訊協定,並可選擇指定來源 (用戶端) 和目的地連接埠。 Load Balancer 會捨棄抵達前端 IP 位址但不符合通訊協定和連接埠需求的傳入要求。 負載平衡規則也可以設定工作階段持續性,讓指定的用戶端可能會將其要求路由傳送至相同的 VM,讓在 VM 上執行的應用程式利用快取來保存工作階段特定資訊。

健康探詢

Load Balancer 需要判斷後端集區所參考的每部 VM,是否都可用於處理要求。 可用性取決於新增健全狀態探查。 健康狀態探查會定時將 Ping 訊息傳送至您為後端集區 VM 所指定的連接埠。 您將在 VM 上提供用於回應這些 ping 訊息的服務 (使用 HTTP 200 (OK) 訊息)。

在指定的嘗試次數之後,如果 VM 都沒有回應,則 Load Balancer 會假設其狀況不良,並將其從可接受使用者要求的 VM 清單中移除。 然後,工作負載會散發給其餘狀況良好的 VM。 Load Balancer 會繼續 ping 沒有回應的 VM。 如果 VM 開始回覆,則會將該 VM 新增回狀況良好的 VM 清單,並再次開始接收使用者要求。

如果未提供健康狀態探查,Load Balancer 就無法知道 VM 是否狀況良好。 反之,其會假設所有 VM 都會回應。

虛擬網路

後端集區所參考的 VM 會裝載在 Azure 虛擬網路子網路中。 您可以設定網路安全性群組 (NSG) 來保護此網路中的 VM。 NSG 會實作輸入和輸出安全性規則,以將進入及離開虛擬網路的流量,限制於一組定義良好的端點。

例如,Load Balancer 後端集區中的 VM,通常會允許連接埠 80 (HTTP) 和連接埠 443 (HTTPS) 上從虛擬網路外部抵達的輸入流量。 但 VM 可能會封鎖出現在其他連接埠上的流量。

Load Balancer 的失敗徵兆和原因

當 Load Balancer 與後端集區中的一或多部 VM 失去連線時,就會發生問題。 一般的徵兆包括:

  • 應用程式無法連線。
  • 執行應用程式的 VM 無法連線。
  • 回應時間緩慢。
  • 使用者要求逾時。

這些失敗的原因可能有很多。 這些原因最常與探查問題和資料路徑問題建立關聯。

探查問題

當後端集區中的一或多部 VM 未回應健康狀態探查要求時,就會發生探查問題。 這些問題可能由下列原因造成:

  • 不正確的探查設定,例如錯誤的 URL 或連接埠。
  • 因為所需的連接埠未開啟,所以 VM 無法回應探查。

資料路徑問題

當 Load Balancer 無法將用戶端要求路由傳送至在後端集區 VM 上執行的應用程式時,就會發生資料路徑問題。 可能的原因包括:

  • NSG 規則或防火牆封鎖應用程式使用的連接埠或 IP 位址。
  • VM 已關閉或沒有回應。 VM 可能已關閉、失敗或發生安全性問題,例如伺服器上的憑證已過期。
  • 應用程式沒有回應。 VM 可能超載、應用程式在不正確的連接埠上接聽,或應用程式當機。

檢定您的知識

1.

如果未設定健康狀態探查且 VM 失敗,會發生什麼事?

2.

您已關閉網路安全性群組中的連接埠,該連接埠由 Load Balancer 集區中裝載 VM 的虛擬網路所使用。 這會如何影響負載平衡?