【问题标题】:Does HAProxy support cluster?HAProxy 是否支持集群?
【发布时间】:2018-05-09 12:28:44
【问题描述】:

我正在 AWS 上部署一个 NodeJS 应用程序。目前的结构是

ELB 1 个 HAProxy 实例 2+ 个运行 NodeJS 应用程序的 EC2 实例

Single HA Proxy 实例确保 ELB 始终将会话路由到 HAProxy 实例,并且 HAProxy 实例可以使用自己的粘性策略来确保粘性会话。

我的问题是如何向此架构添加更多 HAProxy 实例。我在 HAProxy 的文档中找不到有关 HAProxy 集群及其工作方式和配置方式的任何信息。 HAProxy 是否支持集群?

【问题讨论】:

    标签: haproxy


    【解决方案1】:

    据我了解,haproxy 将通过其对等连接提供棒表同步,但不支持连接计数统计同步。

    如果您的后端服务器集群具有有限数量的线程(puma/rails),如果您在主动-主动模式下运行 haproxy,则必须调整您的最小-最大后端连接。

    两台 haproxy 服务器,每台都有 1000 个连接,您实际上需要 2000 个连接(100 个 puma worker 和 20 个线程),

    所以,为了简单起见,我只是在主动-热-待机模式下运行两个 haproxy。每个都配置为支持相同的后端线程池。

    在 c4.xlarge 上运行 haproxy 足以处理 1000 个后端连接和 2000 个同时前端连接(在 150,000 个用户的全面泛洪测试中)。

    哦,你的 ELB 是多余的。把它拿出来。您为 HAPE 支付 200 美元/月,为 ELB 支付 25 美元/月。

    他们做同样的事情。使用其中一种。不是都。如果您想要 ELB,那么您将需要 WAF 来获得 haproxy 为您提供的相同功能。

    顺便说一句,我的 haproxy 也有一个 nodeJS 应用程序作为后端。我根据节点服务器的负载测试性能指标,根据需要设置最小-最大连接数。

    哦,不要尝试使用 ELB 为您的节点应用程序提供服务。您需要 http 模式请求缓冲来为您的节点应用程序提供服务。 Haproxy 将其提供给您。

    我使用 ELK 监控集群来监控 haproxy。如果失败,我会收到通知。但是,我不移动 IP 地址。具有故障转移 dns 的 Route53 将自动从其失败的 DNS 池中删除失败的 haproxy(在 60 秒内......不理想)。如果你需要一个固定的 IP,情况就不同了。如果您每 10 秒轮询一次,您可能会在 15 秒内将 IP 地址与监控服务器上的服务一起移动。

    享受

    【讨论】:

      【解决方案2】:

      您可以尝试将多个 HAProxy 实例与将在它们之间提供 VRRP 的 keepalived 服务配对。作为入门级描述,您可以遵循

      http://support.severalnines.com/entries/23612682-Install-HAProxy-and-Keepalived-Virtual-IP-

      【讨论】:

      • 听起来很有希望。我如何在 AWS 中做到这一点?我是否需要第三个 EC2 实例来安装 keepalived?
      【解决方案3】:

      HAProxy 没有集群概念。但是您可以让多个 HAproxy 服务器与 Keepalived 服务一起工作。 Keepalived 致力于主从概念,并跟踪 HAproxy 服务器检查。一旦主服务器宕机,它就会改变路由到从服务器。

      【讨论】:

        猜你喜欢
        • 2015-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-01
        • 2016-12-04
        • 2019-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多