我们在配置nginx时,会根据本身的项目服务的需求量,以及实际情况去配置和处理一些实际问题,这里介绍一下upstream指令,这个指令是用于配置负载均衡的,具体如下:
- # 默认的负载均衡的策略是轮询。
-
- # weight参数是主要配置负载均衡策略使用的, 称为负载均衡的 “权重”策略
-
- upstream tomcats {
- server 192.168.1.100:8080 weight=1 # 占比最小
- server 192.168.1.101:8080 weight=3 # 相对于三台服务器,该服务器接收的请求占比最大
- server 192.168.1.102:8080 weight=2 # 其次
- }
- # worker进程设置1个,便于测试观察成功的连接数
- worker_presses 1;
-
- upstream tomcats {
- server 192.168.1.100:8080 max_conns=2
- server 192.168.1.101:8080 max_conns=2
- server 192.168.1.102:8080 max_conns=2
- }
商业版,需要付费
- upstream tomcats {
- server 192.168.1.100:8080 weight=6 slow_start=60s;
- # server 192.168.1.101:8080;
- server 192.168.1.102:8080 weight=2;
- server 192.168.1.103:8080 weight=2;
- }
-
注意:
down用于标记服务节点不可用:
- upstream tomcats {
- server 192.168.1.100:8080 down;
- # server 192.168.1.101:8080;
- server 192.168.1.102:8080 weight=1;
- server 192.168.1.103:8080 weight=1;
- }
-
backup表示当前服务器节点是备用机,只有在其他的服务器都宕机以后,自己才会加入到集群中,被用户访问到:
- upstream tomcats {
- server 192.168.1.100:8080 backup;
- # server 192.168.1.101:8080;
- server 192.168.1.102:8080 weight=1;
- server 192.168.1.103:8080 weight=1;
- }
-
注意:
max_fails:表示失败几次,则标记server以宕机,剔出上有服务。
fail_timeout:表示失败的重试时间。
- upstream tomcats {
- server 192.168.1.100:8080 max_fails=2 fail_timeout=15s;
- # server 192.168.1.101:8080;
- server 192.168.1.102:8080 weight=1;
- server 192.168.1.103:8080 weight=1;
- }
-
- max_fails=2 fail_timeout=15s
-
则代表在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后再过15秒,这15秒内不会有新的请求到达刚刚挂掉的节点上,而是请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。
还有一些企业版的配置参数,可以参考官网文档:nginx documentation
keepalived:设置长连接处理的数量
proxy_http_version:设置长连接http版本为1.1
proxy_set_header:清除connection header信息
- upstream tomcats {
- # server 192.168.1.100:8080 max_fails=2 fail_timeout=1s;
- server 192.168.1.101:8080;
- # server 192.168.1.102:8080 weight=1;
- # server 192.168.1.103:8080 weight=1;
- keepalive 32;
- }
-
- server {
- listen 80;
- server_name www.tomcats.com;
-
- location / {
- proxy_pass http://tomcats;
- proxy_http_version 1.1;
- proxy_set_header Connection "";
- }
- }
-