【发布时间】:2018-10-12 14:55:31
【问题描述】:
目标: 是为使用 Kafka 的特定 spring-boot 服务组织蓝/绿部署。(我对如何在 REST 或 DB 层解决 B/G 不感兴趣,所以让假设这部分 B/G 已经在 LB 上完成)
我想要:在 docker swarm 集群中同时运行两个服务实例。但其中之一必须处于睡眠模式,即不产生和消费任何消息。
最大的问题:为我的服务设置 scale = 2 并不是什么大问题。但是在这种情况下,每个服务实例都将使用事件并处理它们。这会导致灾难。所以我需要简单透明的机制来关闭所有服务的生产者和消费者,并用特定的偏移量恢复它们
我正在寻找如何实现这一目标的示例或建议。
当前想法: 是将当前偏移量存储在 zookeeper 中,并编写自定义层来汇集这些配置并基于此管理消费者和生产者。但是,我相信存在一些更好、更简单的方法/框架。
【问题讨论】:
-
当您说“B/G 已在 LB 上完成”时,您的问题毫无意义。您需要部署服务两次(不是 scale=2)。并且您的负载均衡器选择一个活动的(因此您使用 scale=0 进入睡眠状态)。就是这样。
-
很遗憾没有。我必须一直运行两个服务实例。否则将有停机时间,直到新服务启动。或者我误会你了。
-
我猜是的。您需要部署
--name myservice_blue和--name myservice_red。您的负载均衡器只请求蓝色的。红色可以是 scale=0。当您更新您的红色服务时,您将其扩展到 >= 1,蓝色变为 scale=0,您 LB 请求红色服务。
标签: apache-kafka blue-green-deployment