算法
调度算法 概述
轮询 按时间顺序逐一分配到不同的后端服务器(默认)
weight 加权轮询,weight值越大,分配到的访问几率越高
ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
least_conn 将请求传递到活动连接数最少的服务器
weiget与ip_hast 不能同时使用。
ip_hash : 解决会话保持的问题,但会造成一个节点压力过大,其他节点没压力。
weight用法
upstream load_pass {
server 10.0.0.7:80 weight=5;
server 10.0.0.8:80;
}
ip_hast用法
upstream load_pass {
ip_hash;
server 10.0.0.7:80;
server 10.0.0.8:80;
}
Web服务器在负载均衡调度中的状态
状态 概述
down 当前的server暂时不参与负载均衡 相当于注释
backup 预留的备份服务器
max_fails 允许请求失败的次数
fail_timeout 经过max_fails失败后, 服务暂停时间
max_conns 限制最大的接收连接数
案例:
使用nginx负载均衡时,如何将后端请求超时的服务器流量平滑的切换到另一台上。如果后台服务连接超时,Nginx是本身是有机制的,如果出现一个节点down掉的时候,Nginx会更据你具体负载均衡的设置,将请求转移到其他的节点上,但是,如果后台服务连接没有down掉,但是返回错误异常码了如:504、502、500,应该如何处理?
可以在负载均衡添加如下配置proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404;意思是,当其中一台返回错误码404,500...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率。
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_blog.yang.com.conf
upstream blog {
server 172.16.1.7:80;
server 172.16.1.8:80;
}
server {
listen 80;
server_name blog.yang.com;
location / {
proxy_pass http://blog;
include proxy_params;
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
}
}