本指南說明如何排解Google Cloud 外部直通式網路負載平衡器的設定問題。請先熟讀下列頁面內容後,再研究問題。
排解網路分析器的常見問題
網路分析器會自動監控虛擬私有雲網路設定,並偵測不盡理想的設定和錯誤設定。它會找出網路故障、提供根本原因資訊,並建議可能的解決方法。如要瞭解 Network Analyzer 自動偵測到的各種錯誤設定情況,請參閱 Network Analyzer 說明文件中的「負載平衡器深入分析」。
Google Cloud 控制台提供 Network Intelligence Center 中的 Network Analyzer。
前往網路分析器排解設定問題
後端有不相容的平衡模式
建立負載平衡器時,您可能會看到以下錯誤訊息:
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 訪客代理程式 (先前稱為 Windows 訪客環境或 Linux 訪客環境) 未執行,或無法與中繼資料伺服器 (
metadata.google.internal
、169.254.169.254
) 通訊。請檢查以下事項:
- 請確認 Google 訪客代理程式已安裝並在後端 VM 上執行。
- 請確認後端 VM (
iptables
或 Windows 防火牆) 的來賓作業系統中,防火牆規則不會阻擋對中繼資料伺服器的存取權。
確認後端 VM 是否接受傳送至負載平衡器的封包。每個後端 VM 都必須設定為接受傳送至負載平衡器的封包。也就是說,傳送至後端 VM 的封包目的地是負載平衡器的 IP 位址。在大多數情況下,這會透過本機路由實作。
如果是從 Google Cloud 映像檔建立的 VM,Guest 代理程式會為負載平衡器的 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 位址和通訊埠繫結。傳送至外部直通式網路負載平衡器的封包會帶有負載平衡器本身的目的地 IP 位址,抵達後端 VM。這類負載平衡器不是 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 何時會執行容錯移轉和容錯回復。請按照下列步驟檢查負載平衡器的設定:
使用 Google Cloud 控制台,查看每個後端執行個體群組中,健康狀態良好的後端 VM 數量。 Google Cloud 控制台也會顯示有哪些 VM 在使用中集區中。
確認負載平衡器的容錯移轉比例已正確設定。舉例來說,如果您有 10 個主要 VM,且將容錯移轉比例設定為
0.2
,則 Google Cloud 會在健康狀態良好的主要 VM 數量「少於」兩個 (10 × 0.2 = 2
) 時執行容錯移轉。0.0
的容錯移轉比例是有特殊意義的,這代表 Google Cloud 會在所有主要 VM 的健康狀態都不佳時執行容錯移轉。
其他可能發生的問題如下:
使用中的集區來回在主要後端和容錯移轉後端之間切換。
將代管執行個體群組與自動調度資源和容錯移轉搭配使用,可能會導致使用中集區在主要後端和容錯移轉後端之間反覆進行容錯移轉和容錯回復。 Google Cloud 不會阻止您為代管執行個體群組設定容錯移轉,因為部署作業可能受惠於這項設定。
停用連線排除功能無法解決問題。
只有在後端服務使用通訊協定 TCP 時,停用連線排除才會發生作用。
如果您在連線排除功能停用時建立使用 UDP 的後端服務,就會看到以下錯誤訊息:
gcloud compute backend-services create my-failover-bs --load-balancing-scheme external \ --health-checks-region us-central1 \ --health-checks my-tcp-health-check \ --region us-central1 \ --no-connection-drain-on-failover \ --drop-traffic-if-unhealthy \ --failover-ratio 0.5 \ --protocol UDP ERROR: (gcloud.compute.backend-services.create) Invalid value for [--protocol]: can only specify --connection-drain-on-failover if the protocol is TCP.
現有的連線在容錯移轉或容錯回復期間遭到終止。
編輯後端服務的容錯移轉政策。確認已啟用容錯移轉時排除連線的功能。
排解記錄問題
如果您為外部直通式網路負載平衡器設定記錄功能,可能會發生下列問題:
- 如果取樣封包數不足以擷取 RTT,部分記錄檔可能就不會顯示 RTT 測量結果,例如位元組值。低流量連線較常發生這種情況。
- RTT 值僅適用於 TCP 流程。
- 部分封包會在沒有酬載的情況下傳送。如果系統取樣到內容只有標頭的封包,位元組的值會顯示
0
。