在Akka Http多个应用程序之前安装负载均衡器

时间:2019-05-01 10:04:29

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

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

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

  1. 是否有另一个推荐的负载均衡器(开放源代码),我可以使用该负载均衡器/将HTTP传入请求负载均衡/代理到除HAproxy(也许是APACHE httpd)以外的多个应用程序上?

  2. 写一个简单的akka​​ http应用程序路由作为负载均衡器,在一些配置文件中注册后端应用程序主机,然后轮流向它们发送请求,是否有意义?

  3. 也许我应该为此目的考虑Akka集群?事实是,这些应用程序已经是独立的akka​​ http服务,没有群集支持。也许对于集群来说太过分了。 (想保持简单)

将平衡请求加载到http应用程序(尤其是akka http scala应用程序)的最佳做法是什么,因为我可能在这里丢失了一些内容?

注意-背压是我们同样想要的,这意味着如果服务器很忙,我们希望以204或一些状态代码进行响应,这样我的客户端就不会超时,以防我的后端很忙

1 个答案:

答案 0 :(得分:0)

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

我不确定您将应用程序部署在哪里,但是最好的(也是更安全的)方法是使用云提供商提供的LB。他们中的大多数人只有一个,而且通常具有很高的收益成本。

如果您的云提供商没有提供或您正在托管自己的应用程序,那么首先您应该看一下HAProxy。您是否以隔离的方式在HAProxy上运行测试以查看其仍然存在相同的延迟问题?您确定配置针对您的需求进行了优化吗?您的HAProxy是否有足够的资源(CPU和内存)进行操作?您的HAProxy是否与已部署的应用程序位于同一数据中心?

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

希望我能帮上忙。

[]的