声明
Nginx共支持5种负载方式,以此来实现相关的请求流量分派。通过在不同机器上计算。最终结果返回用户。
值得一提的是,以下负载方式,没有经过博主验证过,在实际使用使用待调试。
有什么错误发现,还望提醒!!!
图解理解
轮询分派
upstream loop{
server 127.0.0.1:8080
server 127.0.0.1:7080
server 127.0.0.1:6305
}
按照默认轮询的方式进行负载,
假设后端server down掉,能自己剔除。
缺点:可靠性地,负载不均衡,机器性能可能不一致
权重分派
upstream loopweight{
server 127.0.0.1:8080 weight = 5;
server 127.0.0.2:7080 weight = 5;
server 127.0.0.3:6305 weight = 10;
}
考虑1和2的机器配置低,或者1和2的性能不如3的时候
这样将3的权重设置大一些,更多的请求会被分配到3上。
为1和2分担更多的请求。
IP哈希
upstream iphash{
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.2:7080;
server 127.0.0.3:6305;
}
这里的IP说的是客户端的出口IP,这样经过 des_server_ip = hash(ip)
相应的ip在没有down掉的情况下,肯定会hash到固定的ip上。
URL哈希
upstream urlhash{
server 127.0.0.1:8080;
server 127.0.0.2:7080;
server 127.0.0.3:6305;
hash $request_uri;
hash_method crc32;
}
按照URI进行哈希,固定的URI Hash到固定的server上。
性能,相应时间分派
upstream iphash{
server 127.0.0.1:8080;
server 127.0.0.2:7080;
server 127.0.0.3:6305;
fair;
}
性能,相应时间分派:
按后端服务器的响应时间来分配请求。响应时间短的优先分配。
down And backup
upstream iphash{
server 127.0.0.1:8080 down; #当前server不参与负载
server 127.0.0.2:7080;
server 127.0.0.3:6305 backup; #非backup的机器(参与负载的机器),down掉或者忙的时候,请求backup机器。备用机
fair;
}
应用
listen 80
server_name www.domain.com
location ~^ /api{
proxy_pass http://loopweight #选择一种你喜欢的负载策略