zoukankan      html  css  js  c++  java
  • nginx 负载均衡的配置

    为了保证系统的稳定性,一台服务器的风险比较大,如果出现大流量的活动,其中的一条服务器无法工作,则会导致整个服务挂掉,因此多引入一台服务器来进行负载均衡,不会担心在负载均衡模式下因为某台机子宕机而拖累整个站点了。 NGINX的负载均衡是怎么实现的呢?

    负载均衡的实现有以下4种模式:

    1)、轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    2)、weight
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    2)、ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    3)、fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    4)、url_hash(第三方)

    思路:将用户的请求经过代理服务器,将请求按照一定的算法分配到不同的应用服务器中。

    在自己本机上模拟 NGINX代理和负载均衡的实现。

    代理服务器的访问端口为:80

    代码部署在三台不同的服务器中,这里以8080,8090,8091三个不同的端口作为区分。

    配置如下:

    1:打开nginx.cnf文件

    在http节点下添加upstream节点:

        # 负载均衡的配置
        # Nginx基于连接探测,如果发现后端异常,在单位周期为fail_timeout设置的时间,中达到max_fails次数,
        # 这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。
        upstream dev.nginx.test.com {
            #ip_hash; //ip_hash的配置,直接加一行就可以了,这样只要是同一个ip过来的都会到同一台server上
            #server 10.10.12.245:9000 weight=100000;
            server 127.0.0.1:8090 weight=1 max_fails=3 fail_timeout=10s;
            server 127.0.0.1:8091 weight=1 max_fails=3 fail_timeout=10s;
            server 127.0.0.1:8080 weight=1 max_fails=3 fail_timeout=10s;
    #server 127.0.0.1:8091 weight=1 backup | down;
    }

     其中 dev.nginx.test.com  是自己取的名字,最后会通过这个名字在url里访问的

    2: 配置站点server

    server {
            listen       80;
            server_name  dev.nginx.test.com;
            # 跳转配置
            location / {
                proxy_pass http://dev.nginx.test.com;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                
            }
         
            error_page  500 502 503 504  /50x.html;
            location = /50x.html {
                root html;
            }
        }

    80端口作为代理服务器,收集用户的请求,将用户的请求分发到各个不同的应用服务器中实现负载均衡。

    server{
            listen 8080 ; 
            server_name dev.nginx.test.com;
            index index.html;
            root  "D:php_workdev.nginx.test.com8080" ;
        }
        server{
            listen 8090 ; 
            server_name dev.nginx.test.com;
            index index.html;
            root  "D:php_workdev.nginx.test.com8090" ;
        }
        server{
            listen 8091 ; 
            server_name dev.nginx.test.com;
            index index.html;
            root  "D:php_workdev.nginx.test.com8091" ;
        }

    三:配置三个站点,来查看负载均衡的现象。

     

    四:重启NGINX服务器,来查看效果。

    分别访问来看下效果:

     

     

     三次请求都被NGINX代理服务器转发到三个不同的应用服务器上了(这里是以端口来区分)

    主备配置:

    下面是主备的配置:

    还是在upstream里面

    upstream dev.nginx.test.com {
       server 127.0.0.1:8091 weight=1;
       server 127.0.0.1:8090 weight=1 backup;
     }

    设置某一个节点为backup,那么一般情况下所有请求都访问server1,当server1挂掉或者忙的的时候才会访问server2

    upstream dev.nginx.test.com {
       server 127.0.0.1:8091 weight=1;
       server 127.0.0.1:8090 weight=1 down;
     }

    设置某个节点为down,那么这个server不参与负载。

  • 相关阅读:
    微信公众账号报错 返回码说明
    2013与2014之流水
    【Leetcode刷题】字符串模式匹配算法知多少
    【数据库测试工具】认识Sysbench
    【论文笔记】《基于深度学习的中文命名实体识别研究》阅读笔记
    分享一份关于Hadoop2.2.0集群环境搭建文档
    【Java实践】Kettle从一次实验说起
    【资源共享】eBook分享大集合
    java入门知识
    python编程规范系列--建议08~18
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/13263152.html
Copyright © 2011-2022 走看看