본문 바로가기

리눅스

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

728x90

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

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

테스트 환경

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

github 소스 : https://github.com/anti1346/multinode-kafka-cluster.git

도커 컨테이너 실행

  • 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

k1

728x90

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

k2

    메세지 내용
프로듀서(producer) 메세지를 생산하는 주체 >HI
컨슈머(consumer) 메세지를 소비하는 주체 HI
  • [kafka3] 컨슈머 그룹(consumer groups) 리스트 확인
$ kafka-consumer-groups --bootstrap-server localhost:9092 --list

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

k3

 

k4

 

k5

 

728x90