【问题标题】:gcloud socketIO is not working on multi-instancesgcloud socketIO 不适用于多实例
【发布时间】:2016-04-27 21:17:53
【问题描述】:

我正在使用带有托管 vm 的 gcloud app-engine 上的 socketIO + Nodejs。 我面临一个问题,当我使用手动缩放时,gcloud 与套接字配合良好。

但是当我使用动态缩放时,套接字根本不起作用,我认为它不起作用,因为两个实例的端口转发问题! 这是我的 app.yaml 实例处理的工作。

 manual_scaling:
  instances: 1

 resources:
  cpu: 0.1
  memory_gb: 0.1
  disk_size_gb: 10

当我删除它们时,套接字根本不起作用。 是否有任何建议或解决方法。 因为我要处理大量的套接字请求(每天 200 万)。 如果没有找到解决方法。我应该为一个实例使用什么规格来处理所有这些请求,或者我该如何计算它们?

谢谢。

【问题讨论】:

  • 如文档中所述,您需要通过实例的IP地址连接,通过appspot.com的连接将不起作用。这可能是您的问题的根源,您没有为在动态模式下创建的每个托管 VM 实例提供静态 IP。您是否考虑过深入研究文档并使用托管虚拟机,或者只是将您的套接字连接发送到非常适合处理此类连接的 Compute Engine 虚拟机池?
  • 它适用于静态 IP,谢谢。

标签: node.js google-app-engine socket.io gcloud-node google-managed-vm


【解决方案1】:

Google Cloud 本身不支持负载平衡网络套接字。您可以使用几个选项来解决此问题。

一种选择是将 websocket 流量直接路由到 VM 实例,而不是通过云负载均衡器。您可以在此处查看执行此操作的示例:

https://github.com/GoogleCloudPlatform/nodejs-docs-samples/tree/master/appengine/websockets

这可行,但你应该知道缺点:

  • 它本身不能通过 HTTPS 工作
  • 每周一次回收托管 VM 中的 VM 实例,从而导致连接中断。

另一种选择是使用 pubnub 或 pusher 等第 3 方服务:

祝你好运!

【讨论】:

  • 它是否仅适用于 websockets,或者它也适用于 socketio ??
猜你喜欢
  • 2012-09-05
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 2017-05-23
  • 2022-06-29
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多