在 docker 上添加 MongoDB Sink 连接器?
Posted
技术标签:
【中文标题】在 docker 上添加 MongoDB Sink 连接器?【英文标题】:Add MongoDB Sink Connector on docker? 【发布时间】:2021-11-03 07:14:37 【问题描述】:我有一台 Ubuntu 机器,我按照这些步骤使用 docker 运行 Confluent Platform。
https://docs.confluent.io/platform/current/quickstart/ce-docker-quickstart.html
我可以很好地制作和订阅消息。
我正在尝试添加MongoDB Sink Connector
,以便与 mongo 数据库同步数据。
我已经下载了这个压缩文件https://www.confluent.io/hub/hpgrahsl/kafka-connect-mongodb
我已经使用正确的 mongo 端点编辑了 etc/MongoDbSinkConnector.properties
文件
我已将 zip 文件上传到我的 Ubuntu 机器上
我创建了一个文件Dockerfile
,内容如下
FROM confluentinc/cp-kafka-connect-base
COPY hpgrahsl-kafka-connect-mongodb-1.4.0.zip /tmp/hpgrahsl-kafka-connect-mongodb-1.4.0.zip
RUN confluent-hub install --no-prompt /tmp/hpgrahsl-kafka-connect-mongodb-1.4.0.zip
我已经执行了以下命令docker build . -t my-custom-image:1.0.0
Sending build context to Docker daemon 15.03MB
Step 1/3 : FROM confluentinc/cp-kafka-connect-base
---> 8fe065fffe44
Step 2/3 : COPY hpgrahsl-kafka-connect-mongodb-1.4.0.zip /tmp/hpgrahsl-kafka-connect-mongodb-
1.4.0.zip
---> Using cache
---> ed2e4ec7ff97
Step 3/3 : RUN confluent-hub install --no-prompt /tmp/hpgrahsl-kafka-connect-mongodb-1.4.0.zip
---> Using cache
---> 034f82e2e136
Successfully built 034f82e2e136
Successfully tagged my-custom-image:1.0.0
我错过了什么吗?我的 mongo 没有更新
我是否也必须编辑docker-compose.yml
?
如何调试这个连接器,它有日志吗?
【问题讨论】:
【参考方案1】:当您在 Docker(包括cp-kafka-connect-base
)映像下运行 Kafka Connect 时,它通常处于 分布式 模式。要在此模式下创建连接器配置,请使用 REST 调用;它不会从平面文件加载配置(每个独立模式)。
您可以启动已创建的容器,然后使用 REST 调用手动创建连接器,也可以自动执行该 REST 调用 - 以下是在 Docker Compose 中执行此操作的示例:
kafka-connect-01:
image: confluentinc/cp-kafka-connect-base:6.2.0
depends_on:
- kafka
ports:
- 8083:8083
environment:
CONNECT_BOOTSTRAP_SERVERS: "kafka:29092"
[…]
command:
- bash
- -c
- |
#
echo "Installing connector plugins"
confluent-hub install --no-prompt hpgrahsl/kafka-connect-mongodb:1.4.0
#
echo "Launching Kafka Connect worker"
/etc/confluent/docker/run &
#
echo "Waiting for Kafka Connect to start listening on localhost ⏳"
while : ; do
curl_status=$$(curl -s -o /dev/null -w %http_code http://localhost:8083/connectors)
echo -e $$(date) " Kafka Connect listener HTTP state: " $$curl_status " (waiting for 200)"
if [ $$curl_status -eq 200 ] ; then
break
fi
sleep 5
done
echo -e "\n--\n+> Creating connector"
curl -s -X PUT -H "Content-Type:application/json" http://localhost:8083/connectors/mongo-connector/config \
-d '
[… connector JSON config goes here …]
'
sleep infinity
参考资料:
https://rmoff.net/2018/12/15/docker-tips-and-tricks-with-kafka-connect-ksqldb-and-kafka/ https://developer.confluent.io/learn-kafka/kafka-connect/docker/【讨论】:
嗨罗宾,实际上我刚刚解决了这个问题,在 youtube 上查看了您的博客和视频之后。非常感谢:D rmoff.net/2020/06/19/…以上是关于在 docker 上添加 MongoDB Sink 连接器?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用在 docker 上运行的 debezium 和 confluent-sink-connector 将所有更改从源数据库复制到目标数据库
添加 Root 密码并在启动时在 MongoDB Docker 容器上创建应用程序用户