这里写目录标题
- 为什么要负载均衡
- nginx的设置
为什么要负载均衡
我们使用的socketfd本质上是文件描述符,默认大小是1024个,我们通过一个进程,使用limit调大,一台服务器在我们的32位的linux下并发量:2万左右的并发量,如果要支持3万,4万用户同时在线聊天就不可以了。
如果我们要提高聊天服务器的并发能力,让更多的用户可以同时在线聊天,我们要进行集群部署。在水平方向上扩展多台主机,每一台主机运行着独立的chatserver,我们在下图中,引入了3台主机,每一台主机运行着独立的chatserver服务器,可以给用户提供聊天服务,但是,我们在用QQ客户端登录的时候,人家有没有问你想连哪个服务器?不能把选择服务器的决定扔给客户,客户又不知道哪个服务器空闲哪个服务器繁忙。所以,我们在集群聊天服务器,要引入nginx负载均衡器,也叫做反向代理设备,帮我们统一接收客户端的请求,然后根据配置的既定的负载均衡算法,来把客户端的这些请分发到业务服务器chatserver上。
首先,用户在使用客户端的时候,不用去选择连接哪个服务器,客户端软件默认的连接负载均衡器。负载均衡器的角色相当于一个中间的桥梁,连接了客户端和服务器,client1先发送请求到负载均衡器,负载均衡器根据配置的既定的负载算法,比如说轮询,按权重,按ip哈希等等,负载均衡器给client1的请求分发到了chatserver1上,相当于client1就登录到了chatserver1上。client2现在登录,通过负载算法,轮询,登录到了chatserver2上。再来client3登录的话,就登录到了chatserver3上。如下图所示:
聊天服务器是长连接的业务,聊天的链路一直保持着。客户端的请求和服务器的响应都是要经过负载均衡器
如果要再扩展一台设备。我们把这个设备的信息添加到负载均衡器上,然后再把负载均衡器重启一下,肯定是不行的,因为此时用户就不能使用了。但是nginx支持平滑启动,可以在不中断服务的前提下去加载配置文件,动态的识别新添加的服务信息。
nginx的设置