Nginx是一款高性能HTTP和反向代理服务器,它也提供了多种负载均衡策略,以下是Nginx中常用的负载均衡策略@mikechen
1.轮询(Round Robin)
将请求按顺序依次分配给后端服务器,默认的负载均衡策略。
- 假设有三台后端服务器:A、B、C。
- 请求依次按顺序分配给后端服务器:A → B → C → A → B → C → …
配置如下:
http { upstream backend { server 192.168.0.1; server 192.168.0.2; server 192.168.0.3; } server { listen 80; location / { proxy_pass http://backend; } } }
2.IP 哈希(IP Hash)
根据客户端的IP地址将请求分配给后端服务器,相同IP的客户端总是被分配到同一台服务器上,有利于保持会话信息。
配置如下:
http { upstream backend { ip_hash; server 192.168.0.1; server 192.168.0.2; server 192.168.0.3; } server { listen 80; location / { proxy_pass http://backend; } } }
3.最少连接(Least Connections)
将请求分配给当前连接数最少的后端服务器,通过实时监测后端服务器的连接数来决定请求的分配。
- 假设有三台后端服务器:A、B、C
- 当前连接数为:A(5)、B(3)、C(2)
- 新的请求将被分配给连接数最少的服务器C
配置如下:
http { upstream backend { least_conn; server 192.168.0.1; server 192.168.0.2; server 192.168.0.3; } server { listen 80; location / { proxy_pass http://backend; } } }
4.加权轮询(Weighted Round Robin)
为每个后端服务器分配一个权重值,根据权重值比例分配请求,权重越高的服务器分配到的请求数量越多。
- 假设有三台后端服务器:A(权重2)、B(权重1)、C(权重3)。
- 请求将按照权重比例分配给后端服务器:A(2次)→ B(1次)→ C(3次)→ A(2次)→ C(3次)→ …
配置如下:
http { upstream backend { server 192.168.0.1 weight=2; server 192.168.0.2 weight=1; server 192.168.0.3 weight=3; } server { listen 80; location / { proxy_pass http://backend; } } }
5.加权最少连接(Weighted Least Connections)
结合了加权和最少连接策略,连接数越少且权重越高的服务器将获得更多的请求。
配置如下:
http { upstream backend { least_conn; server 192.168.0.1 weight=2; server 192.168.0.2 weight=3; } server { listen 80; location / { proxy_pass http://backend; } } }
6.hash负载均衡策略
hash
负载均衡策略可以根据某个特定的变量对请求进行哈希运算,然后将请求分配给后端服务器。使用hash
策略可以实现会话保持,即相同的请求总是被分配到同一台后端服务器上。
以下是使用hash
负载均衡策略的Nginx配置示例:
http { upstream backend { hash $request_uri consistent; server 192.168.0.1; server 192.168.0.2; server 192.168.0.3; } server { listen 80; location / { proxy_pass http://backend; } } }
在上述示例中,我们定义了一个名为backend
的上游组(upstream),其中包含三个后端服务器(server
指令)。hash
策略通过使用$request_uri
变量对请求的URI进行哈希运算,以确定将请求发送到哪个后端服务器。使用consistent
关键字表示使用一致性哈希算法,以提供负载均衡的均匀性。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获知最新一线技术干货!
