在 Nginx 的反向代理设置(三) 中,我们演示了一个如何将 Nginx 设置为内网服务的反向代理服务器和负载均衡服务器。 本文将进一步扩展案例,为负载均衡选择不同的负载分派策略。
轮询策略
Nginx 的负载均衡默认的策略就是轮询策略。因此当我们采用默认设置,如:
1 | upstream testapp { |
客户端发起的请求轮流由 app1 和 app2 来进行处理。
加权轮询
如果我们后端服务的处理能力不同,比如 app2 的处理能力要远高于 app1, 那这个时候用上面说到的简单轮询策略就不合适了。这个时候可以采用加权轮询的方法,将 app2 的权重增加,让它多处理一些客户的请求。 配置如下:
1 | upstream testapp { |
IP地址Hash
如果我们希望来自同一个 IP 的客户端请求尽可能的再同一台后端服务中被处理。这时我们可以采用 IP 地址 Hash 的策略,通过计算客户的 IP 地址的哈希值,然后在将哈希值映射(通常为取模的方法)为某一台后端服务器。这样,当客户的 IP 的不变是,总能由后端的同一台服务器来处理该客户端的请求。 配置如下:
1 | upstream testapp { |