史上最详细的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;
}
}
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》演示(默认的轮训模式,其他模式自行测试)
第一次请求
第二次请求
第三次请求
第四次请求
同步服务器件文件采用rsync+inotify同步服务器文件,下篇文章中介绍。
以上是关于史上最详细的Nginx负载均衡教程的主要内容,如果未能解决你的问题,请参考以下文章