Nginx-5 负载均衡

一、负载均衡算法

upstream 支持4种负载均衡调度算法

A、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;

B、ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。

C、url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。

D、fair:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair模块。

二、配置实例

反向代理(负载均衡):--------- 10.3.134.72 (有nginx)
web1 服务器:-------- 10.3.134.99 (有nginx)
web2 服务器:-------- 10.3.134.111 (有nginx)
客户端:-------------------------------10.3.134.127

Web服务器操作

测试为了便于识别,两台服务器的网页内容不一样;正常生产中必须保持一致

web1(编译安装的nginx,需要自己加路径)

image.png
[root@mpn-salve ~]# mkdir -p /ding/html/
[root@mpn-salve ~]# vim /ding/html/index.html 
this is web1 AAAAAAAAAAAAAAAAAAAA

web2(yum安装的nginx,已经有路径)

[root@yum-n ~]# vim /usr/share/nginx/html/index.html 
This is web2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
~                                               

1、热备:

如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦(宕机),BBBBBBBBBBBBBB.....

upstream myweb { 
      server 10.3.134.99; 
      server 10.3.134.111 backup;  #热备     
    }
image.png

2、轮询:

nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB....

upstream myweb { 
      server 10.3.134.99; 
      server 10.3.134.111;     
    }

3、加权轮询:

跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB....

upstream myweb { 
      server 10.3.134.99 weight=1;
      server 10.3.134.111 weight=2;
}

4、ip_hash:

nginx会让相同的客户端ip请求相同的服务器。

upstream myweb { 
      server 10.3.134.99; 
      server 10.3.134.111;     
      ip_hash;
    }

5、nginx负载均衡配置状态参数

  • down,表示当前的server暂时不参与负载均衡。
  • backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间单位秒。max_fails可以和fail_timeout一起使用。
 upstream myweb { 
      server 10.3.134.99 weight=2 max_fails=2 fail_timeout=2;
      server 10.3.134.111 weight=1 max_fails=2 fail_timeout=1;    
    }

如果你像跟多更深入的了解 nginx 的负载均衡算法,nginx官方提供一些插件大家可以了解下。

推荐阅读更多精彩内容