负载均衡策略

  • 轮循机制 (round-robin)——默认机制,以轮循机制方式分发。
  • 最小连接 (least-connected)——将下一个请求分配给活动连接数最少的服务器(较为空闲的服务器)。
upstream talebook-apps {
  least_conn;
  server localhost:8120;
  server localhost:8121;
}

请注意,使用轮循机制或最少连接的负载平衡,每个客户端的请求都可能分发到不同的服务器。不能保证同一客户端将始终定向到同一服务器。
==在登录页登录成功了,但是后续的请求走到其他机器上了,导致无法正常访问(被限制了)==

  • ip_hash : 客户端的 IP 地址将用作哈希键,来自同一个 ip 的请求会被转发到相同的服务器。
upstream talebook-apps {
  ip_hash;
  server localhost:8120;
  server localhost:8121;
}

此方法可确保来自同一客户端的请求将始终定向到同一服务器,除非此服务器不可用。

权重(能者多劳)

![[image-20230816232405223.png]]

upstream talebook-apps {

  server localhost:8120 weight=3;
  # 不设置默认为1 也就是1/4的概率到下面这个服务器上
  server localhost:8121;
}

健康检查

在反向代理中,如果后端服务器在某个周期内响应凭败次数超过规定值,nginx 会将此服务器标记为失败,并在之后的一个周期不再将请求发送给这台服务器。
通过 fail_timeout 来设置检查周期,默认为 10 秒。
通过 max_fails 来检查失败次数,默认为 1次。
在以下示例中,如果 NGINX 无法向服务器发送请求或在 30 秒内请求失败次数超过 3 次,则会将服务器标记为不可用 30 秒。

upstream talebook-apps {
  server localhost:8120 max_fails=3 fail_timeout=30s;
  # 不设置默认为1 也就是1/4的概率到下面这个服务器上
  server localhost:8121;
}