当只有一个服务在更新docker stack deploy
时失败时,是否可以回滚其他服务?
例如我有serv1, serv2, serv3。我运行docker stack deploy
,Serv1和serv2更新没有任何问题,但是serv3在健康检查时失败。现在我想要serv1, serv2和serv3回滚到以前的版本。
在docker swarm模式下是可能的吗?
可以在每个服务的健康检查中添加ping。
因此,服务1健康检查-确保服务1正在运行,服务2和服务3都可达。对于服务2,ping第1和第3服务对于服务3 - ping第二和第三。
因此,如果任何一个服务失败,它将重新启动,如果它无法ping通任何依赖的服务,它也将重新启动。
我遇到了类似的问题,所以,我们添加了第4个服务——全局健康检查器,它从主机上挂载了docker套接字,并ping通所有服务。这是自定义的,相当难看的nodejs脚本。它ping/检查它正在监视的每个服务,如果其中任何一个失败,它将docker service update --force serv1
或类似的东西从主机发送到docker套接字绑定。