【问题标题】:Nginx multiple load balancers or single load blanacer [closed]Nginx 多个负载均衡器或单个负载均衡器 [关闭]
【发布时间】:2016-01-18 01:02:28
【问题描述】:

在部署具有多层的应用程序时,是否最好为 API 和 Web 服务器配备单独的 Nginx 负载平衡器?还是一个同时服务于 API 和 Web 服务器的 LB?

【问题讨论】:

    标签: node.js networking nginx docker load-balancing


    【解决方案1】:

    我会采用更简单的单一负载均衡器解决方案,直到明确它们需要分开。

    如果 Nginx 是负载均衡器,您可以使用不同的日志记录和配置来自定义“web”后端和“api”后端之间的差异。

    【讨论】:

    • 虽然,我对这个解决方案犹豫不决,因为所有负载都将通过一个 LB。单点故障,如果 API 出现故障,网络仍然在缓存和服务中运行
    • Docker 让这一切变得轻而易举
    • 无论您为两个后端使用一个概念负载均衡器还是两个,为您的负载均衡器提供一个高可用性解决方案都是一个好主意,以防其中一个 LB 死机。 Amazon Elastic Load Balancer 会为您解决这个问题。对于自己托管的解决方案,Heartbeat 可用于自动故障转移到双 LB。
    • 是的,我可以在这里看到这一点,同样使用 docker,无论如何也不可能在单个端口上暴露给容器......
    【解决方案2】:

    所以在节点平衡时有很多需要考虑,我个人在集群模式下使用pm2 节点(用于机器本地集群)和 nigix 作为整体负载平衡器(和静态主机)。

    记住负载均衡时,根据应用程序、会话和节点之间的通信需要基础设施(redis、mongodb)

    pm2(本地)可以将节点应用程序部署到每个 cpu 核心并在一个命令中管理负载平衡 pm2 start app.js -i 4 这可以分布在多个节点上。

    【讨论】:

    • 我只是觉得 PM2 是另一层,每一层都增加了延迟、复杂性和维护。此外,我在使用它时遇到了许多 PM2 错误。另外……它的节点我已经看过了,没有使用任何形式的节点负载均衡。坚持使用 HAProxy 或 nginx 做得更好的东西