WebSocket和负载平衡,瓶颈?

WebSocket和负载平衡,瓶颈?,websocket,load-balancing,amazon-elb,Websocket,Load Balancing,Amazon Elb,当有一堆系统充当WebSocket无人机,并且在这些无人机前面有一个负载平衡器时。当WebSocket请求进入LB时,它选择WebSocket无人机,并建立WebSocket。(我使用在ELB端接的AWS ELB tcp SSL) 问题: 现在,创建的WebSocket是否经过LB,或者LB是否将WebSocket请求转发给WebSocket无人机,从而在客户端和WebSocket无人机之间存在直接链接 如果WebSocket连接通过LB,这将使LB成为一个巨大的瓶颈 移除LB并向客户提供Web

当有一堆系统充当WebSocket无人机,并且在这些无人机前面有一个负载平衡器时。当WebSocket请求进入LB时,它选择WebSocket无人机,并建立WebSocket。(我使用在ELB端接的AWS ELB tcp SSL)

问题: 现在,创建的WebSocket是否经过LB,或者LB是否将WebSocket请求转发给WebSocket无人机,从而在客户端和WebSocket无人机之间存在直接链接

如果WebSocket连接通过LB,这将使LB成为一个巨大的瓶颈

移除LB并向客户提供WebSocket无人机的直接IP可以绕过这个瓶颈,但需要自己创建这个逻辑,我正计划这么做(取决于这个问题的答案)


那么,我对如何工作的想法正确吗?

AWS ELB as LB

在查看建议的后,我得出结论,WebSocket连接将通过AWS ELB,如下所示:

Browser <--WebSocket--> LB <--WebSocket--> WebSocketServer
浏览器LB WebSocketServer
这使得ELB成为瓶颈,我想要的是:

Browser <--WebSocket--> WebSocketServer
浏览器WebSocketServer
其中ELB仅用于为客户端提供可用WebSocketServer的主机名/IP

DNS作为LB

如上所述,可以通过在DNS级别进行平衡来避免上述问题。因为这样,当请求ws.myapp.com时,DNS将提供可用WebSocketServer的IP

不利的一面是,这需要不断地更新DNS和上/下WebSocketServer更改(如果您的应用程序是弹性的,这将成为一个更大的问题)

定制磅数

另一个选项是创建一个自定义LB,它不断监视WebSocketServer,并在客户端请求时返回可用WebSocketServer的IP

缺点是客户端需要执行一个单独的(AJAX)请求来获取可用WebSocketServer的IP,而AWS ELB的负载平衡是隐式的

结论

选择更好的邪恶..

可能的复制