如何在超过 2 台服务器的主动/被动模式下进行 tcp 负载平衡?
Posted
技术标签:
【中文标题】如何在超过 2 台服务器的主动/被动模式下进行 tcp 负载平衡?【英文标题】:How to do tcp load balancing in active/passive mode with more than 2 servers? 【发布时间】:2018-06-27 05:04:09 【问题描述】:在我的用例中,我需要设置负载平衡器,它可以是 nginx 或类似的支持 TCP 负载平衡的东西,它将连接到我的后端服务。
我想以主动/被动的方式做到这一点。我可以在 docker env 上拥有 5 个负载均衡器实例和 5 个后端服务实例,比如说 NFS(可能不在 docker env 上)。
现在我希望我的 lb1(负载平衡器 1)仅将请求路由到 nfs1,除非它关闭,然后将请求路由到 nfs2 或 nfs3,依此类推。
lb1 ----- nfs1
lb2 ----- nfs2
:
:
lb5 ----- nfs5
我已经用 nginx 试过了,但是它只支持 2 个带备份关键字的主动/被动模式的服务器。
events
worker_connections 1024;
stream
upstream stream_backend
server 172.17.0.5:2049;
server 172.17.0.7:2049 backup;
server
listen 80;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass stream_backend;
任何帮助都会很棒。
【问题讨论】:
【参考方案1】:通过使用 Haproxy 能够解决我的问题。
defaults
mode tcp
frontend haproxy
bind *:80
mode tcp
timeout client 1s
default_backend nfs
backend nfs
mode tcp
timeout connect 1s
timeout server 1s
server nfs1 172.17.0.7:2049 check
server nfs2 172.17.0.5:2049 check backup
server nfs3 172.17.0.8:2049 check backup
学分:https://www.haproxy.com/blog/failover-and-worst-case-management-with-haproxy/
【讨论】:
你能用这个执行nfs挂载吗?以上是关于如何在超过 2 台服务器的主动/被动模式下进行 tcp 负载平衡?的主要内容,如果未能解决你的问题,请参考以下文章