使用Iperf for haproxy的udp流量



我正在做我的个人项目,关于使用Docker容器的Haproxy的"性能评估"。我正在用Python编程,并使用iperf进行流量生成。

我创建了几个Docker容器作为客户端和服务器。客户端应该通过Haproxy容器向服务器发送udp流量,Haproxy容器充当负载均衡器。

问题是当我尝试从客户端发送udp流量到服务器时,Haproxy拒绝连接。我没有在官方文档中找到如何绑定或侦听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负载平衡而不是Docker。如果我读错了问题,请随时纠正我。

你可能不喜欢这个答案,但这里是。HAProxy不支持UDP。官方主页将HAProxy明确描述为TCP和HTTP代理(通过暗示,这意味着"无UDP")。关于UDP负载平衡的话题,ServerFault上也有这个问题,它也讨论并快速驳回了HAProxy。

既然我不喜欢"那是不可能的,处理它"作为我自己的答案,让我们看看其他的选择。

  1. 一些资源询问UDP负载平衡最终推荐IPVS作为负载平衡器。它是Linux内核的一部分,如果您正在寻找基于Docker的东西,这使得它成为一个糟糕的解决方案。如果这对你来说不是一个交易破坏者,在维基百科页面上有一个简短的例子,可以调整为您的场景与三个UDP服务器:

    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. 在谷歌上快速搜索一下,就会发现Pen等其他开源解决方案。或许也值得一看?

  3. 确定不能用TCP代替?;)

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

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

您可以为UDP上行配置HA和健康检查,就像您将后端TCP反向代理一样。对于我的项目,我们实现了一个解决方案,使用Nginx基础容器的自定义容器(可能与OP的docker用例相关),可以在这里找到:

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

相关内容

  • 没有找到相关文章

最新更新