我正在寻找有关在 Google Cloud Compute 中部署 Node.js 应用程序的一些反馈。
我们目前正在使用 Google 的 HTTP 负载均衡器,并将流量直接引导至我们的 Node.js 盒池。
我的具体问题是,其他人是如何做到这一点的?您是否让来自 GCE 的 HTTP 负载均衡器的流量直接到达您的 Node.js 应用程序,或者您是否在您的私有网络中放置另一个反向代理(如 HAProxy 或 NGINX)以将流量传递到 Node.js?
对于我来说,拥有另一个反向代理似乎有点多余,但我很好奇是否有任何安全考虑等。我通过将 Node 暴露给 GCE HTTP LB 来忽略了这一点。
谢谢
答案1
如果您按照本帮助中心中提到的说明操作文章,流量到达 LB IP 地址后,将使用代理在后端转发。因此,应用程序的公共 IP 地址将成为转发规则 IP。
答案2
我最近在 Rackspace 中构建了一个类似的部署,我选择在每个虚拟机上运行多个 node.js 实例(数量等于 CPU 数量),并使用 NGINX 在它们之间平衡负载。我曾考虑使用 HAProxy,但我更熟悉 NGINX,但它们的效果一样好。然后我使用 Rackspace 提供的负载均衡器在虚拟机之间平衡负载。我之所以选择这种方法,是因为我在 NGINX 实例上执行 SSL 终止以及压缩。采用这种方法的另一个原因是我使用 SaltStack 配置实例,使用它比使用 Rackspace 的 LB 更容易控制 NGINX 节点。
尽管 NGINX/HAProxy 层看起来是多余的,但它保持了系统模块化,功能划分清晰。理论上,额外的层应该会增加一些延迟,但它是如此微不足道,我不会担心它。