29、零停机部署与配置管理

零停机部署与配置管理

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
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值