關鍵字: GKE, conntrack, HAProxy
影響: 網路重度服務遇見大量錯誤
今天這個案例的重點非常簡單,Kubernetes(GKE) 會根據每個節點上面的記憶體大小去設定相關的 conntrack_max 的數值。因此對於一個小記憶體的節點上運行一個有網路重度的服務,非常容易踩到 conntrack_max 的上限最後導致連線 reset 以及 timeout.
conntrack 是 Linux Kernel 非常重要的網路功能,透過 conntrack (connection tracking) 可以實現非常多的功能,kernel 會去追蹤與監控系統上看到的所有連線,每個連線都包含兩個方向的封包。
根據作者的測試,於 GKE 觀察的結果是大概每 MB 可提升5條 connection的上限。
團隊的應用程式是一個類似於 proxy 的角色,這個應用程式大概每秒要處理一萬個以上的 rquest,而這個現象是當團隊針對整個架構進行一番改正後,開始注意到有網路連線出現問題。
針對這個問題作者提出了幾個解決思路
1. 針對網路連線非常重度的應用程式,將其給配置到比較強力效能的機器人,才可以獲得更高數值的 conntrack_max
2. 透過 init-container/daemonset 等方式,手動執行 sysctl 去修改節點上的 conntrack_max
3. 透過 Prometheus 去監控系統上目前所有節點 conntrack 使用的數量,藉此提醒團隊這個數值也很重要,需要監控
4. 1.15 以後的 kubernetes 有一些小的修復可以幫忙移除一些不合法的 conntrack,勁量讓 conntrack pool 留給有用的連線
https://deploy.live/blog/kubernetes-networking-problems-due-to-the-conntrack/
「haproxy 設定」的推薦目錄:
- 關於haproxy 設定 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於haproxy 設定 在 動態配置HAProxy Configuration - James's Blog 的評價
- 關於haproxy 設定 在 HAProxy cfg 設定-在PTT/IG/網紅社群上服務品牌流行穿搭 的評價
- 關於haproxy 設定 在 有多個naiveproxy節點,HAPROXY的設定· Issue #61 - GitHub 的評價
- 關於haproxy 設定 在 我有Load Balance 的需求,用HAproxy 還是... - Facebook 的評價
- 關於haproxy 設定 在 The Essentials of an HAProxy Configuration File - YouTube 的評價
haproxy 設定 在 HAProxy cfg 設定-在PTT/IG/網紅社群上服務品牌流行穿搭 的推薦與評價
請透過/etc/haproxy/haproxy.cfg 檔案配置HAProxy。 使用HAProxy 的Load Balancer 配置包含了五個部分:. 節5.2, “ global 設定”. 〈代理〉一節,包含四個小節 ... ... <看更多>
haproxy 設定 在 有多個naiveproxy節點,HAPROXY的設定· Issue #61 - GitHub 的推薦與評價
haproxy.cfg設定. listen naive bind 0.0.0.0:1078 mode tcp balance roundrobin server t1 a.server.com:443 check inter 1000 weight 1 ... <看更多>
haproxy 設定 在 動態配置HAProxy Configuration - James's Blog 的推薦與評價
在 /etc/haproxy/haproxy.cfg 中加入userlist api 來設定呼叫HAPorxy Data Plane API 驗證的使用者名稱與密碼。以本例 james 為帳號, mypassword 為 ... ... <看更多>