我正在使用 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. The 官方主页 http://www.haproxy.org/将 HAProxy 描述为TCP 和 HTTP显式代理(暗示,这意味着“无 UDP”)。还有ServerFault 上的这个问题 https://serverfault.com/questions/669441/load-balancing-dns-servers-udp-tcp关于UDP负载均衡的主题,其中也讨论并很快驳回了HAProxy。
由于我自己不喜欢“那不可能,处理它”作为答案,所以让我们看看替代方案。
-
一些询问 UDP 负载平衡的资源最终推荐IPVS https://en.wikipedia.org/wiki/IP_Virtual_Server作为负载均衡器。它是 Linux 内核的一部分,如果您正在寻找基于 Docker 的东西,那么它是一个糟糕的解决方案。如果这对你来说不是一个大问题,那么还有一个维基百科页面上的简短示例 https://en.wikipedia.org/wiki/Linux_Virtual_Server#Examples可以根据您的场景调整三个 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
快速谷歌搜索会找到替代的开源解决方案,例如Pen http://siag.nu/pen/。也许也值得一看?
确定不能使用 TCP 来代替吗? ;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)