【问题标题】:how to use socket.io through google load balancing如何通过谷歌负载均衡使用socket.io
【发布时间】:2018-06-02 13:37:46
【问题描述】:

我们在尝试通过google load balancingsocket.io 连接到node.js compute engine 实例时遇到一些问题。

如果我从浏览器直接连接到node.js 的外部IP,一切正常。

如果我尝试通过load balancing(这将是生产架构)连接到同一个node.jssocket 会一直断开连接。

我们尝试使用 sessionAffinity 配置负载平衡但没有成功。

有什么建议吗?谢谢

【问题讨论】:

  • 你肯定需要会话亲和性。您还应该查看负载均衡器配置中的超时设置。我认为它默认为 30 秒。
  • 也有一些问题,会话亲和性(ip)开启,后端超时为 24 小时,nginx 保持活动状态为 650,建议。我在 mt“测试”环境中运行没有负载均衡器的同一个应用程序,我没有问题。
  • @Rhangaun 请试试这个cloud.google.com/compute/docs/load-balancing/http/…。我的团队在使用 Azure 负载均衡器时遇到了类似的问题,并且粘性会话有所帮助。请让我知道它是否有效,如果有效,我会将其发布为答案。
  • @GandalftheWhite 你读过我的评论吗 -> “会话亲和性 (ip) 已开启”。

标签: javascript node.js socket.io google-cloud-platform


【解决方案1】:

默认情况下 http 负载平衡的超时设置默认为 30 秒 (Source),这适用于 web 套接字,当后端支持该协议时,socket.io 又会使用该套接字。因此,您需要执行以下操作来增加超时 (Source)。

配置超时设置:

  • 转到负载平衡页面
  • 为您的负载均衡器选择编辑铅笔。
  • 选择后端配置。
  • 为后端服务选择编辑铅笔。
  • 在协议、端口和超时设置行中,选择编辑铅笔。
  • 以秒为单位输入新的超时设置。
  • 单击负载平衡器的更新按钮。

【讨论】:

  • @Rhangaun 这是一条为正确方向提供建议的评论,此答案进一步详细说明了执行此操作的步骤,并引用了原始发布者以外的其他人遇到相同的来源以供将来使用根据stackoverflow.com/help/how-to-answerstackoverflow.com/help/referencing的情况
  • 首先,我的评论包括“后端超时时间为 24 小时”,其次,恕我直言,这种“循序渐进”的回答方式并不是 SO 所期望的。
  • @Rhangaun 我是在回答问题,而不是您的评论。尽管与您的问题和此问题存在远程连接,并且您是提供赏金的人,但据我所知,我仍然会优先考虑实际问题而不是单独的问题。我认为如果您针对您的具体问题提出一个单独的问题而不是接管现有问题,那会更好。
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 2014-10-02
  • 2020-06-30
  • 2017-01-16
  • 1970-01-01
  • 2012-06-13
  • 2018-09-09
  • 2021-03-18
相关资源
最近更新 更多