关键技术:nginx upstream
基本语法说明
在进行实际操作之前我们先进行简单的介绍nginx upstream 的一些基础使用方法。
基本结构 :upstream name{指令…} 基本配置例子,如下:
upstream uname{
server ip;
server ip;
#多个ip 以此往下递增
}
server{
location /{
proxy_pass http://uname/; #转发upstream
#此处需要注意uname为upstream 的名字,且最后有/
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}
server 指令的基本语法 server address [配置参数…]
配置参数 参数说明 使用示例
weight 服务器权重,权重越搞访问次数越高 weight =1
max_fails 访问失败多少次后踢出,表示为宕机 max_fails=2
fail_timeout 踢出后重新探测服务器是否正常的时间,单位s fail_timeout=20
max_connsr 服务器的最大连接数量,默认为0,不限制 max_connsr=100
backup 标记服务器为备用,当其他服务器都不可用时才会访问此服务器(轮询下可用) backup
down 标记服务器为宕机状态,暂不参与负载策略 down
指令使用示例[轮询策略]
轮询策略:nginx按加权轮转的方式将请求分发到各服务器,常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能。比如以下配置第一会访问192.168.0.1,第二次和第三次会访问到192.168.0.2,第四次又访问192.168.0.1,以此类推。
upstream uname{
server 192.168.0.1 weight=1 max_fails=2 max_connsr=100 backup;
server 192.168.0.2 weight=2 max_fails=2 max_connsr=100 ;
}
iphash策略
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,而不是像轮询那样,没次访问都会再重新分配。
upstream uname{
ip_hash;
server 192.168.0.1 weight=1 max_fails=2 max_connsr=100 backup;
server 192.168.0.2 weight=2 max_fails=2 max_connsr=100 ;
}
least_conn
将你新来的访问转发到访问量最少的服务器上,保证了每个服务器的服务数量尽可能的平等
upstream uname{
least_conn;
server 192.168.0.1;
server 192.168.0.2 ;
}
fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。保证性能最好的服务器能够充分发挥。
upstream uname{
server 192.168.0.1;
server 192.168.0.2 ;
fair;
}