nginx upstream 6种负载均衡策略介绍

upstream参数

参数 描述
service 反向服务地址加端口
weight 权重
max_fails 失败多少次,认为主机已经挂掉,踢出
fail_timeout 踢出后重新探测时间
backup 备用服务
max_conns 允许最大连接数
slow_start 当节点恢复,不立即加入

负载均衡策略

轮询(默认)

每个请求会按照时间逐一分配到不同的后端服务器上

upstream test {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

也就是说我的第一个请求会落在10服务上,第二个会落在11,第三个10,第四个11…

权重

权重越大,访问的几率就越大

如果服务器处理性能有差异,可以降性能好的,权重大一点;处理性能低的权重小一点。

upstream test {
    server 192.168.1.10:8080 weight=7;
    server 192.168.1.11:8080 weight=3;
}
ip_hash

每个请求按访问的iphash结果分配,这样每台服务器固定一个后端服务

upstream test {
    ip_hash;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

这个一般用于session数据的保存,因为服务之间不能切换,不然切换服务后session会失效,固定后端服务,保证session不丢失。

least_conn最少连接

把连接转发到较少的后端服器上

upstream test {
    least_conn;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}
fair

公平地按照后端服务器的响应时间(rt)来分配请求,响应时间(rt)小的后端服务器优先分配请求。

upstream test {
    fair;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}
url_hash

与 ip_hash类似,但是按照访问 url 的 hash 结果来分配请求,使得每个 url 定向到同一个后端服务器,主要应用于后端服务器为缓存的场景下。

upstream test {
    hash $request_uri;
    #指定hash算法
    hash_method crc32;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

你可能感兴趣的:(nginx,负载均衡,运维)