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

Rollback whole swarm when one service fails

是否可以在 docker stack deploy 更新失败时回滚其他服务?

例如我有serv1、serv2、serv3。我运行docker stack deploy, serv1 和 serv2 更新没有任何问题,但是 serv3 在健康检查时失败。现在我想让 serv1、serv2 和 serv3 回滚到以前的版本。

在docker集群模式下可以吗?

您可以在每个服务的健康检查中添加相互 ping。

因此,服务 1 运行状况检查 - 确保服务 1 运行,并且服务 2 和服务 3 均可访问。 对于服务 2 - ping 1st 和 3rd 服务 对于服务 3 - ping 2nd 和 3rd.

因此,如果任何服务失败,它会重新启动,如果它无法 ping 任何依赖的服务,它也会重新启动。

我遇到了类似的问题,因此,我们添加了第 4 个服务——全局健康检查器,它从主机安装了 docker 个套接字,它对所有服务执行 ping 操作。这是自定义的,非常丑陋的 nodejs 脚本。它 pinged/checked 它正在监视的每个服务,如果其中任何一个失败,它会发送 docker service update --force serv1 或类似的东西到从主机绑定的 docker 套接字。