马拉松集装箱与Haproxy负载平衡,领事随机返回503个请求

目前的架构是这样组织的:

  • 192.168.1.10,192.168.1.11,192.168.1.12 – 与马拉松和领事服务器mesos大师
  • 192.168.1.21,192.168.1.22,192.168.1.23 – 三名中间人与领事代理人

每台机器有以下configuration:

  • 它自己的IP地址作为DNS服务器
  • HAPROXY with consul-template用于自动生成haproxy.cfg
  • 用于注册正在运行的docker集装箱的主机IP地址的通知,以避免在从不同的机器parsing时在DNS中具有172.1.0.1地址的服务

我目前遇到的问题是,当我启动docker容器与桥接模式的服务,该地址是由DNS解决,因为它应该是(如果你有luigi.service.consul它将完成没有问题) ,但是当我尝试CURL -L http://luigi.service.consul/ ,我有随机503 error codes ,有时地址parsing,有时不是。

任何想法如何调查?

我检查了/etc/resolv.conf并且/etc/resolv.conf地,我可以看到DNS地址更改为旧的DNS IP地址(8.8.8.8),我应该使用主机IP地址作为DNS IP,还是我需要使用领事领导地址?

我已经尝试debuggingtcpflow,当响应是503,就像等待一段时间,就像它是无法解决的服务。

需要一些时间来获取Docker镜像,启动容器,并最终开始提供服务请求。 理想情况下,您应该在新实例准备好的时候重新加载HAProxy。 但是,您的旧实例可能仍有活动连接。 当你开始调查这个问题的时候,事实certificate,一个解决scheme已经存在了,这就是所谓的蓝绿configuration ,如M. Fowler所描述的那样。

如果您的目标是零停机时间,那么不会有一个小问题。 Yelp工程师通过向iptables添加额外的规则来描述如何以真正的零停机时间重新加载HAProxy。

最近, 蓝绿色的部署scheme被合并为马拉松 – 磅 (包括来自Yelp的iptables技巧)。 我认为现在的consul-mesos不支持这个。