我正在用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
在我读的时候,这个问题更多的是关于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服务器调整到您的场景:
一个快速的Google搜索会找到其他开源解决方案,比如Pen。或许也值得一看?
你确定不能用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/
相关问题 更多 >
编程相关推荐