Nginx负载均衡(centos7)

说明

亲测原稿。技术来源于网络

负载至少需要三台以上服务器(或者三个以上访问端口,如果一台机器上开三个不同的端口,访问压力还是在一台服务器上达不到负载的目的,测试可以开三个端口。)

使用三台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负载实现主要在前置负载机中配置反向代理到其他机器。

  1. 每台服务器可以单独访问,并修改主页显示内容为改机器ip尾号(为了方便测试)
    前置机负载机:229

    将域名www.fz.com指向192.168.198.229机器并可以使用域名访问

    web1:221

    web2:222
  2. 修改前置机conf
    在http内加入以下代码(大致36行)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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
    1
    2
    /www/lnmp/nginx/sbin/nginx -s reload         #重新载入配置文件
    /www/lnmp/nginx/sbin/nginx -s reopen #重新启动nginx
    访问http://www.fz.com

    刷新页面

这个时候发现已经实现了负载。其实要布置多个项目到web机上还需要配置web机上的conf
3. 负载比重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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进行匹配.可以进行重定向或者进行新的代理 负载均衡