10

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

问题: 现在创建的 WebSocket 是通过 LB,还是 LB 将 WebSocket 请求转发到 WebSocket 无人机,因此客户端和 WebSocket 无人机之间存在直接链接?

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

移除 LB 并将 WebSocket 无人机的直接 IP 交给客户可以绕过这个瓶颈,但需要自己创建这个逻辑,我打算这样做(取决于这个问题的答案)。

那么我对它如何工作的想法是否正确?

4

1 回答 1

5

AWS ELB 作为 LB

在查看Pavel K建议的可能重复项后,我得出结论,WebSocket 连接将通过 AWS ELB,如下所示:

Browser <--WebSocket--> LB <--WebSocket--> WebSocketServer

这使得 ELB 成为瓶颈,我想要的是:

Browser <--WebSocket--> WebSocketServer

其中 ELB 仅用于为客户端提供可用 WebSocketServer 的主机名/IP。

DNS 作为 LB

上述问题可以通过在 DNS 级别进行平衡来规避,如可能的副本中所述。由于这种方式 DNS 将在请求 ws.myapp.com 时提供可用 WebSocketServer 的 IP。

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

自定义 LB

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

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

结论

选择更好的邪恶..

于 2013-08-19T15:58:16.913 回答