docker - 在 Docker Swarm 中通过运行状况检查滚动更新服务
问题描述
我目前正在尝试在 Docker Swarm 中部署 Kafka 集群。Kafka 不适用于 Swarm 的副本功能,因为每个 Kafka 代理(节点)都需要单独配置和可访问(即前面没有负载均衡器)。因此,每个代理都配置为具有replicas=1的单独服务,例如kafka1、kafka2和kafka3服务。
时不时地,需要通过docker stack deploy更改 Kafka 代理的配置或映像(由人员或 CI/CD 管道完成)。然后 Swarm 将同时重新创建所有容器,因此 Kafka 集群暂时不可用,这对于应该运行 24/7 的关键基础设施是不可接受的。我什至还没有提到 Kafka 下的 Zookeeper 集群,这同样适用。
期望的行为是 Swarm 重新创建kafka1服务的容器,等到它完全启动并与其他代理同步(所有主题分区都同步),然后 Swarm 才重新启动kafka2服务等等。
我想我可以在 Kafka Docker 映像中构建一个健康检查,当 Kafka 代理完全同步时,它会告诉 Docker 引擎。但是如何让 Swarm 执行相当于跨服务边界的滚动更新呢?它忽略了Docker Compose 知道的depends_on设置,并且滚动更新策略仅适用于服务副本。任何想法?
解决方案
推荐阅读
- sql - 如何从 xmltable 中的不同级别获取数据?
- c# - 用于 UWP 触摸应用的 GridView 上的两指滑动手势
- javascript - 关闭!jquery获取函数和回调
- javascript - 如何在 ngOnInit 中使用条件测试函数
- python - 无法理解 re.findall() 行为
- applescript - Applescript: Open a new Safari tab from a display dialog box
- typescript - Angular 2 渲染动态 ngClass
- python - 树莓派 Pygame 触摸屏问题
- python - 在 Pandas 中将类别类型从一个数据帧重新映射到另一个数据帧
- sparql - 绑定到由 VALUES 和大括号提供的内联数据