首页新闻找找看学习计划

docker swarm在容器切换时的内部dns服务器解析问题

0
悬赏园豆:200 [待解决问题]

遇到一个头疼的问题,在docker swarm上部署时会进行容器切换(启动新容器关闭旧容器),在切换过程中服务名(以及主机名)就无法解析,其他容器访问这个服务时就会出现短暂的 Could not resolve host 错误。

对应那些跑后端webapi的容器来说,这个问题的影响就非常大,在容器切换期间,所有依赖该容器的其他容器全部受影响。

请问如何解决这个头疼的问题?

问题补充:

之前弄错了,切换容器不会更换IP,提问内容已修改

This IP persists on each container even if the container is redeployed and ends up on a different host.

/var/log/syslog 中对应的错误

level=error msg="wait not found for raft request id 6015cd8ae319"

dudu的主页 dudu | 高人七级 | 园豆:40840
提问于:2017-12-02 11:13
< >
分享
所有回答(2)
3

中间增加一个反向代理层,每次变更去修改反向代理层(快,秒级生效)。

我们这边的做法是,容器发生迁移时,通过WebHooks通知gateway变更。注:没用Swarm。

幻天芒 | 园豆:36522 (高人七级) | 2017-12-02 12:08

我们使用的路由容器docker flow proxy采用的就是这样的机制(用于对外提供访问的容器),但对应一些重要的webapi容器,秒级也是不能接受的

支持(0) 反对(0) dudu | 园豆:40840 (高人七级) | 2017-12-02 13:34

@dudu: 对于负载均衡来说,有健康检查,并不是一次性完全切换,所以总是有服务可用。

支持(0) 反对(0) 幻天芒 | 园豆:36522 (高人七级) | 2017-12-02 21:39
2

这是docker swarm的bug,github上很多人反馈了这个问题:Docker Swarm Mode service discovery is totally unstable

dudu | 园豆:40840 (高人七级) | 2017-12-02 14:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册