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