Nginx
使用 NGINX/HAproxy 的透明 TCP 負載平衡
我已經嘗試了幾天,但仍然無法讓透明的 TCP 負載均衡器使用 HAproxy/NGINX 工作。
問題是:一切正常,直到我嘗試啟用透明度。NGINX 和 HAproxy 都進行負載平衡,但將 localhost 作為使用者 IP。
我試圖改變這一點:
將它們更改為以 root 身份執行。
對於 NGINX:
- 嘗試使用這篇文章: https ://www.nginx.com/blog/ip-transparency-direct-server-return-nginx-plus-transparent-proxy/#upstream-reach-external
- 配置了 iptables,添加了路由表等。關於“預設網關應該是 NGINX 伺服器 ip”的部分我不明白,因為 NGINX 和應用程序在沒有任何容器的同一台機器上執行。
對於 HAProxy:
- 根據文章設置 iptables 並更改 sysctl 轉發選項:https ://www.loadbalancer.org/blog/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/
- 但是,我沒有得到關於“但是,如果要使用客戶端源 IP 地址,則 HAProxy 伺服器必須位於返回流量的路徑中”的部分。出於與 NGINX 相同的原因。
所以,一般的問題是:我在 xxxx:30000 上有 HAproxy/NGINX 負載平衡。在同一台機器上,我在 xxxx:30001 和 xxxx:30002 有應用程序。
如何負載平衡此配置?需要哪些額外的路由規則?我是否需要為某些重新路由創建一個虛擬子網?因為到目前為止,負載均衡器似乎可以連接到應用程序,但無法將答案返回給使用者。
我不確定您是否可以在同一主機上執行此操作。
TPROXY 在最好的時候是複雜的。我只見過它與兩個單獨的子網和單獨的主機(虛擬或物理)一起工作得很好。
你確定你不能只使用像DSR模式這樣更簡單的東西嗎?
我知道 LVS DSR 在同一台主機上工作。
或者HAPROXY 代理協議(如果您的應用程序支持它)。
從理論上講,我想 TPROXY 應該可以在單個主機上使用,所以也許聰明的人會回答:-)。