Nginx负载均衡探活max_fails和fail_timeout的设置、根据参数转发upstream

Nginx负载均衡max_fails和fail_timeout的设置作用,直接贴配置上,看干货

server {
listen 80;
server_name xxxx.ikong.com;
location / {
                proxy_pass http://$pool;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
upstream loadbalance_1 {
       server 192.168.20.216:8080 weight=8 max_fails=1 fail_timeout=30s;
       server 192.168.20.217:8080 weight=1 max_fails=1 fail_timeout=30s;
       server 192.168.20.218:8080 weight=1 max_fails=1 fail_timeout=30s;
}

upstream loadbalance_2 {
        server 192.168.20.211:8081 weight=3;
        server 192.168.20.212:8081 weight=3;
        server 192.168.20.213:8089 weight=2;
        server 192.168.20.214:8089 weight=2;
}

map $http_header_param_key $pool {
     default "loadbalance_2";
     header_param_key_3 "loadbalance_1";
     header_param_key_1 "loadbalance_1";
     header_param_key_2 "loadbalance_1";
}

这里会把 header中 param_key 这个参数拿出来跟$pool 中设置的header_param_key的key进行比较,命中的如:header_param_key_3 会转发到loadbalance_1,没有命中的会转发到默认loadbalance_2;

 weight=8 max_fails=1 fail_timeout=30s;

weight 作用:流量切割

max_fails=1 fail_timeout=30s; 转发给后端服务时,若发现后端服务故障,则将请求转发给其他节点进行处理,并将服务器标记为故障、在30s时间内不再转发给故障服务器。30s后重试转发给故障服务器,若仍旧不成功则重复刚才的操作;

整体来看不影响试错的请求;


版权声明:本文为philip502原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。