我有一个QA环境,其中所有我的应用程序和HAProxy在同一覆盖网络上运行。 我希望HAProxy能够在服务器不必启动的情况下启动,因此我的服务器配置例如:
backend cirrus
option httpclose
option forwardfor
balance leastconn
server cirrus01 cirrus-bos01:6021 check init-addr none
注意init-addr none
,它使我可以禁用初始dns解析。
这种配置的问题是所有服务器都被标记为不正常,并且它们永远都不会变得健康,因此我总是得到NOSRV:
2018-12-05T16:50:42+00:00localhost haproxy[12]: 192.168.10.118:64813
[05/Dec/2018:16:50:42.981] main cirrus/<NOSRV>
0/-1/-1/-1/0 503 212 - - SC-- 1/1/0/0/0 0/0
{cirrus.docker-app.qa01.company.com|} "GET / HTTP/1.1"
即使可以从容器本身获得URL cirrus-bos01
。
现在,如果我要从服务器定义中删除check init-addr none
,则haproxy会因我尚未部署的服务而崩溃:
[ALERT] 338/165450 (1) : parsing [/usr/local/etc/haproxy/haproxy.cfg:347] : 'server renderer' : could not resolve address 'ytuploader'.
[ALERT] 338/165450 (1) : Failed to initialize server(s) addr.
因为确实还没有名为ytuploader
的服务器。
是否为此使用了docker / haproxy解决方案?
答案 0 :(得分:0)
我找到了解决方案! 我从更改了服务器定义
server cirrus01 cirrus-bos01:6021 check init-addr none
收件人:
server cirrus01 cirrus-bos01:6021 check init-addr last,libc,none