用于haproxy的带Iperf的udp通信

2024-06-16 12:22:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Docker容器做我的个人项目“Haproxy的性能评估”。我用Python编程,使用iperf生成流量。

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

问题是当我尝试从客户端向服务器发送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


Tags: 项目docker服务器客户端官方server编程性能
2条回答

在我读的时候,这个问题更多的是关于UDP负载平衡而不是Docker。如果我看错了这个问题,请随时纠正我。

你可能不喜欢这个答案,但这里。HAProxy不支持UDPofficial homepage显式地将HAProxy描述为TCP和HTTP代理(这意味着“没有UDP”)。还有this question on ServerFault关于UDP负载平衡的主题,它也讨论并快速驳回了HAProxy。

既然我不喜欢“那不可能,自己来处理”这样的回答,那就让我们来看看其他的选择吧。

  1. 一些询问UDP负载平衡的资源最终推荐IPVS作为负载平衡器。它是Linux内核的一部分,如果您正在寻找基于Docker的东西,这将使它成为一个糟糕的解决方案。如果这不是一个交易破坏者,有一个short example on the Wikipedia page可以通过三个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. 一个快速的Google搜索会找到其他开源解决方案,比如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/

相关问题 更多 >