【问题标题】:Having load balancer before Akka Http multiple applications在 Akka Http 多个应用程序之前拥有负载均衡器
【发布时间】:2019-05-01 10:04:29
【问题描述】:

我有多个相同的 Scala Akka-HTTP 应用程序,每个都安装在专用服务器上(大约 10 个应用程序),响应端口 80 上的 HTTP 请求。在此设置之前,我使用单个 HAproxy 实例来接收所有传入流量并平衡这 10 台服务器的工作负载。

我们想更改 HAproxy(我们怀疑它会导致我们出现延迟问题)并使用不同的负载平衡器。要求是采用不同的第 3 方负载均衡器或使用 scala 开发一个简单的负载均衡器,将每个 http 请求轮询到后端 akka http 应用程序并代理返回响应。

  1. 是否有另一个推荐的负载平衡器(开源),我可以使用它来对除 HAproxy 之外的多个应用程序(可能是 APACHE httpd)进行负载平衡/代理 http 传入请求?

  2. 编写一个简单的 akka http 应用程序路由作为负载均衡器,在某个配置文件中注册后端应用程序主机,并对它们的请求进行轮询是否有意义?

  3. 也许我应该为此考虑使用 Akka 集群?问题是,这些应用程序已经是独立的 akka http 服务,没有集群支持。也许去聚类会太多了。 (希望保持简单)

什么是对 http 应用程序(尤其是 akka http scala 应用程序)的请求进行负载平衡的最佳做法,因为我可能在这里遗漏了一些东西?

注意 - 我们也希望有背压,这意味着如果服务器很忙,我们希望使用 204 或一些状态码进行响应,这样我们的客户端就不会出现超时,以防我的后端很忙.

【问题讨论】:

    标签: akka load-balancing akka-stream akka-http


    【解决方案1】:

    虽然 Akka HTTP 的性能令人印象深刻,但我不会用它来编写简单的反向代理,因为社区中还有很多其他的。

    我不确定您将应用部署在何处,但最好(并且更安全)的方法是使用您的云提供商提供的 LB。他们中的大多数都有一个,而且通常它具有良好的收益成本。

    如果您的云提供商没有提供,或者您自己托管您的应用程序,那么首先您应该查看您的 HAProxy。您是否以孤立的方式在 HAProxy 上运行测试以查看它仍然存在相同的延迟问题?您确定针对您想要的配置进行了优化吗?您的 HAProxy 是否有足够的资源(cpu 和内存)来运行?您的 HAProxy 是否与您部署的应用位于同一个数据中心?

    如果您关注并检查了所有这些问题,但仍然遇到延迟问题,那么我建议您选择另一个问题。那里有很多,例如EnvoyNGINX。我真的很喜欢 Envoy,而且我已经在工作中使用它几个月了,没有任何抱怨。

    希望我能帮上忙。

    []的

    【讨论】:

      猜你喜欢
      • 2016-07-08
      • 1970-01-01
      • 2017-07-28
      • 2018-02-26
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      相关资源
      最近更新 更多