Engineering · 2 min read
CDP GUID Race:Load Balancer 拆開兩步連線
CDP 需要兩條連線打到同一支 Chrome。Load balancer 會把它們拆開,Pod 越多失敗率越高。
問題
CDP 需要兩條連線打到同一支 Chrome。Load balancer 會把它們拆開。
kube-proxy 每次連線隨機選一個 Pod。兩通可以打到不同 Pod。
Chrome B 不認識 GUID-A,回 404。
N 個 Pod 時,兩通打到同一個的機率是 1/N:
- 3 個 Pod = 33% 成功
- 6 個 Pod = 17% 成功
- Pod 越多越慘
重試可以靠運氣成功,但每次嘗試的成功率都只有 1/N。KEDA 加越多 Pod,失敗率越高。這是路由問題,不是容量問題。
修復方式:把 Service hostname 解析成 Pod IP,兩步都用同一個 IP。詳見 Headless Service。
Retry 不是修復。它是碰運氣。Pod 越多,運氣越差。
參考來源:
Related: 看 Headless Service 怎麼修復這個 race、CDP 兩階段連線為什麼造成這個問題,或回到系列總覽。