Kafka Connect 加载插件失败
Posted
技术标签:
【中文标题】Kafka Connect 加载插件失败【英文标题】:KafkaConnect fails to load plugin 【发布时间】:2022-01-23 20:37:30 【问题描述】:我正在使用 Strimzi 在 K8s 上部署 KafkaCluster、KafkaConnect。
Strimzi 算子集群镜像:quay.io/strimzi/operator:0.26.1 Kafka 镜像:quay.io/strimzi/kafka:0.26.1-kafka-3.0.0。我正在尝试设置连接到 Postgres DB 的 KafkaConnector。
这些是我的步骤:
从此图像“quay.io/strimzi/kafka:0.26.1-kafka-3.0.0”构建一个新的 KafkaConnect。这个新图像有我从这个链接“https://debezium.io/documentation/reference/stable/connectors/postgresql.html#postgresql-deployment”下载的插件
我在 K8s 上运行这个新镜像,然后执行到 KafkaConnect 容器中。它有正确的插件('/opt/kafka/plugins/debezium/debezium-connector-postgres'):
我创建了引用类 'io.debezium.connector.postgresql.PostgresConnector' 的 KafkaConnector:
kind: "KafkaConnector"
metadata:
name: dev-approvalflowservice-connector
labels:
strimzi.io/cluster: postgres-connect-cluster-1
spec:
class: io.debezium.connector.postgresql.PostgresConnector
tasksMax: 2
config:
database.hostname: 10.14.101.204
database.port: "5432"
database.user: "debezium"
database.password: "debezium"
database.dbname: "approvalflowservice"
database.server.name: "approvalflowservice"
plugin.name: "pgoutput"
slot.name: "approvalflowserviceslot"
truncate.handling.mode: "include"
table.include.list: "public.approval_flow"
-
问题是 KafkaConnect 无法加载我已经添加到新 KafkaConnect 映像中的插件。来自 KafkaConnect 的日志:log
更新
-
我尝试在新的 KafkaConnect 映像中更改插件的位置 ('/opt/kafka/plugins/debezium-connector-postgres'):
问题一样:log
谢谢大家。
【问题讨论】:
【参考方案1】:在你的日志中,你有
Loading plugin from: /opt/kafka/plugins/debezium
但是,由于您的插件已安装到子文件夹中,因此没有 Postgres 类被列为已加载。
确保插件路径在您定义的路径和 JAR 可用的位置之间只有一个文件夹。例如安装到/opt/kafka/plugins/debezium-connector-postgres
您还可以在创建之前向 Connect API 发出GET /connector-plugins
HTTP 请求,以列出集群的可用连接器。
【讨论】:
谢谢。我按照您的建议进行了尝试,但仍然存在相同的问题。 也许该文件夹的文件权限已关闭?例如,如果图像以非根用户身份运行,则无法读取该文件夹的文件(并且您的图像显示您以kafka
用户身份运行ls
)。你也可以尝试在 k8s 之外运行镜像来验证它的行为。否则,您应该可以在这里报告 Debezium 问题 issues.redhat.com/projects/DBZ/issues以上是关于Kafka Connect 加载插件失败的主要内容,如果未能解决你的问题,请参考以下文章