<p>在我读的时候,这个问题更多的是关于UDP负载平衡而不是Docker。如果我看错了这个问题,请随时纠正我。</p>
<p>你可能不喜欢这个答案,但这里。<strong>HAProxy不支持UDP</strong>。<a href="http://www.haproxy.org/" rel="noreferrer">official homepage</a>显式地将HAProxy描述为<em>TCP和HTTP</em>代理(这意味着“没有UDP”)。还有<a href="https://serverfault.com/questions/669441/load-balancing-dns-servers-udp-tcp">this question on ServerFault</a>关于UDP负载平衡的主题,它也讨论并快速驳回了HAProxy。</p>
<p>既然我不喜欢“那不可能,自己来处理”这样的回答,那就让我们来看看其他的选择吧。</p>
<ol>
<li><p>一些询问UDP负载平衡的资源最终推荐<a href="https://en.wikipedia.org/wiki/IP_Virtual_Server" rel="noreferrer">IPVS</a>作为负载平衡器。它是Linux内核的一部分,如果您正在寻找基于Docker的东西,这将使它成为一个糟糕的解决方案。如果这不是一个交易破坏者,有一个<a href="https://en.wikipedia.org/wiki/Linux_Virtual_Server#Examples" rel="noreferrer">short example on the Wikipedia page</a>可以通过三个UDP服务器调整到您的场景:</p>
<pre><code>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
</code></pre></li>
<li><p>一个快速的Google搜索会找到其他开源解决方案,比如<a href="http://siag.nu/pen/" rel="noreferrer">Pen</a>。或许也值得一看?</p></li>
<li><p>你确定不能用TCP代替?;)</p></li>
</ol>