Docker Swarm中docker stack deploy更新单服务失败是否支持全栈回滚
Docker Swarm 多服务更新失败回滚问题解答
Docker Swarm 原生不支持 stack 部署时单个服务更新失败后自动触发同 stack 下所有服务全局回滚的能力,默认回滚逻辑为单服务维度独立生效。
详细说明
- 执行
docker stack deploy更新时,同 stack 下的所有服务会按照各自配置的更新策略独立执行升级操作,单个服务因健康检查失败触发回滚逻辑时,不会反向修改已经更新成功的其他服务的配置和版本,所以你场景里的serv1、serv2不会因为serv3更新失败自动回滚。 - 如果你需要实现三个服务全部回滚到更新前版本的需求,可以手动执行单服务回滚命令完成:
每个服务执行回滚命令后,会自动恢复到上一次部署成功的镜像版本、配置参数,且会遵循服务配置的回滚策略完成滚动回滚,不影响业务可用性。docker service rollback serv1 docker service rollback serv2 docker service rollback serv3 - 如果你需要实现更新失败自动全局回滚的能力,可以自行编写简单的运维脚本:在
docker stack deploy执行完成后,轮询检测同 stack 下所有服务的更新状态,只要检测到任意服务更新失败,就遍历所有服务批量执行docker service rollback命令即可。
小提示:你可以在compose文件中为服务配置
update_config.failure_action为rollback,确保单个服务更新失败后会自动回滚到上一版本,避免单个服务停留在异常状态。
内容的提问来源于stack exchange,提问作者Pepsko
相关产品推荐
相关产品推荐

