node.js - 我应该为我的 api 和套接字服务器使用单独的负载均衡器,还是带有规则的负载均衡器? (G云)

标签 node.js rest socket.io google-compute-engine load-balancing

我整个早上都在寻找这个问题的答案,并尝试各种设置,但我仍然不确定我有正确的答案。 (我对此很陌生,所以很抱歉)

我在 GCloud 上有一个 Node 应用程序,它有运行 Restful api 的服务器,以及运行 socket-io 的服务器(通过 redis 链接)。 API 通过 redis 和 http 调用(内部)与套接字服务器通信。我使用子域来区分每个子域(api.* 和 socket.*)

我最初认为其中每一个都是一个负载均衡器中的一项服务,并且我将使用规则将流量发送到正确的位置。但我读得越多,就越觉得使用完全独立的平衡器可能更合适,并为本地考虑等事情保留服务。

如有任何建议,我们将不胜感激。

编辑:

阅读了一堆有关基于内容的负载平衡的内容后,我觉得这就是我应该做的。 (例如下面的文档) https://cloud.google.com/compute/docs/load-balancing/http/content-based-example

当我尝试此操作时,客户端和套接字之间的流量工作正常,因为我使用主机规则引导流量。但是,当我尝试从 api 服务器向套接字服务器(同一 VPC)进行调用时,由于没有主机,我无法区分它(尝试使用 IP,但不起作用)

我已经设法让它与两个单独的负载均衡器一起工作,但这似乎不是谷歌所期望的,我想知道它是否会给我带来麻烦(特别是当我开始处理 https 时)。

最佳答案

我想回答这个问题,因为似乎没有人感兴趣,但我警告你这是一种黑客行为。如果有人发布更好的内容,我会相应地提高它。

最后,我能找到的通过负载均衡器将调用从 api 定向到套接字的唯一方法是将套接字作为默认值(以前是 api),然后让流量'落入它的怀抱。

这并不理想,因为如果我必须对另一台服务器进行任何其他内部流量,我将无法这样做,它只会进入套接字服务。这也意味着到我的域的任何杂散流量都会到达套接字服务器。

现在必须这样做,因为我已经在这上面花了太多时间。

关于node.js - 我应该为我的 api 和套接字服务器使用单独的负载均衡器,还是带有规则的负载均衡器? (G云),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50566783/

相关文章:

javascript - UAT 环境中 url 未定义的奇怪问题。在本地它正在工作 :

java - 并发: Designing a REST API using Play Framework/Akka

ajax - 在 ajax 可以做的地方使用 websocket/socket.io 有什么缺点?

node.js - 抛出新错误(this.name + '.' + Utils.lowercaseFirst(Type.toString())

macos - socket.io 无法连接到移动浏览器

node.js - ExpressJS 在静态目录中查找 View ,忽略 View 目录

node.js - NodeJS中promise如何通过多层回调解析所有数据

rest - 为什么Spring Security REST插件与JDK 1.6不兼容?

javascript - 发送消息到房间 socket.io node.js

php - 如何针对跨域的 PHP session ID 对 Socket.IO 进行身份验证