在Kafka Connect中,如何连接多个kafka集群?

uidvcgyl  于 2023-03-22  发布在  Apache
关注(0)|答案(2)|浏览(399)

我在分布式模式下设置了Kafka连接集群,我想获得与多个kafka CLUSTERS的连接,而不仅仅是多个broker。目标broker可以在connect-distributed.properties中使用bootstrap.servers设置。所以,首先,我从kafka-cluster-A设置broker 1如下:

bootstrap.servers=broker1:9092

当然,效果很好。
然后,我从kafka-cluster-B添加了broker 2,如下所示:

bootstrap.servers=broker1:9092,broker2:9092

所以,这两个代理在不同的集群中。这根本不起作用。没有任何错误,它只是卡住了,并且没有通过REST API创建连接器之类的请求的答案。
如何连接多个Kafka集群?

whlutmcx

whlutmcx1#

据我所知,你只能将一个Kafka Connect worker连接到一个Kafka集群。
如果你想用Kafka Connect处理不同集群上的数据,请运行多个Kafka Connect工作进程。

sr4lhrrt

sr4lhrrt2#

如果在源群集(而不是目标群集)上运行Connect,则需要执行以下操作:
1.将bootstrap.servers设置为www.example.com中的源服务器connect-distributed-worker.properties
1.通过Connect REST API启动实际镜像:

curl --noproxy "*" -XPOST -H 'Content-Type: application/json' -H 'Accept: application/json' http://localhost:8083/connectors -d'{
    "name": "MirrorSourceConnector",
    "config": {
        "connector.class": "org.apache.kafka.connect.mirror.MirrorSourceConnector",
        "replication.factor": "1",
        "source.cluster.alias": "site1",
        "target.cluster.alias": "cloud",
        "source.cluster.bootstrap.servers": "localhost:29092",
        "target.cluster.bootstrap.servers": "localhost:49092",
        "topics": ".*",
        "emit.checkpoints.interval.seconds": "1",
        "emit.heartbeats.interval.seconds": "1",
        "sync.topic.acls.enabled": "false",
        "refresh.topics.interval.seconds": "4",
        "producer.override.bootstrap.servers":"localhost:49092"
    }
    }'

到目前为止,最重要的是:

“producer.override.bootstrap.servers”:“localhost:49092”

这实际上导致了源-〉目标复制的工作。我不知道为什么"target.cluster.bootstrap.servers": "localhost:49092"不像它应该的那样工作。但是这个解决方案是有效的。没有这个片段,复制将只复制源集群上带有“site 1”前缀的主题,而不对目标做任何事情。
这在OSS文档中没有任何记录,我在blog post和Confluent页面“在源群集上运行Replicator”中发现了它
(This解决方案在Apache Kafka Connect 3.2.0和/或cp-kafka:7.2.1 Docker镜像上测试)

相关问题