接着上文,我们剖析了服务端和客户端的代码,但是单台服务器的并发量是有限的,面对并发量的要求,我们就需要引入Nginx来实现并发量的要求,将用户请求分发到不同的服务器上分担压力,这就是负载均衡。
选择负载均衡模块要完成的任务:
- 把client的请求按照轮询的负载算法分发到具体的业务服务器ChatServer上;
- 需要和ChantServer保持心跳机制,及时检测ChatServer故障,避免分发到故障机上;
- 需要及时发现新添加的ChatServer设备,方便扩展服务器数量,不需要停止服务端
在Linux系统下安装配置nginx—附带每一步截图,在Linux系统下安装配置nginx—附带每一步截图中我们讲解了下载Nginx的详细步骤,这里我们来看如何对Nginx的tcp负载均衡配置。
配置步骤
- 首先,一定要在nginx编译加入
--with-stream
参数激活tcp负载均衡模块,即./configure --with-stream
- 可执行文件在sbin目录中,配置文件在conf
- 打开配置文件
vim nginx.conf
- 在events和http之间插入以下信息(http是外部服务器的负载均衡)
#nginx tcp loadbalance config
stream{
upstream MyServer{
server 127.0.0.1:6000 weight=1 max_fails=3 fail_timeout=30s;
server 127.0.0.1:6002 weight=1 max_fails=3 fail_timeout=30s;
}
server{
proxy_connect_timeout 1s;
#proxy_timeout 3s;
listen 8000; #nginx监听的端口号
proxy_pass MyServer;
tcp_nodelay on;
}
}
- upstream MyServer为负载均衡模块,里面存放包含的机器,如果要添加新的服务器,只需要在里面添加即可
- 127.0.0.1:6000 ip和端口号
- weght权重,都为1表示轮询,可以把不同配置的服务器放在集群中,改变他的权重,充分利用它。
- max_fails=3 fail_timeout=30s;心跳检测
- ./nginx -s reload 平滑重启
- 查看
netstat -tnap
注意:如果要停止nginx,不要使用kill杀死进程,因为nginx有进程容错机制,会自动重启。需要使用nginx -s stop
使用
- 在使用的时候,服务器端 使用MyServer配置的两个端口登录
- 客户端直接连 l 8000; 即nginx监听的端口号
- 会平均分配给两个服务器(轮询算法)