Nginx集群配置配置
1. upstream配置集群
upstream tomcats {
server 192.168.16.100:8080;
server 192.168.16.101:8080;
server 192.168.16.102:8080;
}
2. 指令参数:weight
weight=number
upstream tomcats {
server 192.168.16.100:8080 weight=1;
}
Nginx负载均衡默认使用轮询的方式,即每台节点默认的 weight=1 ;
通过修改weight的值配置每个server节点的权重,配置值越大权重越大,即用户请求时访问到server节点的几率就越大
3. 指令参数:max_conns
max_conns=number
upstream tomcats {
server 192.168.16.100:8080 max_conns=200;
}
设置upstream节点服务器的每个工作进程(worker_processes)的最大连接数,默认值为0,表示没有限制;该配置想可以防止服务器过载,起到限流的作用
4. 指令参数:slow_start
slow_start=time;仅支持商业版
upstream tomcats {
server 192.168.16.100:8080 slow_start=2s;
server 192.168.16.100:8080 slow_start=12s;
}
设置server节点慢慢的加入集群;设置slow_start后server节点默认权重(weight)会被覆盖成0,然后在设置的时间里慢慢的升级server节点权重(weight)到原本配置的权重值;
即server节点如果配置weight=10,server节点启动后会先变成weight=0,然后设置的时间里慢慢升到weight=10;
默认值为0,默认为关闭状态;
该参数不能使用到 Hash 和 random 的负载均衡中, 该参数不能使用在单个server节点中,必须使用在多个server节点中
5. 指令参数:down
upstream tomcats {
server 192.168.16.100:8080 down;
server 192.168.16.100:8080;
}
表示server节点不可用
6. 指令参数:backup
upstream tomcats {
server 192.168.16.100:8080;
server 192.168.16.100:8080 backup;
}
表示server节点为备用机,备用机一开始不会被用户访问,当其他的server节点宕机后备用机才会被用户访问到
7. 指令参数:max_fails/fail_timeout
upstream tomcats {
server 192.168.16.100:8080 max_fails=2 fail_timeout=15s;
}
max_fails:表示失败几次,则标记server已宕机,剔出上游服务;
fail_timeout:表示失败的重试时间;
假设目前设置如下:
max_fails=2 fail_timeout=15s
则代表在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后再过15秒,这15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复
8. keepalived
Keepalived 提高吞吐量
upstream tomcats {
server 192.168.16.100:8080;
keepalived 32;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
keepalived:设置长连接处理的数量;避免链接频繁的创建和销毁
proxy_http_version:设置长连接http版本为1.1,默认1.0,不是长连接
proxy_set_header:清除connection header 信息
9. 负载均衡 ip_hash
ip_hash 可以保证用户访问可以请求到上游服务中的固定的服务器,前提是用户ip没有发生更改。
使用ip_hash的注意点:
- 一旦使用了ip_hash,当我们需要移除一台服务器的时候,不能直接删除这个配置项,而是需要在这台服务器配置后面加上关键字down,表示不可用;因为如果直接移除配置项,会导致hash算法发生更改,后续所有的请求都会发生混乱
算法:hash(ip(192.168.1))%node_counts = index
upstream tomcats {
ip_hash;
server 192.168.1.173:8080;
server 192.168.1.174:8080 down;
server 192.168.1.175:8080;
}
10. 负载均衡 url_hash 与 least_conn
根据每次请求的url地址,hash后访问到固定的服务器节点
算法:hash(url)%node_counts = index
upstream tomcats {
# url hash
hash $request_uri;
# least_conn 根据最少连接数的服务器进行请求,减少其他服务器的压力
least_conn
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
}
}