通过 upstream 可以设定后端服务器,指定的方式可以是 IP 地址与端口、域名、UNIX 套接字(socket)。其中如果域名可以被解析为多个地址,则这些地址都作为 backend。
upstream backend {
server lxsym.blog.51cto.com;
server 192.168.11.68:8080;
server unix:/tmp/backend3;
}
upstream模块负载均衡分配方式有:
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight(常用)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream tel_img_stream {
server 192.168.11.68:20201 weight=100;
server 192.168.11.69:20201 weight=100;
}
2、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream tel_img_stream {
#ip_hash;
server 192.168.11.68:20201;
server 192.168.11.69:20201 weight=100 down;
server 192.168.11.70:20201 weight=100;
server 192.168.11.71:20201 weight=100 backup;
server 192.168.11.72:20201 weight=100 max_fails=3 fail_timeout=30s;
}
说明:
1).down 表示当前的server暂时不参与负载
2).weight 默认为1.weight越大,负载的权重就越大。
3).backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
4).上例中192.168.11.72:20201 设置最大失败次数为 3,也就是最多进行 3 次尝试,且超时时间为 30秒。max_fails 的默认值为 1,fail_timeout 的默认值是 10s。
注意,当upstream中只有一个 server 时,max_fails 和 fail_timeout 参数可能不会起作用。
weight\backup 不能和 ip_hash 关键字一起使用。
3、fair、url_hash暂时不做介绍
最后在需要使用负载均衡的server中增加 proxy_pass http://tel_img_stream/;
获取访问head信息
location ~* ^/tel_img/(.*)$
{
proxy_pass http://tel_img_stream;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡。
若有什么补充可以留言~
转载于:https://blog.51cto.com/lxsym/852348