[Kafka_CDC]_Kafka CDC 구현_(2단계- tutorial Mongodb 설치)

2022. 4. 13. 16:57[Kafka]/[Kafka_CDC]

728x90
반응형

구축 목표]

실시간으로 DB의 데이터가 변할 때 kafka 를 통해 consumer 에게 메세지 보내기.

 

구현 예상도]

구축 환경

window - Producer ] 

 

    - DB : MongoDB

    - zookeeper server

    - Kafka server

    - Kafka connect

    - Debezium connector

 

Linux - virtualBox - Consumer ]

    - Kafka server

 

이번에는 Mongodb를 설치해보겠습니다.

 

Mongodb는 tutorial의 Mongodb를 사용하였습니다.

 

Debezium 에서 제공하는 tutorial

https://debezium.io/documentation/reference/stable/tutorial.html

 

Tutorial :: Debezium Documentation

The event’s value shows that the row was created, and describes what it contains (in this case, the id, first_name, last_name, and email of the inserted row). Here are the details of the value of the last event (formatted for readability): { "schema": {

debezium.io

자세한 내용은 git 참고

https://github.com/debezium/debezium-examples/tree/main/tutorial

 

GitHub - debezium/debezium-examples: Examples for running Debezium (Configuration, Docker Compose files etc.)

Examples for running Debezium (Configuration, Docker Compose files etc.) - GitHub - debezium/debezium-examples: Examples for running Debezium (Configuration, Docker Compose files etc.)

github.com

 

해당 git 에서 docker-compose-mongodb.yaml 파일 선택

version: '2'
services:
  zookeeper:
    image: quay.io/debezium/zookeeper:${DEBEZIUM_VERSION}
    ports:
     - 2181:2181
     - 2888:2888
     - 3888:3888
  kafka:
    image: quay.io/debezium/kafka:${DEBEZIUM_VERSION}
    ports:
     - 9092:9092
    links:
     - zookeeper
    environment:
     - ZOOKEEPER_CONNECT=zookeeper:2181
  mongodb:
    image: quay.io/debezium/example-mongodb:${DEBEZIUM_VERSION}
    hostname: mongodb
    ports:
     - 27017:27017
    environment:
     - MONGODB_USER=debezium
     - MONGODB_PASSWORD=dbz
  connect:
    image: quay.io/debezium/connect:${DEBEZIUM_VERSION}
    ports:
     - 8083:8083
    links:
     - kafka
     - mongodb
    environment:
     - BOOTSTRAP_SERVERS=kafka:9092
     - GROUP_ID=1
     - CONFIG_STORAGE_TOPIC=my_connect_configs
     - OFFSET_STORAGE_TOPIC=my_connect_offsets
     - STATUS_STORAGE_TOPIC=my_connect_statuses
# For testing newer connector versions, unpack the connector archive into this
# directory and uncomment the lines below
#    volumes:
#     - ./debezium-connector-mongodb:/kafka/connect/debezium-connector-mongodb

해당 compose 에는 

mongodb 뿐 만 아니라 튜토리얼 용 kafka, connector, zookeeper 등이 다 들어있습니다.

 

제가 테스트를 해본 결과, 메세지 큐를 확인은 할 수 있지만, 다른 서버에서 메시지를 구독할 수 없어서

( kafka server 구동시 권한이 없었습니다.)

DB설정 파일만 가져와 진행하였습니다.

 

1. Docker Compose 작성]

 

원하는 위치에 docker-compse-mongodb.yaml 파일을 만들고

위의 내용을 붙여넣고 저장합니다.

 

PowerShell 로 해당 위치로 이동합니다.

 

이제 Using MongoDB 부분을 참고하여 진행하겠습니다.

https://github.com/debezium/debezium-examples/tree/main/tutorial#using-mongodb

 

GitHub - debezium/debezium-examples: Examples for running Debezium (Configuration, Docker Compose files etc.)

Examples for running Debezium (Configuration, Docker Compose files etc.) - GitHub - debezium/debezium-examples: Examples for running Debezium (Configuration, Docker Compose files etc.)

github.com

docker-compse-mongodb.yaml 파일 내부에 DEBEZIUM_VERSION 을 전부 1.9로 변경합니다

version: '2'
services:
  zookeeper:
    image: quay.io/debezium/zookeeper:1.8
    ports:
     - 2181:2181
     - 2888:2888
     - 3888:3888
  kafka:
    image: quay.io/debezium/kafka:1.8
    ports:
     - 9092:9092
    links:
     - zookeeper
    environment:
     - ZOOKEEPER_CONNECT=zookeeper:2181
  mongodb:
    image: quay.io/debezium/example-mongodb:1.8
    hostname: mongodb
    ports:
     - 27017:27017
    environment:
     - MONGODB_USER=debezium
     - MONGODB_PASSWORD=dbz
  connect:
    image: quay.io/debezium/connect:1.8
    ports:
     - 8083:8083
    links:
     - kafka
     - mongodb
    environment:
     - BOOTSTRAP_SERVERS=kafka:9092
     - GROUP_ID=1
     - CONFIG_STORAGE_TOPIC=my_connect_configs
     - OFFSET_STORAGE_TOPIC=my_connect_offsets
     - STATUS_STORAGE_TOPIC=my_connect_statuses
# For testing newer connector versions, unpack the connector archive into this
# directory and uncomment the lines below
#    volumes:
#     - ./debezium-connector-mongodb:/kafka/connect/debezium-connector-mongodb

 

2. docker 로 compose 설치]

Docker 미설치시 다음 포스트 참고

https://yn971106.tistory.com/73?category=1003066 

 

[Docker]_Infra 구축_(feat. Centos7, wsl2)

목표 ] Window 환경에서 CentOS7 을 WSL2 환경에 실행후 해당 CentOS7 안에 Docker 실행하기. Docker 란? 경량 가상화 기술이며 리눅스 컨테이너를 기반으로 이미지를 기준으로 프로세스를 격리하여 

yn971106.tistory.com

 

yaml 파일 이 있는 위치에서 다음 명령어 실행

※ 주의 이전의 모든 서버는 끄고 진행해야 함

docker-compose -f docker-compose-mongodb.yaml up

docker Desktop app 에서

Mongodb 만 실행시킬 겁니다.

 

같은 위치에서 다음 명령어 실행

docker-compose -f docker-compose-mongodb.yaml exec mongodb bash -c '/usr/local/bin/init-inventory.sh'

tutorial 에서 제공하는 기본 정보가 입력됩니다.

 

localhost:27017 에 tutorial 용 DB가 설치된것입니다.

 

다음에는 DB에 연결할 connector을 설치해 보겠습니다.

 

728x90
반응형