负载平衡:用户何时应始终连接到同一台服务器?
Load balancing: when should a user always connect to the same server?
我遇到了 HAProxy 中的“source”负载平衡算法,它确保用户将连接到同一服务器,方法是根据源 IP 的哈希值。
为什么以及何时对用户连接到同一服务器很重要?假设所有候选服务器都提供相同的内容,我想不出一个原因。
此外,如果需要一个用户始终连接到同一台服务器,那么负载平衡对这个用户来说不是完全无关紧要吗?
如果我们想要实现会话持久性,那么用户连接到同一台服务器很重要。
例如,在谈论 HTTP 会话时,有特定于所讨论会话的 information/variables(想想购物车)。
候选服务器不会共享此动态信息,以防它们未配置为这样做,并且在负载平衡级别处理它更简单。
在 HAProxy 中处理此问题的首选方法是使用 cookies, but this only works in HTTP mode. HAProxy offers the source 负载平衡算法,以防无法使用 cookie。这可以用于 TCP 模式或拒绝 cookie 的 HTTP 客户端。
在 cookie 过期之前,负载平衡与相关用户无关。但是我们在处理很多用户的时候一般都需要负载均衡,这样他们就可以被多台服务器服务,每个用户坚持使用其中的一台。
我遇到了 HAProxy 中的“source”负载平衡算法,它确保用户将连接到同一服务器,方法是根据源 IP 的哈希值。
为什么以及何时对用户连接到同一服务器很重要?假设所有候选服务器都提供相同的内容,我想不出一个原因。
此外,如果需要一个用户始终连接到同一台服务器,那么负载平衡对这个用户来说不是完全无关紧要吗?
如果我们想要实现会话持久性,那么用户连接到同一台服务器很重要。
例如,在谈论 HTTP 会话时,有特定于所讨论会话的 information/variables(想想购物车)。
候选服务器不会共享此动态信息,以防它们未配置为这样做,并且在负载平衡级别处理它更简单。
在 HAProxy 中处理此问题的首选方法是使用 cookies, but this only works in HTTP mode. HAProxy offers the source 负载平衡算法,以防无法使用 cookie。这可以用于 TCP 模式或拒绝 cookie 的 HTTP 客户端。
在 cookie 过期之前,负载平衡与相关用户无关。但是我们在处理很多用户的时候一般都需要负载均衡,这样他们就可以被多台服务器服务,每个用户坚持使用其中的一台。