nginx的负载均衡

Posted 秋刀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx的负载均衡相关的知识,希望对你有一定的参考价值。

nginx中的负载均衡,也是一种反向代理

 

负载:客户端向服务器发送请求,对于服务器来说就是负载;

均衡:把客户端发送的请求分配到多台服务器上称之为均衡;

  均衡不一定是平均分配,若服务器性能不均,则会根据某种规则去进行分配

负载均衡:把客户端发送的请求按照某种规则分配到多台服务器上称之为负载均衡。

 

实现负载均衡的配置:

  只需要修改反向代理的配置即可。准备的服务器有 :nginx代理服务器、web01服务器、web02服务器,并装好Tomcat。

  所有的配置均在nginx的快捷方式下完成,即/usr/locl/nginx-1.17.3中完成

  主要在修改反向代理的upstream配置

    反向代理的配置:
    upstream tomcat_server{
      server 192.168.23.151:8080;
    }
    负载均衡的配置:
    upstream tomcat_server{
      server 192.168.23.151:8080;
      server 192.168.23.152:8080;

    }

  重启nginx服务器:

    进入/usr/locl/nginx-1.17.3/sbin目录

    ./nginx   -s  reload 

    若是报错:

    nginx: [error] open() "/usr/local/nginx-1.17.3/logs/nginx.pid" failed (2: No such file or directory)

    原因是nginx服务器没有开启,只需要 在这个目录下执行 ./nginx

测试:

  在浏览器中输入nginx的IP 地址加端口号   192.168.**.**:8080

  发现访问的是web01服务器和web02服务器的Tomcat,为了区别,可以在Tomcat中的webapp下,

  ROOT项目中的index.jsp,添加一些用以区别的信息。

 

负载均衡的算法:

  默认是轮询算法:所有的服务器被交替访问

  我们可以使用配置权重的形式来改变轮询算法:权重越大,被分发到请求的越多

  upstream tomcatserver{

    server 192.168.**.**:8080 weight=2;

    server 192.168.**.**:8080;

}

  默认的权重 weight=1

    注意:1、weight默认是没有上限的,可以任意配置

       2、weight最小也只能为1,换句话说weight的值必须要大于等于1

       3、weight必须要是正数,不能出现小数

 

不宕机更新项目

  如果需要更新项目时,先停掉一台或两天服务器,其他服务器继续运行,等这两台更新完毕之后,

将其开启,然后继续更新其他服务器的项目。

  down:

    该服务器暂时不参加负载:

    upstream tomcatserver{

      server 192.168.**.**:8080 down;

      server 192.168.**.**:8080;

}

  backup:

    备用服务器:平时不用,当主服务器宕机的时候,备用服务器自动顶上,主服务器修好开始使用后,备用服务器关闭;

    upstream tomcatserver{

      server 192.168.**.**:8080 backup;

      server 192.168.**.**:8080;

}

  

反向代理的特点:

  过滤非法请求:allow(允许)  deny(禁止)

  !!!所有的安全配置必须要在proxy_pass配置之上

    location{

      deny 192.168.**.**;

  proxy_pass http://tomcatserver;

}  

 

以上是关于nginx的负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Nginx---负载均衡和缓存

使用Nginx配置TCP负载均衡

nginx负载均衡

Nginx实现负载均衡

nginx+keepalive实现负载均衡高可用

13《Nginx 入门教程》Nginx负载均衡(下)