Skip to content

NimTechnology

Trình bày các công nghệ CLOUD một cách dễ hiểu.

  • Kubernetes & Container
    • Docker
    • Kubernetes
      • Ingress
    • Helm Chart
    • Isito-EnvoyFilter
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Vault
    • Longhorn – Storage
    • VictoriaMetrics
  • CI/CD
    • ArgoCD
    • ArgoWorkflows
    • Spinnaker
    • Jenkins
    • Harbor
    • TeamCity
    • Git
      • Bitbucket
  • Coding
    • Terraform
      • GCP – Google Cloud
      • AWS – Amazon Web Service
    • Golang
    • Laravel
    • Python
    • Jquery & JavaScript
    • Selenium
  • Log & Monitor
    • Prometheus
    • Grafana
    • ELK
      • Kibana
      • Logstash
  • BareMetal
  • Toggle search form

[Kafka-connect] Streaming the data of MongoDB through Kafka-connect into topic Kafka.

Posted on February 23, 2022May 22, 2022 By nim No Comments on [Kafka-connect] Streaming the data of MongoDB through Kafka-connect into topic Kafka.

Contents

  • 1) Install MongoDB
  • 2) Create Mongo Source Connector on Kafka-connect

1) Install MongoDB

Nếu bạn chưa rành về mongoDB có thể sem vài chiêu thức cơ bản ở đây:

[MongoDB] Install and config MongoDB is so easy on Docker.

Reference links:
https://gist.github.com/asoorm/7822cc742831639c93affd734e97ce4f

Mình cung cấp link docker-compose.yaml như sau:

version: '3.3'
services:
  mongo-db:
    image: mongo:4.0.5
    hostname: mongo-db
    container_name: mongo-db
    expose:
      - "27017"
    ports:
      - "27017:27017"
    entrypoint: [ "/usr/bin/mongod", "--replSet", "rs0", "--bind_ip_all" ]
    volumes:
      - ./mongo-db:/data

Giờ bạn run:
docker-compose up -d

thực hiện hiện exec vào container và tạo database, collection và insert data.

docker exec -it mongo-db bash

mongo

Hiện tại thì chúng ta chạy mongodb ở mode replicaSet thì kafka-connect với work được vụ CDC source nhé. Bạn để ý mình có run 1 command trong mongoDB
entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0" ]

Lúc này show database luôn sẽ lỗi bạn tham khoả link dưới nhé:
https://gist.github.com/asoorm/7822cc742831639c93affd734e97ce4f

Bạn run command này

rs.initiate({
      _id: "rs0",
      version: 1,
      members: [
         { _id: 0, host : "<IP_HOST>:27017" }
      ]
   }
)
Lưu ý: bạn phải run command trên xong thì mới kêt nối kiểu Replica set được!
giờ là gõ sả láng òi

Tạo DB:

use todo

giờ tạo collection và insert data

db.newtodo.insertOne({"name": "Nimtechnology", age:2, past_clubs: ["Istio", "Kafka-connect", "K8s"], "isRetired": false})

Như bạn thấy ở trên collection sẽ có tên là newtodo và database có tên là todo

Nếu bạn thấy response như thế này là data đã được insert thành công.

2) Create Mongo Source Connector on Kafka-connect

giờ bạn vào lenses tạo connector MongoSourceConnector
https://www.confluent.io/hub/mongodb/kafka-connect-mongodb

Bạn sẽ cần build docker kafka-connect như link dưới:
add plugin via build image and base on cp-kafka-connect-base

connector.class=com.mongodb.kafka.connect.MongoSourceConnector
tasks.max=1
batch.size=0
change.stream.full.document=updateLookup
collection=newtodo
database=todo
topic.prefix=mongouat
poll.await.time.ms=5000
connection.uri=mongodb://192.168.101.27:27017/?replicaSet=rs0
name=source.mongo_connector.todo.v1
value.converter=org.apache.kafka.connect.storage.StringConverter
key.converter=org.apache.kafka.connect.storage.StringConverter
poll.max.batch.size=1000

Nếu mongodb của bạn có user pass thì:

>>>>>>>>>>
connection.uri: mongodb://<username>:<password>@mongodb-0.svr.services:27017,mongodb-1.svr.services:27017,mongodb-2.svr.services:27017/?replicaSet=<name_replicaset>&authSource=admin
>>>>>>>>>

Và bạn cũng cần chú ký phải có các time số sau trong url nhé:
?replicaSet=&authSource=admin

Cái này nó sẽ ko tự tạo topic âu he, Chúng ta phải tạo tay.

https://docs.mongodb.com/kafka-connector/current/source-connector/usage-examples/topic-naming/#topic-prefix-example
bạn đọc cái này để hiểu tạo topic có name là j

Nếu bạn chưa hiểu thì tạo topic với name như sau:
<topic.prefix>.<database>.<collection>

khi đó bạn thực hiện insert data như bước trên thì và quan sát topic có record hay ko?
Apache Kafka, Kafka Connect

Post navigation

Previous Post: [MongoDB] Install and config MongoDB is so easy on Docker.
Next Post: [Kafka] UI control Kafka, Kafka-connect, … It’s akhq.io

More Related Articles

[Kafka-connect] Single Message Transform: lesson 12 – Community Transformations Kafka Connect
[Kafka-connect] Single Message Transform: lesson 5 MaskField – Cover the sensitive data. Apache Kafka
[Kafka/Schema-registry] Installing Schema-registry to use for the Kafka and Kafka-connect model Apache Kafka
[Kafka-Connect] Overwrite value of Key on Mongo Source Connector – Mongodb Kafka Connect
[Kafka-connect] Single Message Transform: lesson 4 – RegexRouter – change topic name. Apache Kafka
[Kafka-connect] A few APIs are helpful in Kafka-connect. Apache Kafka

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Tham Gia Group DevOps nhé!
Để Nim có nhiều động lực ra nhiều bài viết.
Để nhận được những thông báo mới nhất.

Recent Posts

  • [Smartctl] Instruction check the health disk of Raspberry. January 16, 2023
  • [kubectl/Argocd] How to create a kubectl config file for serviceaccount or from the cluster secret of Argocd January 12, 2023
  • [Helm/Github] Create a public Helm chart repository with GitHub Pages January 8, 2023
  • [AWS] How to increase the disk size of a Windows EC2 machine? January 4, 2023
  • [Redis] ElastiCache-Redis Cross-Region Replication|Global DataStore January 3, 2023

Archives

  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

Categories

  • BareMetal
  • CI/CD
    • ArgoCD
    • ArgoWorkflows
    • Git
      • Bitbucket
    • Harbor
    • Jenkins
    • Spinnaker
    • TeamCity
  • Coding
    • Golang
    • Jquery & JavaScript
    • Laravel
    • Python
    • Selenium
    • Terraform
      • AWS – Amazon Web Service
      • GCP – Google Cloud
  • Kubernetes & Container
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Docker
    • Helm Chart
    • Isito-EnvoyFilter
    • Kubernetes
      • Ingress
    • Longhorn – Storage
    • Vault
    • VictoriaMetrics
  • Log & Monitor
    • ELK
      • Kibana
      • Logstash
    • Grafana
    • Prometheus
  • Uncategorized
  • Admin

Copyright © 2023 NimTechnology.