Pulsar MongoDB Debezium源连接器无法连接MongoDB Atlas求助
无法通过Debezium MongoDB源连接器连接MongoDB Atlas集群
我通过Docker Compose部署了Pulsar容器,配置Debezium MongoDB源连接器后,始终无法成功连接MongoDB Atlas集群。已严格参照官方文档配置,且咨询过Pulsar和Debezium社区,仍未解决问题。
相关配置与操作
1. Pulsar Docker Compose配置
# 替换为你的实际Docker Compose配置内容 version: '3.8' services: pulsar: image: apachepulsar/pulsar:latest ports: - "6650:6650" - "8080:8080" volumes: - ./pulsar-data:/pulsar/data command: bin/pulsar standalone
2. Debezium MongoDB源连接器配置
{ "name": "mongodb-source-connector", "config": { "connector.class": "io.debezium.connector.mongodb.MongoDbConnector", "mongodb.connection.string": "mongodb+srv://<username>:<password>@<cluster-name>.mongodb.net/", "mongodb.database": "target-db", "collection.include.list": "target-db.target-collection", "tasks.max": "1", "topic.prefix": "mongodb", "mongodb.ssl.enabled": "true" } }
3. 启动连接器的命令
docker exec -it <pulsar-container-id> bin/pulsar-admin sources create --source-config-file /path/to/connector-config.json
错误日志
方式一:使用mongodb+srv连接字符串时的错误
org.apache.pulsar.client.api.PulsarClientException: Failed to validate MongoDB connection: com.mongodb.MongoSocketException: couldn't resolve host name at io.debezium.connector.mongodb.MongoDbConnector.validate(MongoDbConnector.java:324) ... Caused by: com.mongodb.MongoSocketException: couldn't resolve host name at com.mongodb.internal.connection.SocketStreamHelper.initializeSocket(SocketStreamHelper.java:107) ...
方式二:使用标准连接字符串时的错误
org.apache.pulsar.client.api.PulsarClientException: Failed to validate MongoDB connection: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='<username>', source='admin', password=<hidden>, mechanismProperties=<hidden>} at io.debezium.connector.mongodb.MongoDbConnector.validate(MongoDbConnector.java:324) ... Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='<username>', source='admin', password=<hidden>, mechanismProperties=<hidden>} at com.mongodb.internal.connection.SaslAuthenticator.wrapException(SaslAuthenticator.java:263) ...
排查建议
- 网络连通性验证:进入Pulsar容器内部,执行
ping <cluster-shard>.mongodb.net或telnet <cluster-shard>.mongodb.net 27017,确认容器能正常访问Atlas节点。若使用Docker默认bridge模式,需确保主机防火墙允许容器出站访问27017/27018端口。 - Atlas白名单检查:登录MongoDB Atlas控制台,确认IP白名单已添加Pulsar容器所在主机的公网IP,测试环境可临时添加
0.0.0.0/0(生产环境禁止)。 - 连接字符串校验:核对用户名、密码、集群地址是否准确,密码中的特殊字符(如
@、:)需做URL编码。 - 版本兼容性确认:确保Debezium MongoDB连接器版本与Atlas的MongoDB版本匹配(例如Atlas 6.0需搭配Debezium 2.3及以上版本)。
- DNS解析测试:使用
mongodb+srv时,在容器内执行nslookup -type=SRV _mongodb._tcp.<cluster-name>.mongodb.net,确认SRV记录能正常解析。 - SSL配置检查:显式设置
mongodb.ssl.enabled=true,并确认容器内已安装必要的CA证书(部分基础镜像可能缺失根证书,需手动添加)。
内容的提问来源于stack exchange,提问作者Services Ramses
相关产品推荐
相关产品推荐

