본문 바로가기

리눅스

[draft] docker를 사용한 kafka 클러스터 설정

728x90

docker를 사용한 kafka 클러스터 설정

테스트 환경

호스트명 아이피 도커 컨테이너 비고
datanode1 192.168.0.101 zookeeper, kafka(broker)  
datanode2 192.168.0.102 zookeeper, kafka(broker)  
datanode3 192.168.0.103 zookeeper, kafka(broker)  

출처-https://www.haedongg.net/wp-content/uploads/2020/08/zk-kafka.jpg

도커 컨테이너 실행

datanode1 컨테이너

$ git clone https://github.com/anti1346/multinode-kafka-cluster.git

$ cd multinode-kafka-cluster/node1

$ docker-compose up -d; docker-compose logs -f

datanode2 컨테이너

$ git clone https://github.com/anti1346/multinode-kafka-cluster.git

$ cd multinode-kafka-cluster/node2

$ docker-compose up -d; docker-compose logs -f

datanode3 컨테이너

$ git clone https://github.com/anti1346/multinode-kafka-cluster.git

$ cd multinode-kafka-cluster/node3

$ docker-compose up -d; docker-compose logs -f

Kafka Web UI(Kafdrop)

Kafdrop은 Kafka 주제를 보고 소비자 그룹을 탐색하기 위한 웹 UI입니다. 이 도구는 브로커, 주제, 파티션, 소비자와 같은 정보를 표시하고 메시지를 볼 수 있도록 합니다

http://datanode1:9000

kafdrop

kafka 명령어

[kafka2] 컨테이너 접속

$ docker-compose ps
   Name               Command            State                                   Ports
-----------------------------------------------------------------------------------------------------------------------
kafka2       /etc/confluent/docker/run   Up      0.0.0.0:9092->9092/tcp
zookeeper2   /etc/confluent/docker/run   Up      0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp

#kafka2 컨테이너 진입
$ docker-compose exec kafka2 /bin/bash
[appuser@kafka2 ~]$

[kafka3] 컨테이너 접속

$ docker-compose ps
   Name               Command            State                                   Ports
-----------------------------------------------------------------------------------------------------------------------
kafka3       /etc/confluent/docker/run   Up      0.0.0.0:9092->9092/tcp
zookeeper3   /etc/confluent/docker/run   Up      0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp

#kafka3 컨테이너 진입
$ docker-compose exec kafka3 /bin/bash
[appuser@kafka3 ~]$

[kafka2] 토픽(topic) 리스트 확인

$ kafka-topics --list --bootstrap-server localhost:9092
__consumer_offsets
test

[kafka2] 토픽(topic) 생성

$ kafka-topics --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic scbyun-topic
Created topic scbyun-topic.


$ kafka-topics --list --bootstrap-server localhost:9092
__consumer_offsets
scbyun-topic
test

[kafka2] 토픽(topic) 상세 보기

$ kafka-topics --describe --bootstrap-server localhost:9092 --topic scbyun-topic
Topic: scbyun-topic	TopicId: jqqkyhYCSWyeVK61NUKL-Q	PartitionCount: 1	ReplicationFactor: 1	Configs:
	Topic: scbyun-topic	Partition: 0	Leader: 3	Replicas: 3	Isr: 3

[kafka2] 토픽에 데이터 넣기(producer)

$ kafka-console-producer --broker-list localhost:9092 --topic scbyun-topic
>

[kafka3] 토픽의 데이터 확인(consumer)

$ kafka-console-consumer --bootstrap-server localhost:9092 --topic scbyun-topic --from-beginning

kafdrop

    메세지 내용
프로듀서(producer) 메세지를 생산하는 주체 >HI
컨슈머(consumer) 메세지를 소비하는 주체 HI

[kafka3] 컨슈머 그룹(consumer groups) 리스트 확인

$ kafka-consumer-groups --bootstrap-server localhost:9092 --list

Kafdrop을 통해 웹 브라우저에서 메세지 내용을 확인할 수 있다.

kafdrop
kafdrop
kafdrop

 

728x90