遇到一个头疼的问题,在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"
中间增加一个反向代理层,每次变更去修改反向代理层(快,秒级生效)。
我们这边的做法是,容器发生迁移时,通过WebHooks通知gateway变更。注:没用Swarm。
我们使用的路由容器docker flow proxy采用的就是这样的机制(用于对外提供访问的容器),但对应一些重要的webapi容器,秒级也是不能接受的
@dudu: 对于负载均衡来说,有健康检查,并不是一次性完全切换,所以总是有服务可用。