史上最详细的Nginx负载均衡教程

Posted PHP技术拓展

tags:

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

演示说明:

域名:weilai.cctvzxjy.com

主服务器:39.106.208.11

从服务器1:47.92.150.11

从服务器2:121.42.199.98


同步服务器件文件采用rsync+inotify同步服务器文件,下篇文章中介绍。


1、安装nginx,很简单,这里就不多介绍了,建议源码安装。

2、配置nginx

    1》反向代理

server{

                listen 80; 

                server_name weilai.cctvzxjy.com;

                location / { 

                        proxy_store off;

                       proxy_redirect  off;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                        proxy_set_header X-Real-IP $remote_addr;

                        proxy_set_header Host $http_host;

                        proxy_pass http://weilai.cctvzxjy.com;  

                }   

        }

2》负载均衡

1)轮播模式(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

http{

    upstream weilai.cctvzxjy.com{

        server 47.92.150.116:80;

        server 121.42.199.98:80;

     }

}

史上最详细的Nginx负载均衡教程

2)weight模式

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

http{

    upstream weilai.cctvzxjy.com{

        server 47.92.150.116:80 weight=10;

        server 121.42.199.98:80 weight=5;

     }

}

3)ip_hash模式

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

http{

    upstream weilai.cctvzxjy.com{

        ip_hash;

        server 47.92.150.116:80;

        server 121.42.199.98:80;

     }

}

4)fair模式(第三方软件)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。由于采用fair负载策略,配置weigth参数改变负载权重将无效。

需要下载编译fair软件(https://github.com/gnosek/nginx-upstream-fair)

http{

    upstream weilai.cctvzxjy.com{

        fair;

        server 47.92.150.116:80;

        server 121.42.199.98:80;

     }

}

5)url_hash模式(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法,剩下参数自己查阅。

http{

    upstream weilai.cctvzxjy.com{

        server 47.92.150.116:80;

        server 121.42.199.98:80;

        hash $request_uri;

        hash_method crc32;

     }

}

每个设备的状态设置为:
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

6.max_conns:限制分配给某台Server处理的最大连接数量,超过这个数量,将不会分配新的连接给它。默认为0,表示不限制。注意:1.5.9之后的版本才有这个配置。

7.resolve:将server指令配置的域名,指定域名解析服务器。

需要在http模块下配置resolver指令,指定域名解析服务。

http{

    resolve 192.168.0.2:80;

    upstream weilai.cctvzxjy.com{

        server 192.168.0.1:80 max_conns=1000;

        server 192.168.0.1:80 down;

        server 192.168.0.1:80 weight=10 max_fails=3 fail_timeout=15;

        server 192.168.0.1:80 backup;

        server 192.168.0.1:80 resolve;

    }

}

配置忘不要忘记重启nginx服务器!!!!

3》演示(默认的轮训模式,其他模式自行测试)

第一次请求

史上最详细的Nginx负载均衡教程

第二次请求

史上最详细的Nginx负载均衡教程


第三次请求

第四次请求


同步服务器件文件采用rsync+inotify同步服务器文件,下篇文章中介绍。

以上是关于史上最详细的Nginx负载均衡教程的主要内容,如果未能解决你的问题,请参考以下文章

史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)

WebSocket协议+Nginx动态负载均衡(史上最全)

详细聊聊:Nginx负载均衡配置与负载策略

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

12《Nginx 入门教程》Nginx负载均衡(上)

【SpringCloud-Alibaba系列教程】5.负载均衡