nginx中的负载均衡

文章类型:nginx

发布者:admin

发布时间:2023-04-17

一:定义

1:是指将网络或计算资源的工作负载分配到多个服务器、网络链接或其他计算资源上,以提高系统的性能、可靠性和可扩展性。

2:多种方式实现,如硬件负载均衡器、软件负载均衡器、DNS负载均衡和虚拟IP负载均衡等。

3:使用算法来决定如何分配负载,例如基于轮询、基于权重、基于最少连接数等等。

4:可以检测到故障或性能问题,并将请求重新分配到可用的资源上,以确保高可用性和性能。

5:可以减少特定节点的负载,从而避免过度使用资源,提高系统的可靠性和可扩展性。

二:使用方法

1:配置

# upstream 指定后端服务器地址
# weight 设置权重
# server 中会将 http://webcanteen 的请求转发到 upstream 池中
upstream webcanteen {
server 127.0.0.1:66 weight=10;
server 127.0.0.1:77 weight=1;
server 127.0.0.1:88 weight=1;}
server {
location / {
proxy_pass http://webcanteen
}
}

2:状态

down:当前服务器不参与负载均衡

backup:当其他节点都无法使用时的备用服务器

max_fails:允许请求失败的次数,若到达就会休眠

fail_timeout:经过 max_fails 次失败后,服务器的暂停时间,默认为 10s

max_conns:限制每个服务器的最大接收连接数

upstream webcanteen { 
server 127.0.0.1:66 down;
server 127.0.0.1:77 backup;
server 127.0.0.1:88 max_fails=3 fail_timeout=10s;
server 127.0.0.1:99 max_conns=1000;
}

三:分配方式

1:轮询(默认),按照时间顺序轮流分配到不同的后端服务器,如果某台后端服务器宕机,Nginx 轮训列表会自动将它去除掉;

2:weight(加权轮询),轮询的加强版,weight 和访问几率成正比,

3:ip_hash,每个请求按照访问 IP 的 hash 结果分配,访问可以固定访问一个服务器;

4:url_hash,按照访问 URL 的 hash 结果来分配请求,每个 URL 定向到同一个服务器上,

5:自定义 hash,基于任意关键字作为 hash key 实现 hash 算法的负载均衡;

6:fair,按照服务器的响应时间来分配请求,响应时间短则优先分配。