我的个人项目是使用 Docker 容器对 Haproxy 进行“性能评估”。我正在使用 Python 编程并使用 iperf 生成流量。
我创建了几个 Docker 容器作为客户端和服务器。客户端应该通过充当负载均衡器的 Haproxy 容器将 udp 流量发送到服务器。
问题是当我尝试将 udp 流量从客户端发送到服务器时,Haproxy 拒绝连接。 我没有在官方文档中找到如何绑定(bind)或监听UDP端口。
预先感谢您的回复。
这是我的 haproxy.cfg 的副本。
全局
安静的
nbproc 4
守护进程
听 tcp_haproxy 172.17.4.230:5001
平衡循环法
服务器 server0 172.17.4.227:5001
服务器 server1 172.17.4.228:5001
服务器 server2 172.17.4.229:5001
最佳答案
正如我所读,这个问题更多的是关于 UDP 负载平衡而不是 Docker。如果我误解了问题,请随时纠正我。
你可能不会喜欢这个答案,但这里是。 HAProxy 不支持 UDP。 official homepage将 HAProxy 明确描述为 TCP 和 HTTP 代理(暗示,这意味着“无 UDP”)。还有this question on ServerFault关于UDP负载均衡的话题,里面也讨论了HAProxy,很快就解散了。
因为我自己不喜欢“那不可能,处理它”作为答案,让我们看看替代方案。
一些询问有关 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
通过 Google 快速搜索可以找到替代的开源解决方案,例如 Pen .可能也值得一看?
确定不能改用 TCP 吗? ;)
关于python - 用于 haproxy 的 Iperf udp 流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255780/