我是靠谱客的博主 朴实香氛,最近开发中收集的这篇文章主要介绍Docker Swarm (滚动更新Update),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一,简介

这么一个场景,当我们一个服务需要更新的时候,我们不希望在我们的更新期间,用户无法访问。我们期望的是用户无感知的更新。现实中比如Redis 版本升级 4.0.4 -> 4.0.5,假设一共有3个redis实例,我们希望的是,更新的时候先停止一个,在更新,更新完成这个之后,再停止另一个,以此类推,而不是一下子把所有的都停止。在服务特别多的时候,这么做无疑是痛苦的,正好Docker帮我们现实了。下面我们来演示一下。

二,更新演示

2.1,创建 redis 服务,版本 4.0.4

docker service create --name redis --replicas 3 redis:4.0.4

2.2,查看实例运行情况

docker service ps redis

2.3、升级 redis 服务到 4.0.5 版本

docker service update --image redis:4.0.5 redis

2.3、查看 redis 服务的任务列表

docker service ps redis

上图可以看出是以此更新

三,其他

1、任务或任务组之间更新延迟时间的设置

使用 --update-delay 来配置,单位 s、m、h,1小时20分30秒即 1h20m30s

2、任务调度器并行任务数量的配置

默认并行任务的数量为 1,如上案例所示,redis 服务有 3 个副本,在更新过程中,会有 3 个新的任务来执行 3 个副本的更新,由于最大并发任务执行量是 1,所以 3 个副本会依次更新。

可以通过 --update-parallelism 来配置最大任务并发执行数量。

3、任务更新失败的情况

默认情况下,当对单个任务的更新返回 RUNNING 状态时,调度程序开始更新另一个任务,直到所有任务都更新。如果在更新期间任务返回 FAILED 状态,则调度程序会暂停更新。

可以使用 docker service create 或 docker service update 的 --update-failure-action 来控制失败后的行为。

4、滚动升级的条件

服务平滑升级需要至少2个副本,单副本服务在更新过程中不可用。

 

最后

以上就是朴实香氛为你收集整理的Docker Swarm (滚动更新Update)的全部内容,希望文章能够帮你解决Docker Swarm (滚动更新Update)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部