nginx 第1章 nginx实现负载均衡 nginx 第1章 nginx实现负载均衡

2024-03-05

一、轮询(Round Robin)

这是默认的负载均衡算法,Nginx 按照请求的顺序依次将请求分配给后端的服务器。

每个服务器按照其权重来处理请求,然后按顺序循环分配。

如果后端服务不可用,会自动过滤掉。

这种算法简单且平均地将负载分配给后端服务器,适用于后端服务器配置相同、处理能力相当的场景。

upstream backend {
   server 192.168.1.101:8080;
   server 192.168.1.102:8080;
   server 192.168.1.103:8080;
}

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

二、IP哈希(IP Hash)

Nginx 根据客户端的 IP 地址进行哈希运算,并根据计算结果将请求分配给固定的后端服务器。

这种算法保证了相同的客户端 IP 每次请求都会被分配到相同的服务器,适用于需要保持会话状态的应用。 

优点:可以保证session会话,解决服务器之间session不能共享的问题。

upstream backend {
   ip_hash;
   server 192.168.1.101:8080;
   server 192.168.1.102:8080;
   server 192.168.1.103:8080;
}

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

三、加权轮询(Weighted Round Robin)

Nginx 根据每个后端服务器的配置权重将请求分配给服务器。

权重越高的服务器,处理的请求就越多。

这种方式适用于后端服务器之间配置不同、处理能力不同的情况下。

upstream backend {
   server 192.168.1.101:8080 weight=3;
   server 192.168.1.102:8080 weight=2;
   server 192.168.1.103:8080 weight=1;
}

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

四、最少连接(Least Connections)

Nginx 会统计每个后端服务器当前的活动连接数,并将请求分配给活动连接数最少的服务器,以实现负载均衡。

这种算法适用于后端服务器配置和处理能力不同、连接持续时间不均衡的场景。

upstream backend {
   least_conn;
   server 192.168.1.101:8080;
   server 192.168.1.102:8080;
   server 192.168.1.103:8080;
}
server {
   listen 80;
   location / {
       proxy_pass http://backend;
   }
}

五、url_hash

nginx 1.7.2 版本后,已经集成了 url hash 功能,可直接使用,不要安装三方模块。

url_hash 是根据 url 的 hash 结果进行分配请求,每一个 url 会固定到同一个服务器上,配合缓存使用,可以减少不必要的下载和资源时间的浪费。

每次同一个 url 请求到达同一个服务器上,第一次加载后放入缓存,后面再次请求,直接取缓存资源。

如果不采用 url_hash,可能会导致请求到达不同的服务器,资源出现重新加载的情况。

第三方的负载均衡策略需要安装第三方的插件。

upstream my_test_server_url_hash {
   hash $request_uri;
   server 192.168.0.100:8080;
   server 192.168.0.101:8080;
}

六、fair(第三方)

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

第三方的负载均衡策略需要安装第三方的插件。

upstream my_test_server_fair {
   fair;
   server 192.168.0.100:8080;
   server 192.168.0.101:8080;
}

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

阅读 118