Nginx负载均衡策略基础

upstream机制提供了负载均衡的功能,可以将请求负载分担到集群服务器的某个服务器上面。它的工作流程如下:

1)分析客户端请求报文,构建发往上游服务器的请求报文;

2)调用ngx_http_upstream_init开始与上游服务器建立TCP连接;

3)发送在第一步中组建的请求报文;

4)接收来自上游服务器的响应头并进行解析,之后往下游转发;

5)接收来自上游服务器的相应体,并进行转发。

upstream支持6种负载分配方式,前三种为Nginx原生支持的分配方式,后三种为第三方支持的分配方式。

1. Nginx轮询

轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器宕掉后,则能自动将其剔除,剩下的继续轮询。

upstream cms.cat {
    server 192.168.1.10:8081;
    server 192.168.1.11:8081;
}

2. Nginx权重

权重是轮询的加强版,即在轮询的基础上还可以指定轮询比率,weight和访问概率成正比,主要应用于应用服务器性能不均的情况。Nginx权重实现如代码清单所示,这里192.168.1.11的访问比例是192.168.1.10的两倍。

upstream cms.cat {
    server 192.168.1.10:8081 weight=1;
    server 192.168.1.11:8081 weight=2;
}

3. Nginx ip_hash

ip_hash即每个请求会按照访问IP的hash值分配,这样同一客户端连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。如果服务器宕掉,则能自动将其剔除。

upstream cms.cat {
    ip_hash
    server 192.168.1.10:8081;
    server 192.168.1.11:8081;
}

4. Nginx fair

fair即按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream cms.cat {
    server 192.168.1.10:8081;
    server 192.168.1.11:8081;
    fair;
}

5. Nginx url_hash

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

upstream cms.cat {
    server 192.168.1.10:8081;
    server 192.168.1.11:8081;
    hash $request_uri;
    hash_method crc32;
}

6. Nginx least_conn

least_conn把请求转发给连接数较少的后端服务器。

upstream cms.cat {
    least_conn;    #把请求转发给连接数较少的后端服务器
    server 192.168.1.10:8081;
    server 192.168.1.11:8081;
}


网络 Nginx

本文链接:

https://coolhu.com/Nginx负载均衡策略基础.html

你必须登录后才能发表评论

0 评论