首页 > 解决方案 > Confluent Kafka连接分布式模式jdbc连接器

问题描述

我们已经使用 jdbc 独立连接器成功地使用了 MySQL - kafka 数据摄取,但现在在分布式模式下使用相同的连接器(作为 kafka 连接服务)面临问题。

用于工作正常的独立连接器的命令 -

/usr/bin/connect-standalone /etc/kafka/connect-standalone.properties /etc/kafka-connect-jdbc/source-quickstart-mysql.properties

现在我们已经停止了这个,并像这样以分布式模式启动了 kafka 连接服务 -

systemctl status confluent-kafka-connect
● confluent-kafka-connect.service - Apache Kafka Connect - distributed
   Loaded: loaded (/usr/lib/systemd/system/confluent-kafka-connect.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-11-14 22:52:49 CET; 41min ago
     Docs: http://docs.confluent.io/
 Main PID: 130178 (java)
   CGroup: /system.slice/confluent-kafka-connect.service
           └─130178 java -Xms256M -Xmx2G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.a...

2 个节点当前正在使用相同的connect-distributed.properties文件运行连接服务。

bootstrap.servers=node1IP:9092,node2IP:9092
group.id=connect-cluster
key.converter.schemas.enable=true
value.converter.schemas.enable=true
offset.storage.topic=connect-offsets
offset.storage.replication.factor=1
config.storage.topic=connect-configs
config.storage.replication.factor=1
status.storage.topic=connect-status
status.storage.replication.factor=1
offset.flush.interval.ms=10000
plugin.path=/usr/share/java

连接服务已启动并正在运行,但它不会加载在/etc/kafka/connect-standalone.properties.

应该对服务执行什么操作,以便每当您点击命令systemctl start confluent-kafka-connect时,它都会运行服务并启动定义的连接器,/etc/kafka-connect-*/就像您手动运行独立连接器时一样,手动提供属性文件的路径。

标签: apache-kafkaapache-kafka-connectconfluent-platform

解决方案


它运行服务并启动下定义的连接器/etc/kafka-connect-*/

这不是分布式模式的工作方式......它不知道您要加载哪些属性文件,并且它不扫描那些文件夹1

使用独立模式N+1,您提供的属性文件会立即加载,是的,但是对于连接分布式,您必须使用HTTP POST 调用 Connect REST API


Confluent Control Center 或 Landoop 的 Connect UI 可以为这些操作提供一个很好的管理 Web 门户。

顺便说一句,如果您有多个代理,我建议您增加connect-distributed.properties文件中连接主题的副本因子。

1.如果这样做可能是一个不错的功能,但是您必须确保连接器在分布式模式下永远不会被删除/停止,并且您最终会处于与正在运行的内容和文件系统上的文件不一致的状态。


推荐阅读