我们正在尝试设计一个能够处理超过64k websockets的架构.
我们首先尝试使用Amazon ELB,但其设计不允许出现意外的流量峰值,也不允许使用websocket. (TCP模式意外超时websockets)
使用HAProxy,这些限制不适用,但我们将限制在HA和后端服务器之间维护~64k websockets.
想到多种解决方案:
>多个HAProxy实例,DNS负载均衡(Route53有加权选项)
>两个带有Keepalived的HAProxy实例,多个内部IP地址(不确定它是否可行)
有一个更好的方法吗 ?
如果您的64k限制是由源端口引起的,您可以执行以下操作(有点像hacky,但我们目前在SE处为websockets执行此操作(我们通常使用HAProxy来执行类似于.5百万的
内容):
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
Keepalived也可以使用多个实例.只需在多个IP上执行循环DNS等操作.只需确保IP总是被主动负载均衡器接收,因为DNS本身不会给你负载平衡(这里有更多选项,这个只是简单).