跨两个不同的 kafka 连接集群的相同消费者组(s3 接收器连接器)

Same consumer group (s3 sink connector) across two different kafka connect cluster

我正在将 Kafka 连接器从 ECS 集群迁移到 Kubernetes 上的新集群 运行。我通过删除 Postgres 源连接器并在确切的复制槽上重新创建它们,成功地迁移了它们。他们不断地在同一个 Kafka 集群中写入相同的主题。旧集群中的 S3 连接器继续从这些数据中读取并将记录写入 S3。一切如常。

但现在要移动 AWS s3 接收器连接器,我首先在新集群中创建了一个与旧集群中名称相同的非关键 s3 连接器。我打算等几分钟再删除旧的以避免丢失数据。令我惊讶的是,看起来(基于 akhq.io 提供的 UI)那个新 s3 连接器上的一名工作人员加入了现有的同一消费者组。我完全期待有重复的数据。基于 Confluent doc,

All Workers in the cluster use the same three internal topics to share connector configurations, offset data, and status updates. For this reason all distributed worker configurations in the same Connect cluster must have matching config.storage.topic, offset.storage.topic, and status.storage.topic properties.

因此,从这个“相同的 Connect 集群”来看,我认为具有相同的消费者组 ID 只能在相同的 connect 集群中起作用。但是根据我的观察,您似乎可以在属于同一消费者组的不同集群中拥有多个消费者?

基于此article __consumer_offsets 被消费者使用,与其他隐藏的“偏移量”相关主题不同,它没有任何集群名称指定。

这是否意味着我可以简单地在新的 Kubernetes 集群中创建 S3 接收器连接器,然后删除 ECS 集群中的连接器,而不会重复或丢失数据(只要它们具有相同的名称 -> 相同的消费者组) ?我不确定这是否是人们通常使用的正确模式。

我不熟悉使用 Kafka Connect 集群,但我知道它是一个独立于 Kafka 集群的连接器集群。

在那种情况下,由于连接器使用的是同一个 Kafka 集群,而您只是将它们从 ECS 移动到 k8s,因此它应该可以像您描述的那样工作。消费者偏移信息和 internal kafka connect offsets information 存储在 Kafka 集群中,因此连接器 运行 的位置并不重要,只要它们连接到同一个 Kafka 集群即可。它们应该从相同的位置重新开始或作为相同连接器的额外副本,而不管它们在哪里 运行ning。