You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka Connect Debezium MongoDB源连接器无法连接实例求助

Kafka Connect无法连接MongoDB的原因及修复方案

核心问题分析

1. MongoDB副本集初始化的主机名错误

你在初始化MongoDB副本集时,使用了localhost:27017作为节点地址:

rs.initiate({_id: "debezium", members:[{_id: 0, host: "localhost:27017"}]})

在Docker网络环境中,localhost仅指向MongoDB容器自身,Kafka Connect容器无法通过这个地址访问MongoDB服务。

2. Kafka Connect连接器的目标地址错误

连接器配置中的mongodb.hosts字段设置为"debezium/127.0.0.1:27017":

  • 127.0.0.1指向Kafka Connect容器自身,而非MongoDB容器
  • 副本集名称debezium对应的节点地址应该是Docker网络内的MongoDB容器名

修复步骤

步骤1:修正MongoDB副本集配置

  1. 进入MongoDB容器的命令行:
docker exec -it mongodb mongosh
  1. 重新初始化副本集,使用容器名mongodb作为节点地址:
rs.initiate({
  _id: "debezium",
  members: [{_id: 0, host: "mongodb:27017"}]
})
  1. 验证副本集状态(确保状态正常):
rs.status()

步骤2:修正Kafka Connect连接器配置

修改register-mongodb.json中的mongodb.hosts字段为:

"mongodb.hosts": "debezium/mongodb:27017"

然后重新提交连接器配置:

# 先删除原有错误配置的连接器
curl -X DELETE http://localhost:8083/connectors/inventory-connector
# 提交新配置
curl -i -X POST -H "Accept:application/json" -H  "Content-Type:application/json" http://localhost:8083/connectors/ -d @register-mongodb.json

关键原理说明

在Docker自定义网络(这里是confluent网络)中,容器之间可以通过容器名直接互相访问,每个容器的localhost仅代表自身,不能用于跨容器服务访问。因此所有跨容器的服务地址都需要使用目标容器的名称,而非localhost或127.0.0.1。

内容的提问来源于stack exchange,提问作者user1386101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:37:09