Google 云中的负载平衡 websocket 连接

Load balancing websocket connections in the Google Cloud

我遇到了使用 Google 技术无法完全解决的问题。

我需要通过 SSL 提供超过 500 个并行 websocket 连接。理想情况下,客户端连接到 wss://wss.mydomain.com 并由实例提供服务。

选项 1:我目前使用自定义运行时托管 VM 来部署运行支持 SSL 的 websocket 服务器的 Dockerfile。 部署托管 VM 实例会产生一个 GCE 实例。 我使用 Google Cloud DNS 将 wss.mydomain.com 指向 GCE 实例的这个 IP 地址。

问题:我无法连接到 wss.mydomain.com(甚至连我的-mvm.appspot.com)因为 websocket 连接(通过 SSL)没有得到转发到托管 VM 实例。提出了 issue, but didn't see any response that helps me. Also others reach this conclusion here and .

因此,如果托管 VM 不是答案,我可以在 Google 云架构中的何处找到它?

选项 2:由于 managedVM 似乎是 GCE 的糖衣,也许我可以保留已经提供我的 GCE 实例的当前设置并自己添加负载平衡?

选项 2a:HTTP(S) 负载平衡不允许 websocket 流量,因此一个是 out

选项 2b:网络负载平衡可以工作。我需要将实例分配给目标池才能正常工作。新创建的托管 VM 实例是否可以自动分配给目标池,以便它们加入负载平衡?如果是这样,这是否是问题的完整解决方案?

选项 3:我想继续使用我的 Dockerfile 进行设置。所以我正在研究容器引擎。我在这里一点经验都没有。

在我涉足另一个雷区之前,哪个选项最有可能为我的问题提供解决方案?也许还有其他我没有想到的选择。

选项 2b 也将被淘汰,因为托管 VM 流量仍在通过 appspot.com 前端,该前端不会将 websocket 流量转发到实例(如链接的其他问题中所述)。

如果您想让它立即运行,我建议您首先使用带有 autoscaling and network load balancing. If you want the same level of scalability you'd get with Managed VMs, then you would want to then start reading into Container Engine 的 GCE 实例并部署您的应用程序 Dockerized。