本指南說明如何排解Google Cloud 外部直通式網路負載平衡器的設定問題。請先熟讀下列頁面內容後,再研究問題:
- 外部直通式網路負載平衡器總覽
- 後端服務型外部直通式網路負載平衡器總覽
- 後端服務型外部直通式網路負載平衡器的流量分配
- 目標集區型外部直通式網路負載平衡器總覽
- 外部直通式網路負載平衡器的容錯移轉概念
- 外部直通式網路負載平衡器的記錄與監控功能
排解網路分析器的常見問題
網路分析器會自動監控虛擬私有雲網路設定,並偵測不盡理想和錯誤的設定。識別網路故障、提供根本原因資訊,並建議可能的解決方法。如要瞭解網路分析器自動偵測到的各種設定錯誤情況,請參閱網路分析器說明文件中的「負載平衡器深入分析」。
Network Analyzer 位於 Google Cloud 控制台,是 Network Intelligence Center 的一部分。
前往網路分析器排解設定問題
後端平衡模式不相容
建立負載平衡器時,您可能會看到以下錯誤訊息:
Validation failed for instance group INSTANCE_GROUP: backend services 1 and 2 point to the same instance group but the backends have incompatible balancing_mode. Values should be the same.
如果您嘗試在兩個不同的負載平衡器中使用相同的後端,但後端沒有相容的平衡模式,就會發生這種情況。
如要瞭解詳情,請參考下列資源:
排解一般連線問題
如果無法連線至外部直通式網路負載平衡器,請檢查下列常見問題:
確認防火牆規則。
- 確認您已將允許輸入防火牆規則定義成允許對後端 VM 執行健康狀態檢查。
- 確認允許輸入防火牆規則會讓來自用戶端的流量傳送到後端 VM。
- 確認相關防火牆規則存在,可讓流量傳送到負載平衡器使用的通訊埠上的後端 VM。
- 如果您使用防火牆規則的目標標記,請務必正確標記負載平衡器的後端 VM。
如要瞭解如何設定外部直通式網路負載平衡器所需的防火牆規則,請參閱「設定防火牆規則」。
確認 Google 客戶代理程式正在後端 VM 上執行。如果可以連線至狀況良好的後端 VM,但無法連線至負載平衡器,可能是 VM 上的 Google Guest 代理程式 (先前稱為 Windows Guest 環境或 Linux Guest 環境) 未執行,或是無法與中繼資料伺服器 (
metadata.google.internal、169.254.169.254) 通訊。請檢查下列事項:
- 確認 Google 客戶代理程式已安裝並在後端 VM 上執行。
- 確認後端 VM 客戶作業系統中的防火牆規則 (
iptables或 Windows 防火牆) 不會封鎖對中繼資料伺服器的存取權。
確認後端 VM 正在接受傳送至負載平衡器的封包。 每個後端 VM 都必須設定為接受傳送至負載平衡器的封包。也就是說,傳遞至後端 VM 的封包目的地是負載平衡器的 IP 位址。在大多數情況下,這會透過本機路由實作。
如果是從 Google Cloud 映像檔建立的 VM,Guest agent 會安裝負載平衡器 IP 位址的本機路徑。以 Container-Optimized OS 為基礎的 Google Kubernetes Engine 執行個體會改用
iptables實作這項功能。在 Linux 後端 VM 上,您可以執行下列指令,確認本機路徑是否存在。請將
LOAD_BALANCER_IP替換為負載平衡器的 IP 位址:sudo ip route list table local | grep LOAD_BALANCER_IP
確認後端 VM 的服務 IP 位址和通訊埠組合。 傳送至外部直通式網路負載平衡器的封包,抵達後端 VM 時的目的地 IP 位址是負載平衡器本身。這類負載平衡器不是 Proxy,這是正常現象。
如要查看在通訊埠上接聽的服務,請執行下列指令:
netstat -nl | grep ':PORT'
在後端 VM 上執行的軟體必須執行下列操作:
- 監聽 (繫結至) 負載平衡器的 IP 位址或任何 IP 位址 (
0.0.0.0或::) - 監聽 (繫結至) 負載平衡器轉送規則中包含的通訊埠
如要測試這項功能,請使用 SSH 或 RDP 連線至後端 VM。接著使用
curl、telnet或類似工具執行下列測試:- 嘗試使用後端 VM 本身的內部 IP 位址 (
127.0.0.1) 或 localhost 聯絡服務。 - 使用負載平衡器轉送規則的 IP 位址聯絡服務,嘗試連線至服務。
- 監聽 (繫結至) 負載平衡器的 IP 位址或任何 IP 位址 (
確認健康狀態檢查流量可傳送至後端 VM。如要確認健康狀態檢查流量傳送至後端 VM,請啟用健康狀態檢查記錄功能,並搜尋成功的記錄項目。
排解共用虛擬私有雲問題
如果您使用共用虛擬私有雲,且無法在特定子網路中建立新的外部直通網路負載平衡器,原因可能在於組織政策。請在組織策略中,將該子網路新增到允許的子網路清單中,或是與您的機構組織管理員聯絡。詳情請參閱constraints/compute.restrictSharedVpcSubnetworks限制。
排解容錯移轉問題
如果您已為外部直通式網路負載平衡器設定容錯移轉功能,請按照下列步驟驗證設定:
- 請務必瞭解後端選取和連線追蹤,以及容錯移轉概念。
- 確認您至少指定了一個容錯移轉後端。
- 使用 Google Cloud 控制台或
gcloud compute backend-services get-health查看哪些後端健康狀態良好,判斷哪些 VM 是合格的後端。 - 確認容錯移轉比例已正確設定。
- 我們不建議搭配容錯移轉功能使用已啟用自動調度資源的代管執行個體群組,因為自動調度資源會變更主要後端、容錯移轉後端或兩者的數量。這可能會導致符合資格的後端組合意外變更,因為容錯移轉比率是固定的。
- 如果用戶端 VM 也是負載平衡的後端 VM,則連線至負載平衡器轉送規則 IP 位址的連線,會傳送至後端 VM 本身。詳情請參閱「從單一用戶端進行測試」。
排解記錄問題
如果您為外部直通式網路負載平衡器設定記錄功能,可能會發生下列問題:
- 如果取樣封包數不足以擷取 RTT,部分記錄檔可能就不會顯示 RTT 測量結果,例如位元組值。低流量連線較常發生這種情況。
- RTT 值僅適用於 TCP 流程。
- 部分封包會在沒有酬載的情況下傳送。如果系統取樣到內容只有標頭的封包,位元組的值會顯示
0。