从零开始学习Linux:Day11 Nginx之均衡 upstream

为什么要做均衡?其目的是,将前端超高并发访问转发至后端多台服务器进行处理。解决单点压力过大,造成Web服务响应过慢,严重时可导致服务器瘫痪,客户端无法访问。
负载均衡有很多技术可以做到,软件硬件都可以,硬件如F5,价格比较高,不是一般企业可以承受的。软件上,比较专业的如LVS,keepalive等,今天主要分享的是nginx本身带的负载均衡功能upstream,其功能是配置均衡池和调度方法。
以下来用upstream实现负载均衡实战
三台主机:

前端:192.168.68.128
后端1:192.168.68.129
后端2:172.18.8.176

首先配置前端192.168.68.128

#在http指令块下增加
upstream web {
  server 192.168.68.129
    server 172.18.8.176
    }

从零开始学习Linux:Day11 Nginx之均衡 upstream

# location指令块下配置proxy_pass代理
proxy_pass http://web

从零开始学习Linux:Day11 Nginx之均衡 upstream

然后配置后端两台服务器:192.168.68.129与172.18.8.176
访问192.168.68.129时,返回主机ip
从零开始学习Linux:Day11 Nginx之均衡 upstream

访问172.18.8.176时,也返回此主机的ip
从零开始学习Linux:Day11 Nginx之均衡 upstream

访问前端192.168.68.128来测试:
从零开始学习Linux:Day11 Nginx之均衡 upstream

可以看到,后端主机采用轮询方式工作,即访问前端时,第一次后端176,第二次后端129,轮询交替进行。
如果后端主机性能不一样,有的配置较高,有的已经老旧,配置较低,采用上面轮询方式显然不符合负载均衡要求。解决这个问题的办法是,采用比重的方式。
方法是在前端配置文件加入比重参数
从零开始学习Linux:Day11 Nginx之均衡 upstream
以上是访问前端3次,都由后端192.168.68.129主机提供服务,第四次时再由后端主机:172.18.8.176主机提供服务,依次交替进行。
从零开始学习Linux:Day11 Nginx之均衡 upstream

以上解决了负责均衡,后端主机性能不一时,通地比重方式处理。

现在另一个问题来了,假如你正访问购物网,看中一款商品,网页一刷新,就被代理到台端另一台服务器上了。显然这样不符合实际的应用。希望是能识别主机,也就是:当一台主机访问前端,被代理到后台一台服务器后,以后就始终被代理到这台服务器。这里用到ip_hash 根据客户端ip 请求分配到不同的服务器上。
从零开始学习Linux:Day11 Nginx之均衡 upstream
从零开始学习Linux:Day11 Nginx之均衡 upstream

假如后台服务器,假如192.168.68.129挂了,会怎样?会自动被代理到另一台后端服务器上。
还可以用upstream建立备份服务器。比如

upstream web {

        server 192.168.68.129 weight=1 max_fails=3 fail_timeout=9s;
        server 172.18.8.176 weight=1 backup;
        }

上面将172.18.8.176作为备用服务器,只有在192.168.68.129服务器挂了,不能用的时候,会自动顶上。

猜你喜欢

转载自blog.51cto.com/13292114/2499194