我正在使用 HAProxy 1.8 来代理对我的 HTTP API 的请求,现在想要在多个服务器之间进行负载平衡,因此如下所示:
backend http-in-backend
balance roundrobin
server api-server1 10.1.1.1:1234
server api-server1 10.1.1.2:1234
但是,有些请求需要发送到所有服务器。在这种情况下,将其中任何服务器的响应返回给客户端都是可以的,因为响应应该是相同的。有办法做到这一点吗?当然,我可以有条件地将这些请求发送到单独的后端。所以问题实际上是:我如何将一个请求发送到多个服务器并返回其中任何一个服务器的响应?
答案1
显然 haproxy 没有办法: https://www.mail-archive.com/[电子邮件保护]/msg02138.html
答案2
由于答案已经过时,我想发布一个更新的答案。
这通过 SPOE 引擎“镜像”可以实现,称为流量镜像。
https://www.haproxy.com/de/blog/haproxy-traffic-mirroring-for-real-world-testing/
我目前也需要这个,我计划在接下来的几周内首次实现它。如果我有一些有用的经验,我会回来这里并添加它。
答案3
这听起来更像是消息队列的任务,而不是反向代理的任务。研究 RabbitMQ 或类似程序,看看如何构建这样的解决方案。一个可能的解决方案可能是让“任何”服务器接收请求,然后让它将相关内容传递到“所有”服务器订阅的队列。