【问题标题】:Do I need to have HAProxy TCP/HTTP Load Balancer when I already have AWS ELB?如果我已经拥有 AWS ELB,是否还需要拥有 HAProxy TCP/HTTP 负载均衡器?
【发布时间】:2015-01-26 16:42:49
【问题描述】:

假设我在 Amazon AWS 有 20 台服务器,并且我还为这些服务器设置了 AWS ELB。我听说 HAProxy 是可靠且快速的 TCP/HTTP 负载均衡器,所以问题是:

  1. 在拥有 AWS ELB 的同时,是否需要在每个 EC2 实例中安装 HAProxy?
  2. 同时拥有 ELB 和 Haproxy 有什么好处?

谢谢

【问题讨论】:

    标签: performance amazon-web-services haproxy


    【解决方案1】:

    在某些情况下,人们会选择自己的负载平衡解决方案,例如 HAProxy 而不是 ELB:

    金融交易:ELB 是一种不透明的服务。不提供日志。因此,如果您丢失了事务,您将不知道 ELB 是否删除了它们。

    不适用于流量高峰:ELB 扩展至少需要 5 分钟。如果您的应用程序流量每 5-10 分钟翻一番,它会做得很好。但是,如果它以恒定的速率,并且您会突然出现峰值,那么您将遇到 ELB 问题。

    ELB 可能比运行您自己的负载平衡要慢:在我的环境中,我通过使用 HAProxy/Nginx(用于 SSL 终止)获得了 15% 的性能提升。每次调用大约需要 30 毫秒,但请记住,我使用的是 SSL,所以我使用 CPU 能力。

    ELB 只做循环负载平衡,而 HAProxy 有更多。

    HAProxy 还有很多 ELB 不支持的配置。这取决于他们的应用是否需要它们。

    【讨论】:

    • 所有都是非常有效的观点,但问题是是否值得同时拥有两个 ELB 和 HAProxy。
    • 取决于您的偏执程度,尤其是 AWS 问题。我都在运行,但 ELB 只是我的备份。
    • 取决于有多少风险:)
    【解决方案2】:

    在一套应用程序中,我都在运行。 ELB->haproxy->一套应用程序。在我的情况下,会发生以下情况:

    • ELB 将 HTTPS 转换为 http
    • HAproxy 根据路径定位到应用服务器
    • 应用服务器以普通的旧 http 运行

    这样做的好处是我可以在不更改 URL 的情况下移动应用程序 缺点是 ELB 不是固定 IP 地址,因此如果您需要从 IP 地址而不是 cname 指向它,则无法这样做。

    【讨论】:

      【解决方案3】:

      简短回答:不,您不需要 HAProxy。使用 ELB。

      tldr;

      是的,HAProxy 功能强大且经过测试。

      首先,您需要有一个单独的 EC2 HAProxy 实例(而不是在您需要平衡的每个 EC2 实例上安装 HAProxy)。本质上,ELB 相当于一个加载了某种负载均衡软件的 EC2 实例。

      其次,在您的环境中同时拥有 ELB 和 HAProxy 平衡实例是一种罕见的用例。您可能会遇到需要更细粒度的访问以及在负载均衡器上进行更多配置的能力。这完全取决于您在做什么以及 ELB 可能会给您带来什么问题。谷歌阅读可能的用例。

      【讨论】:

        【解决方案4】:

        我在后面使用 ELB 和 Haproxy。

        当客户从一个唯一 IP 使用我的网络服务时,ELB 会将他的所有请求重定向到相同的主机。它没有规模。 (我想它是来自 src ip 的哈希值或类似的东西)。

        haproxy 有另一种平衡器算法。

        我为 HA 保留 ELB(1 个 haproxy / 可用区)。并且每个 haproxy 实例重新调度到区域区域后端服务器

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-04-19
          • 2021-08-17
          • 2018-08-18
          • 2017-01-25
          • 2019-02-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多