如何在Docker Swarm中实现服务的逐步重启
Docker Swarm 多副本服务逐步重启实现方案
Docker Swarm 原生内置滚动更新/重启能力,完全支持你要求的逐个重启副本的需求,无需额外工具即可实现。
核心配置参数
你可以通过3个核心参数控制重启行为:
--update-parallelism:定义每批同时操作的副本数量,要实现逐个重启只需将该值设为1--update-delay:定义两批副本重启之间的等待间隔,可根据自身服务启动耗时配置(比如30s),确保上一个副本完全启动正常后再处理下一个--update-failure-action:定义重启失败后的处理逻辑,推荐设为pause,一旦某个副本重启异常会自动暂停后续操作,避免故障范围扩大
具体操作步骤
1. 新建服务时提前配置重启策略
以3副本的nginx服务为例,配置逐副本重启、间隔30s、失败暂停的规则:
docker service create --name nginx --replicas 3 \ --update-parallelism 1 \ --update-delay 30s \ --update-failure-action pause \ nginx:latest
2. 为已有服务更新重启策略
如果服务已经在运行,直接更新配置即可:
docker service update \ --update-parallelism 1 \ --update-delay 30s \ --update-failure-action pause \ 你的服务名称
3. 手动触发逐步重启
需要执行月度重启操作时,执行以下命令即可自动按配置的规则逐副本重启:docker service update --force 你的服务名称
重启过程中你可以执行docker service ps 你的服务名称查看每个副本的重启进度,Swarm默认会先启动新副本、确认健康检查通过后再下线旧副本,只要服务健康检查配置正确,重启过程不会出现服务中断。
内容的提问来源于stack exchange,提问作者dariush
相关产品推荐
相关产品推荐

