我打算添加更多Web应用程序服务器来支持日益增长的客户端,部署HAproxy和Keepalived以实现负载平衡和高可用性。
我的服务器使用情况具有以下特征:
出于这样的原因,
题
如果有超过60,000个客户端设备X连接到服务器,则我的负载均衡器或路由器将用尽TCP端口。 扩大20,000名用户的最佳方式是什么?
我的服务器在Ubuntu服务器上运行,使用tomcat和Java Servlet。
我不认为你的6万客户是真正的问题。 你会更可能有没有足够的文件描述符的问题,但这应该很容易解决作为操作系统configuration的一部分。
这就是为什么连接不会成为你的问题。 每个连接的特征在于其源IP地址,源端口,目的IP地址和目的端口。 在networking堆栈中,这个四元组用于将数据包与文件描述符(每个文件描述符代表一个连接)进行匹配。 你的服务器有固定的目的IP地址和目的端口(你的服务器是客户端的目的地址),但源IP地址和源端口是可变的。 端口是16位数字,因此来自一个客户端的最大连接数是64K。 IPv4地址是一个32位的数字,它给你4,294,967,296个可能的源地址。 做一些基本的math计算,你的服务器可以把64K * 4,294,967,296连接映射到一个单一的源IP和端口。
这就是为什么你会更可能有最大数量的打开文件描述符,然后是客户端数量的问题。
最简单的方法可能是在DNS级别实现负载平衡。
意思是:有一个循环的DNS条目,可以平衡到2,3或更多物理负载均衡器。