TCP 长连接负载均衡问题

2017-12-15 14:51:40 +08:00
 play78
(10W 客户) -----TCP 长连接-----> Nginx/HAproxy/LVS(软件负载) ------TCP 长连接-----> (实际业务,多台业务 PC 主机)

客户端 TCP10W 长连接到 Nginx/HAproxy 这一步,没有问题。
软件负载到实际业务这里,由于负载均衡(Nginx) 是采用转发的方式进行处理的,本地会创建连接,当转发超出 65535 时,(Nginx)就不能建立长连接了。请问要进行哪些配置?

Ps: Linux 系统调优参数基本已经设置过了,应该不是这里的问题。

V2er 人才多,有没有遇到过的大佬。
14535 次点击
所在节点    问与答
7 条回复
yaoliyc
2017-12-15 15:22:38 +08:00
65535 那是 ipv4 协议本身的限制,配什么应该没什么用,nginx 到实际业务之间为什么要长连接?
pubby
2017-12-15 15:37:28 +08:00
端口用光了吧,实际业务配多个端口或开多个业务进程可解决单机连接数限制
0ZXYDDu796nVCFxq
2017-12-15 15:45:04 +08:00
我处理过 50 万长连接的业务

nginx --> 实际业务服务器
在 nginx 这里采用多个内网 IP,这些 IP 使用 proxy_bind 来指定

可参考
https://nginx.org/r/proxy_bind
play78
2017-12-15 15:58:36 +08:00
@gstqc
谢谢你,应该就是这个了。 ヾ(・ω・`。)
play78
2018-01-05 08:46:54 +08:00
@gstqc
你好,还是想问一下你,你这个 nginx.conf 是怎么配置的,
我配置了几个虚拟网卡,但是通过 proxy_bind 好像只能指定到一个 IP
下面这个只能绑定一个 IP,如果要绑定多个 IP 要怎么操作
proxy_bind 192.168.0.1;
下面这个动态绑定,但是只能根据客户端连接进来的 IP,进行分配,不能进行负载
proxy_bind $server_addr;

请问,proxy_bind 有没有类似 proxy_pass 一样可以后面接一个 upstream 的,然后可以进行负载均衡的
如果没有,是要自己写脚本分配,还是有插件可以用。

谢谢,希望你能回复。
0ZXYDDu796nVCFxq
2018-01-05 09:08:33 +08:00
@play78 可以配合 map 指令
按一定的算法,把连接平均分为若干份,每份 map 到一个本地 IP 的变量
然后 proxy_bind 这个变量

比如
map $remote_addr $proxy_bind_ip {
*1 192.168.0.1;
*2 192.168.0.2;
...
}

proxy_bind $proxy_bind_ip;
zhengdai1990
2020-04-02 16:17:02 +08:00
想问下 nginx 用 proxy_bind 这种方法最多能撑多少量级的长连接

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/415044

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX