假设一台机器支持两万的并发量,现在我们需要保证八万的并发量。首先想到的是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机器的物理性能来解决此问题。但是单台机器的性能毕竟是有限的,而且也有着摩尔定律也日已失效。
这个时候我们就可以增加服务器的数量,将用户请求分发到不同的服务器上分担压力,这就是负载均衡。那我们就需要有一个第三方组件充当负载均衡器,由它负责将不同的请求分发到不同的服务器上。而本项目,我们选择Nginx
的负载均衡功能。
选择Nginx
的tcp
负载均衡模块的原因:
client
的请求按照负载算法分发到具体的业务服务器ChatServer
上ChantServer
保持心跳机制,检测ChatServer
故障ChatServer
设备,方便扩展服务器数量下载
wget http://nginx.org/download/nginx-1.18.0.tar.gz
解压
tar -zxvf nginx-1.18.0.tar.gz
安装
[root@caochenlei ~]# cd nginx-1.18.0
[root@caochenlei nginx-1.18.0]# ./configure
[root@caochenlei nginx-1.18.0]# make && make install
这里我看要加上指示才能编译自己想要的模块,于是使用了./configure --with-stream
,没想到出现了问题。
./configure --with-stream
可以看到缺少了某些依赖文件,直接安装 PCRE 即可。网上搜到的都是 centos 的安装方法,结果试了一下发现 Ubuntu 根本没用这个包。yum -y install pcre-devel
后来找到了 Ubuntu 的安装方法,最后安装成功。
sudo apt-get install libpcre3-dev
./configure --with-stream
注意:安装完成后的路径为:/usr/local/nginx
[root@caochenlei ~]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@caochenlei ~]# /etc/rc.d/init.d/iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:[确定]
普通启动服务:/usr/local/nginx/sbin/nginx
配置文件启动:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
暴力停止服务:/usr/local/nginx/sbin/nginx -s stop
优雅停止服务:/usr/local/nginx/sbin/nginx -s quit
检查配置文件:/usr/local/nginx/sbin/nginx -t
重新加载配置:/usr/local/nginx/sbin/nginx -s reload
查看相关进程:ps -ef | grep nginx
使用普通启动服务命令后/usr/local/nginx/sbin/nginx
,在浏览器端访问情况:
输入重新加载配置命令/usr/local/nginx/sbin/nginx -s reload
出错:
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
去掉#pid logs/nginx.pid;
的注释。
配置好后,重新加载配置文件启动。
/usr/local/nginx/sbin/nginx -s reload
我们服务端分别监听两个端口,6000``6002
。
然后客户端向8000
端口发起连接,这个是 Nginx 作为负载均衡的端口,它会将新连接轮询到两个服务端中。