为什么要做平衡?其目的是,将前端超高并发接见转发至后端多台服务器举行处置。解决单点压力过大,造成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
    }

# location指令块下设置proxy_pass署理
proxy_pass http://web

然后设置后端两台服务器:192.168.68.129与172.18.8.176
接见192.168.68.129时,返回主机ip

接见172.18.8.176时,也返回此主机的ip

接见前端192.168.68.128来测试:

可以看到,后端主机接纳轮询方式事情,即接见前端时,第一次后端176,第二次后端129,轮询交替举行。
若是后端主机性能纷歧样,有的设置较高,有的已经老旧,设置较低,接纳上面轮询方式显然不符合负载平衡要求。解决这个问题的设施是,接纳比重的方式。
方式是在前端设置文件加入比重参数

以上是接见前端3次,都由后端192.168.68.129主机提供服务,第四次时再由后端主机:172.18.8.176主机提供服务,依次交替举行。

以上解决了卖力平衡,后端主机性能纷歧时,通地比重方式处置。

现在另一个问题来了,如果你正接见购物网,看中一款商品,网页一刷新,就被署理到台端另一台服务器上了。显然这样不符合现实的应用。希望是能识别主机,也就是:当一台主机接见前端,被署理到后台一台服务器后,以后就始终被署理到这台服务器。这里用到ip_hash 凭据客户端ip 请求分配到差别的服务器上。

如果后台服务器,如果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服务器挂了,不能用的时刻,会自动顶上。