Skip to content

nginx 负载均衡

负载均衡

负载

名称说明
轮询默认方式
weight权重方式
ip_hash依据ip分配方式
least_conn最少连接方式
fair(第三方)响应时间方式
url_hash(第三方)依据URL分配方式

策略

方法作用
fail_timeout与max_fails结合使用。
max_fails设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了。
fail_time服务器会被认为停机的时间长度,默认为10s。
backup标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
down标记服务器永久停机了。

配置

默认轮询

text
http{
    upstream httpd{
        # 默认轮询
        server 192.168.152.101;
        server 192.168.152.102;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://httpd;
        }
    }
}

权重

text
http{
    upstream httpd{
        # 按照权重分配链接
        server 192.168.152.101 weight=10;
        server 192.168.152.102 weight=20;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://httpd;
        }
    }
}

ip_hash

text
http{
    upstream httpd{
        ip_hash;  #保证每个访客固定访问一个后端服务器
        server 192.168.152.101 weight=10;
        server 192.168.152.102 max_fails=3 fail_timeout=20s;
        server 192.168.152.103 down; #下线
        server 192.168.152.104 backup; #主节点宕机时启用
    }

    server {
        listen 80;
        location / {
            proxy_pass http://httpd;
        }
    }
}

最少链接

bash

http{
    upstream httpd{
        least_conn;  #把请求转发给连接数较少的后端服务器
        server 192.168.152.101 weight=10;
        server 192.168.152.102 max_fails=3 fail_timeout=20s;
        server 192.168.152.103 down; #下线
        server 192.168.152.104 backup; #主节点宕机时启用
    }

    server {
        listen 80;
        location / {
            proxy_pass http://httpd;
        }
    }
}

第三方 (fair|url_hash)

同理第三方模块需要提前安装 https://github.com/gnosek/nginx-upstream-fair