[개발이야기#080] 스팀잇 검색엔진 개발을 해보자 - 우분투에 도커를 이용해서 카프카를 설치해보자.

in #kr3 days ago


안녕하세요 가야태자 @talkit 입니다.

오늘은 실제로는 다른 가상 서버를 한대 더 만들었습니다.

하지만, 연재는 순서대로 진행 하겠습니다.

관련글

https://steemit.com/kr/@talkit/078-vmware-01

https://steemit.com/kr/@talkit/079

본문

Kafka 디렉토리 구조도

/home/talkit/kafka-docker/
├── docker-compose.yml
├── data/
│   ├── kafka/           # Kafka 데이터 저장소
│   └── zookeeper/       # Zookeeper 데이터 저장소
└── logs/
    ├── kafka/           # Kafka 로그 저장소
    └── zookeeper/       # Zookeeper 로그 저장소

위와 같이 만들 것입니다.

일반적으로 래거시로 깔때는 kafka와 zookeeper를 다운로드해서 tar 파일로 압축 풀고 했는데 이번에는 없습니다.

data 폴더는 도커내의 data폴더로 접근 시키고,
logs 폴더는 도커내의 logs 폴더에 접근 시키려고 합니다.

docker-compose.yml 파일 작성

이게 제일 중요합니다. 원래 도커자체로도 동작 합니다. 나중에 편의를 위해서 외부의 폴더를 도커와 연결 하지만, 도커 컴포즈 yml 파일만 있고, 도커만 설치되어 있으면 카프카를 바로 사용해 볼 수 있습니다.

version: '3.8'

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.6.0
    container_name: zookeeper
    restart: unless-stopped
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    volumes:
      - ./data/zookeeper:/var/lib/zookeeper/data
      - ./logs/zookeeper:/var/lib/zookeeper/log

  kafka:
    image: confluentinc/cp-kafka:7.6.0
    container_name: kafka
    restart: unless-stopped
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    volumes:
      - ./data/kafka:/var/lib/kafka/data
      - ./logs/kafka:/var/lib/kafka/logs

위와 같이 작성 합니다. 도커로 카프카 설치하기는 이작업이 다입니다. ^^

cd /home/talkit
mkdir -p kafka-docker/data/kafka kafka-docker/data/zookeeper
mkdir -p kafka-docker/logs/kafka kafka-docker/logs/zookeeper
cd kafka-docker

카프카와 관련된 디렉토리를 생성해 줍니다.

vi  docker-compose.yml

kafka-docker 폴더 내에다가 vi로 또는 편안한 편집기로 도커 컴포즈 파일을 생성 합니다.

docker compose up -d

도커 컨테이너를 실행 합니다.

docker ps

도커가 잘 실행 되었는지 확인 합니다.

talkit@talkit-VMware-Virtual-Platform:~$ docker ps
CONTAINER ID   IMAGE                             COMMAND                   CREATED       STATUS              PORTS                                                             NAMES
66399b347401   confluentinc/cp-kafka:7.6.0       "/etc/confluent/dock…"   4 weeks ago   Up About a minute   0.0.0.0:9092->9092/tcp, [::]:9092->9092/tcp                       kafka
e9185f343f22   confluentinc/cp-zookeeper:7.6.0   "/etc/confluent/dock…"   4 weeks ago   Up About a minute   2888/tcp, 0.0.0.0:2181->2181/tcp, [::]:2181->2181/tcp, 3888/tcp   zookeeper

잘 실행 되었습니다. ^^

docker logs kafka

도커 카프카 로그를 확인 합니다.

로그가 쭉 나옵니다. ^^

너무 길어서 생략 하겠습니다.

카프카에 게시와 구독만 하고 마치겠습니다.

도커 컨텐이너에 접속 하기

docker exec -it kafka bash

카프카 토픽 생성하기

kafka-topics --create \
  --bootstrap-server localhost:9092 \
  --replication-factor 1 \
  --partitions 1 \
  --topic test-topic

생성된 토픽 확인하기

kafka-topics --list --bootstrap-server localhost:9092

카프가 토픽에 게시 생성하기

kafka-console-producer \
  --broker-list localhost:9092 \
  --topic test-topic

커서가 생성되면

Hello Kafka!
안녕하세요 카프카!
테스트 메시지!

한번 넣어 보십시오.

저렇게 해두고

새로운 Putty 또는 쉘을 하나 더 열어서

docker exec -it kafka bash

카프카에 다시 들어 갑니다.

kafka-console-consumer \
  --bootstrap-server localhost:9092 \
  --topic test-topic \
  --from-beginning

위와 같이 쳐보시면 위에서 게시판 내용을 구독하실 수 있습니다.

오늘은 여기까지 하겠습니다.


오른쪽이 게시창이고 왼쪽이 구독 창입니다.

게시한 내용이 거의 실시간으로 구독 되고 있습니다.

감사합니다.



Posted through the ECblog app (https://blog.etain.club)

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

응원합니다~~

감사합니다. ^^