1

我正在与管理vms的gcloud应用程序引擎上使用socketIO + Nodejs。 我面临的一个问题是,当我使用手动缩放时,gcloud与套接字配合良好。gcloud socketIO不能在多实例上工作

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

manual_scaling: 
    instances: 1 

resources: 
    cpu: 0.1 
    memory_gb: 0.1 
    disk_size_gb: 10 

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

谢谢。

+0

正如文档中所述,您需要通过实例的IP地址进行连接,并且通过appspot.com进行的连接将不起作用。这可能是问题的根源,因为您没有为在动态模式下创建的每个托管VM实例提供静态IP。您是考虑深入研究文档并与托管虚拟机一起玩耍,还是只是将套接字连接发送到一组完全适合处理此类连接的计算引擎虚拟机? – Nick

+0

它与静态IP,谢谢。 –

回答

1

Google Cloud本身不支持负载平衡Web套接字。有几个选项可以用来解决问题。

一种选择是将websocket流量直接路由到VM实例,而不是通过云负载均衡器。你可以看到这样做,这里的一个例子:

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

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

  • 它本身不工作在HTTPS
  • 一旦托管虚拟机中的一周虚拟机实例将被回收,从而导致连接断开。

另一种选择是使用第三方服务一样pubnub或推进:

祝您好运!

+0

它只适用于websockets,还是可以和socketio一起使用? –