【问题标题】:kafka_connect not finding its connectorskafka_connect 没有找到它的连接器
【发布时间】:2019-08-25 07:21:48
【问题描述】:

我有一个 confluent kafka 集群在 EC2 机器上的 docker 容器中运行,如下所示

  • 3 个 docker 容器位于不同的 EC2 实例上,用于 zookeepers 和 kafka-brokers
  • 1 个 docker 容器位于单独的 EC2 实例上,用于
    confluent_control_center
  • 1 个 docker 容器位于上述控制中心为 kafka_connect 运行的同一 EC2 实例上

以下是 control_centerkafka_connect

的配置

控制中心

bootstrap.servers=<ec2_1:9092,ec2_2:9092,ec_3:9092>
zookeeper.connect=<ec2_1:2181,ec2_2:2181,ec_3:2181>
confluent.controlcenter.data.dir=/var/lib/confluent-control-center
confluent.monitoring.interceptor.topic.replication=1
confluent.controlcenter.internal.topics.replication=1
confluent.controlcenter.command.topic.replication=1
confluent.metrics.topic.replication=1
confluent.controlcenter.internal.topics.partitions=1
confluent.monitoring.interceptor.topic.partitions=1
confluent.controlcenter.config.dir=/etc/confluent-control-center
confluent.controlcenter.streams.num.stream.threads=2
confluent.controlcenter.replication.factor=1
confluent.controlcenter.connect.cluster=http://<kafka_connect_ec2>:8083

卡夫卡连接

config.storage.topic=connect_config
log4j.root.loglevel=INFO
group.id=kafka-connect
bootstrap.servers=<ec2_1:9092,ec2_2:9092,ec_3:9092>
plugin.path=/usr/share/confluent-hub-components
key.converter=org.apache.kafka.connect.json.JsonConverter
offset.storage.topic=connect-offsets
internal.key.converter.schemas.enable=false
consumer.interceptor.classes=io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor
value.converter=org.apache.kafka.connect.json.JsonConverter
status.storage.topic=connect-status
producer.interceptor.classes=io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor
internal.value.converter.schemas.enable=false
rest.advertised.host.name=CONNECT
internal.value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter=org.apache.kafka.connect.json.JsonConverter

在下面的截图中,我显示我在插件目录中安装了 gcs 连接器

root@76763ee93675:/usr/share/confluent-hub-components# ls
confluentinc-kafka-connect-gcs

但是,当我启动容器时,我看不到 gcs 也无法通过使用它到达 kafka-connect rest api

http://kafka_connect_ec2:8083/connectors

上面返回一个空列表[]

我也看不到 control_center 中的 gcs 连接器

一些帖子建议将实际的 gcs jar 文件移动到插件目录中,我尝试过没有运气。

另一件事我无法理解,在图片中您可以看到 control_center 可以“看到”的 2 个连接器

  • SchemaSourceConnector
  • FileStreamSourceConnector

我不确定 control_center 在哪里找到这些。

有人能告诉我这里的配置错误吗?

提前致谢。

【问题讨论】:

    标签: docker apache-kafka-connect confluent-platform control-center


    【解决方案1】:

    控制中心可能不是问题,因此在连接器 url 之外不需要配置。

    您可以查找 Connect 服务器的 /connector-plugins 以查看相同的内容。

    您需要确保正确设置 plugin.path 以从 /usr/share/java/usr/share/confluent-hub-components 读取,以查看已安装的融合集线器以及任何预安装的连接器。

    您列出的这两个是 CLASSPATH 变量的一部分,Connect 进程也会选择该变量

    注意:根据 Confluent 文档,GCS 连接器已经是 Kafka Connect Docker 镜像的一部分。

    【讨论】:

    • 感谢您的回答。我将对此表示赞成,以确认我怀疑问题出在 kafka-connect 方面而不是在控制中心方面,但是问题是由于其他原因造成的。我将在下面分别发布问题和解决方案。干杯!
    【解决方案2】:

    如果其他人偶然发现这样的问题...... 发生的事情是运行 kafka-connect 的 docker 容器没有足够的资源来加载所有连接器,因此它要么会加载一些连接器并忽略其余的连接器,要么会耗尽资源并使主机遥不可及。我希望 Kafka 连接日志能够反映连接器加载失败的事实。 无论如何,由于我在 EC2 实例上运行我的设置,我所要做的就是升级我的实例大小,这解决了这个问题。 谢谢!

    【讨论】:

    • 你能描述一下你是如何调试这个问题的吗?还有,你是什么意思实例不足,CPU,RAM,磁盘空间?
    • 是的。实例内存不足。所以它随机删除了一些类,也使 UI 不可用,因为我同时部署了连接和控制中心。在我的开发环境中的相同 UI 上。希望这可以帮助。祝你好运。
    猜你喜欢
    • 2021-09-08
    • 2018-12-27
    • 1970-01-01
    • 2011-09-20
    • 2021-10-04
    • 2021-05-09
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多