如果我有三台服务器来搭建emqx集群,通过nginx来进行负载均衡策略,是否可以通过nginx的split_clients,来绑定每台服务器对应的ip来进行网络分流,这样是否可以解决单台连接最多65535问题?同时通过upstream来挂载三台服务器上的emqx服务来进行分发?
没用过,要增大连接数,不是应该多分配几个ip么
upstream backend {
server backend1:1883 bind=192.168.1.2; # 使用 IP1 连接后端
server backend2:1883 bind=192.168.1.3; # 使用 IP2 连接后端
}
你发的这个是通过nginx过来分发的负载均衡,但只通过upstream的话,也是通过nginx进行反向代理,那么最多能有多少设备通过nginx进行连接呢?因为一台服务器的端口数最多不是65535么
虽然一个ip 最多支持 65535 个端口,但是这个并不是说一个服务器只能支持这么多个长连接。
他可以是多个 ip 在一个服务器上。
你有这种误解,是因为 nginx 是做为中间层(他在 emqx 看来就是一个 mqtt客户端),他如果只有一个 ip 的话,那要 emqx 的 ip 组成唯一的标识 源 IP(nginx),源端口,目标 IP(emqx),目标端口。这样的话,因为源 IP 只有一 个,那你最多就 65535 个连接了。
通过增加源 IP,就可以增加连接。
PS: 对于入站(nginx),客户端连接到 ningx 的监听端口,所有的连接都共享 同一个目标端口,不会消耗额外的端口。
对于出站连接。nginx 做为客户端连接 ,需要占用本地的端口(所以要搞多 IP)
建议自行对网络相关的问题,问问 AI。
好的,多谢