简体   繁体   English

当一项服务失败时回滚整个集群

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM