与Iperf的haproxy udpstream量

我正在使用Docker Container对Haproxy进行“性能评估”的个人项目。 我正在用Python进行编程,并使用iperf进行stream量生成。

我创build了几个Docker容器作为客户端和服务器。 客户端应该通过作为负载均衡器的Haproxy容器将udpstream量发送到服务器。

问题是,当我尝试从客户端发送udpstream量到服务器,Haproxy拒绝连接。 我没有在官方文档中find如何绑定或侦听UDP端口。

预先感谢您的回复。

这是我的haproxy.cfg的副本。

global quiet nbproc 4 daemon listen tcp_haproxy 172.17.4.230:5001 balance roundrobin server server0 172.17.4.227:5001 server server1 172.17.4.228:5001 server server2 172.17.4.229:5001

在我看来,这个问题更多的是关于UDP负载均衡的问题。 如果我误解了这个问题,请随时纠正我。

你可能不会喜欢这个答案,但在这里。 HAProxy不支持UDP 。 官方网页明确地将HAProxy描述为TCP和HTTP代理(暗示,这意味着“没有UDP”)。 ServerFault上还有一个关于UDP负载均衡的问题,这个问题也讨论并快速消除了HAProxy。

既然我不喜欢“这是不可能的,处理它”作为我自己的答案,让我们看看替代品。

  1. 一些关于UDP负载均衡的资源最终推荐IPVS作为负载均衡器。 它是Linux内核的一部分,如果你正在寻找基于Docker的东西,这将成为一个糟糕的解决scheme。 如果这不是一个交易断路器, 维基百科页面上有一个简短的例子 ,可以通过三个UDP服务器来调整您的scheme:

     ipvsadm -A -u 172.17.4.230:5001 -s rr ipvsadm -a -u 172.17.4.230:5001 -r 172.17.4.227:5001 -m ipvsadm -a -u 172.17.4.230:5001 -r 172.17.4.228:5001 -m ipvsadm -a -u 172.17.4.230:5001 -r 172.17.4.229:5001 -m 
  2. 快速谷歌search变成了像Pen这样的其他开源解决scheme。 也许值得一看?

  3. 当然,你不能使用TCP? ;)

截至2016年3月,这个问题的最佳解决scheme是Nginx> = 1.9.13:

https://www.nginx.com/blog/announcing-udp-load-balancing/

您可以为UDP上游configurationHA和运行状况检查,就像后端TCP反向代理一样。 对于我的项目,我们实现了一个使用基本Nginx容器(可能与OP的docker用例相关)的自定义容器的解决scheme,可以在这里find:

https://hub.docker.com/_/nginx/