为超过 64k 个 websocket 扩展 HAProxy

Bas*_*974 9 domain-name-system scalability load-balancing haproxy websocket

我们正在尝试设计一种能够处理超过 64k 个 websocket 的架构。

我们首先尝试使用 Amazon ELB,但它的设计不允许意外的流量激增或 websocket。(TCP 模式意外超时 websockets)

使用 HAProxy,这些限制不适用,但我们将被限制在 HA 和后端服务器之间维护的 ~64k websockets。

想到的多种解决方案:

  • 多个 HAProxy 实例,使用 DNS 进行负载均衡(Route53 有一个加权选项)
  • 两个带有 Keepalived 的 HAProxy 实例,多个内部 IP 地址(不确定是否可行)

有一个更好的方法吗 ?

Kyl*_*ndt 7

如果您的 64k 限制是由于源端口造成的,您可以执行以下操作(有点老套,但我们目前在 SE 为 websockets 做的事情(我们通常与 HAProxy 有大约 50 万并发):

server ny-web01-1 10.0.0.1:8081 check
server ny-web01-2 10.0.0.1:8082 check
server ny-web01-3 10.0.0.1:8083 check
Run Code Online (Sandbox Code Playgroud)

使用 keepalived 也可以实现多个实例。只需在多个 IP 上执行循环 DNS 之类的操作即可。只需确保 IP 始终被主动负载均衡器接收,因为 DNS 本身不会为您提供负载均衡(这里也有更多选项,这个很简单)。