负载均衡

将请求分摊到多台nginx服务器上,避免由于单台服务器负载过大而导致的请求延迟和响应速度慢等问题。

配置示例

与反向代理核心配置一样,只是多了一个upstream块,用于定义后端服务器列表。

upstream www {
        server 172.37.150.109:80 weight=50 max_fails=3 fail_timeout=30s;
        server 172.37.150.101:80 weight=100;
        server 172.37.150.110:80 down;
        server 172.37.150.112:80 backup;
}
server
{
    listen 80;
    server_name www.lwz1.com;
    location / {
        proxy_pass http://www/;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

注:如果某个后端服务器中有多个项目,可以更改端口号来区分。

解析:

  • upstream:定义负载均衡器的名称,以及负载均衡算法

  • server:定义后端服务器,以及服务器权重和状态

    • weight:定义服务器的权重,权重越大,分到的请求越多

    • down:表示该服务器暂时不参与负载

    • backup:表示该服务器为备用服务器,当其他服务器都宕机或繁忙时,才会使用该服务器

    • max_fails:定义最大失败次数,默认为1。当失败次数达到设定的值,就认为该机器down掉了。失败的指标是由proxy_next_upstream模块定义,其中404状态码不认为是失败。

    • fail_timeout:定义失败的超时时间,也就是说在该时间段内达到max_fails,才算真正的失败。默认是10秒。

  • proxy_pass 负载均衡名称:定义请求转发的地址

  • proxy_set_header:定义请求头,将客户端的IP地址、请求的域名等信息传递给后端服务器