如何在超过2个服务器的主动/被动模式下进行tcp负载平衡?

时间:2018-06-27 05:04:10

标签: nginx tcp load-balancing

在我的用例中,我需要设置负载均衡器,该负载均衡器可以是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 个答案:

答案 0 :(得分:0)

使用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/