首先搭建3台服务器,这里我的服务器ip分别是
外网ip 内网ip
111.230.197.188 172.16.16.14
134.175.190.199 172.16.16.13
129.204.153.252 172.16.16.9
其中111.230.197.188作为代理服务器 ,134.175.190.199作为节点1,129.204.153.252 作为节点2,目的是当我访问代理服务器时,会被自动分配到节点1,节点2上
1.安装nginx
因为centos7中没有nginx的源,Nginx官网提供了Centos的源地址。因此可以如下执行命令添加源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装nginx
yum install -y nginx
启动nginx
systemctl start nginx.service
设置nginx开机自启
systemctl enable nginx.service
nginx检查配置文件
nginx -t
nginx 重启
nginx -s reload
或service nginx restart
或systemctl restart nginx.service
nginx 停止
service nginx stop
nginx开启
service nginx start
查看nginx 运行状态
service nginx status
2.负载均衡的配置
nginx 配置文件 /etc/nginx/conf.d/default.conf
server节点上面,加入upstream节点(如图所示)
将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称,即“http://111.230.197.188”.(upstream名称可以自定义设置,但是前后一定要对应好)
到这里nginx的负载均衡初步配置完成,此时upstream依照轮询(默认)方式进行负载,每一个请求按时间顺序逐一分配到不同的后端服务器。假设后端服务器down掉。能自己主动剔除。尽管这样的方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。
除此之外,upstream还有其他的分配策略:
weight(权重)
指定轮询几率,weight和訪问比率成正比,用于后端服务器性能不均的情况。例如以下所看到的。172.16.16.13的訪问比率要比172.16.16.9的訪问比率高5倍。
ip_hash(訪问ip)
每一个请求按訪问ip的hash结果分配。这样每一个訪客固定訪问一个后端服务器,能够解决session的问题。
fair(第三方)
按后端服务器的响应时间来分配请求。响应时间短的优先分配。与weight分配策略相似。
url_hash(第三方)
按訪问url的hash结果来分配请求,使每一个url定向到同一个后端服务器。后端服务器为缓存时比較有效。这个目前还没有研究。