TCP 請求在 Google 雲端負載平衡器上被丟棄

TCP 請求在 Google 雲端負載平衡器上被丟棄

我們正在將 TCP Google Cloud Loadbalancer 用於我們的一項服務。

該架構如下:有一個 TCP 負載平衡器,前端允許使用一系列端口,並且連接其後端實例,並且實例服務在 LB 上打開的同一端口上運行。

例如:LB IP -1.1.1.1:(100-200)即,連接埠範圍是開放的。現在後端有 3 個實例正在運行,並且服務正在它們的連接埠 100、101 和 103 上運行。

作為用戶,如果要存取運行在連接埠 100 上的服務,則必須使用 LB IP:100 來存取服務。但從過去幾天來看,這項要求正在下降。但是,如果您嘗試直接連線執行個體 IP:100 服務將運作良好。因此,我無法找出確切的原因。這些請求也是基於 TCP 的,那麼為什麼 LB 會丟棄它。

請給我一些建議。注意:有什麼方法可以從 GCloud 或控制台檢查 LB 日誌?

答案1

發布OP自己的答案以獲得更好的可見性:

我的問題不是 LB 造成的。

我的LB使用循環演算法,它只是傳遞請求而不檢查後端伺服器狀態。我的伺服器只有一台在運行,因此一半的請求被丟棄。

我剛剛在同一負載下又配置了一個實例,問題就解決了。

這種解決方案是最“粗暴”的,並且它不提供任何故障保護。如果任何伺服器發生故障,一些請求將被丟棄,服務將降級。

避免這種情況的最簡單的解決方案是創建一個託管執行個體組並使用健康檢查驗證所有虛擬機器是否正在運行,然後創建負載平衡器

相關內容