零停机部署与配置管理
1. 服务创建与更新行为定义
虽然使用堆栈文件定义和部署应用是推荐的最佳实践,但我们也能在服务创建语句中定义更新行为。若仅需部署单个服务,这种方式或许更为合适。以下是一个创建命令示例:
$ docker service create --name web \
--replicas 10 \
--update-parallelism 2 \
--update-delay 10s \
nginx:alpine
此命令定义的期望状态与之前的堆栈文件相同。我们希望该服务以 10 个副本运行,并进行滚动更新,每次更新两个任务,连续批次之间间隔 10 秒。
2. 健康检查
在进行 Swarm 服务的滚动更新时,为了能做出明智决策,例如判断刚安装的一批新服务实例是否运行正常,或者是否需要回滚,SwarmKit 需要了解系统的整体健康状况。虽然 SwarmKit(和 Docker)本身可以收集大量信息,但存在一定局限性。例如,一个包含应用程序的容器,从外部看可能运行良好,但容器内的应用程序可能处于无限循环或损坏状态。
因此,SwarmKit 提供了一个机制,允许我们定义一个命令来测试应用服务的健康状况。这个命令只需返回 OK、NOT OK 或超时,后两种情况会告知 SwarmKit 正在检查的任务可能不健康。
以下是 Dockerfile 中健康检查的示例:
FROM alpine:3.6
...
超级会员免费看
订阅专栏 解锁全文
397

被折叠的 条评论
为什么被折叠?



