说明
亲测原稿。技术来源于网络
负载至少需要三台以上服务器(或者三个以上访问端口,如果一台机器上开三个不同的端口,访问压力还是在一台服务器上达不到负载的目的,测试可以开三个端口。)
使用三台centos7机器,每台都装上nginx
192.168.198.229(前置负载)
192.168.198.221(web1)
192.168.198.222(web2)
将域名(www.fz.com)指向前置机(192.168.198.229)
web机器不一定要装nginx也可以使用其他服务器软件,如Apache,Node.js等。
Nginx负载配置
nginx负载实现主要在前置负载机中配置反向代理到其他机器。
- 每台服务器可以单独访问,并修改主页显示内容为改机器ip尾号(为了方便测试)
前置机负载机:229
将域名www.fz.com指向192.168.198.229机器并可以使用域名访问
web1:221
web2:222
- 修改前置机conf
在http内加入以下代码(大致36行)
upstream www.fz.com{
server 192.168.198.221;
server 192.168.198.222;
}
server{
listen 80;
server_name www.fz.com;
location / {
proxy_pass http://www.fz.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启nginx
/www/lnmp/nginx/sbin/nginx -s reload #重新载入配置文件
/www/lnmp/nginx/sbin/nginx -s reopen #重新启动nginx
刷新页面
这个时候发现已经实现了负载。其实要布置多个项目到web机上还需要配置web机上的conf
- 负载比重
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream www.fz.com{
server 192.168.198.221 weight=1; #访问比例为1/6
server 192.168.198.222 weight=5; #访问比例为5/6
}
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream www.fz.com{
ip_hash;
server 192.168.198.221;
server 192.168.198.222;
}
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
nginx支持同时设置多组的负载均衡,用来给不用的server来使用
client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡