[英]Rollback whole swarm when one service fails
Is it possible to rollback another services when only one fails on update with docker stack deploy
?当使用
docker stack deploy
更新只有一个服务失败时,是否可以回滚另一个服务?
For example I have serv1, serv2, serv3.例如我有 serv1、serv2、serv3。 I run
docker stack deploy
, serv1 and serv2 update without any problems, but then serv3 fails on healthcheck.我运行
docker stack deploy
, serv1 和 serv2 update 没有任何问题,但随后 serv3 运行状况检查失败。 Now I want serv1, serv2 and serv3 to rollback to previous version.现在我想让 serv1、serv2 和 serv3 回滚到以前的版本。
Is that possible in docker swarm mode?这在 docker swarm 模式下可行吗?
You can add pinging each other to each service's health check.您可以在每个服务的健康检查中添加相互 ping。
So, service 1 health check - ensures service 1 is running, and both service 2 and service 3 is reachable.因此,服务 1 运行状况检查 - 确保服务 1 正在运行,并且服务 2 和服务 3 均可访问。 For service 2 - ping 1st and 3rd services For service 3 - ping 2nd and 3rd.
对于服务 2 - ping 1st 和 3rd 服务对于服务 3 - ping 2nd 和 3rd。
As result, if any of services fails, its restarted, if it fails to ping any of dependent ones, its restarted too.结果,如果任何服务失败,它会重新启动,如果它无法 ping 任何依赖的服务,它也会重新启动。
I encountered analogous issue, so, we added 4th service - the global healthchecker one, that has docker socket mounted from host, and it pinged all services.我遇到了类似的问题,因此,我们添加了第 4 个服务 - 全局健康检查器,它从主机安装了 docker 套接字,并 ping 所有服务。 It was custom and, quite ugly, nodejs script.
它是自定义的,非常丑陋的 nodejs 脚本。 It pinged/checked each of services it was watching, and if any of them failed, it send
docker service update --force serv1
or something like this to docker socket bound from host machine.它 ping/检查它正在监视的每个服务,如果其中任何一个失败,它会发送
docker service update --force serv1
或类似的东西到从主机绑定的 docker 套接字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.