2장 첫번째 블로그에서 Docker 컨테이너에 Kafka와 zookeeper에 대한 환경설정을 진행하고 Run까지 진행하였다.
이번 장에서는 카프카 토픽을 주고 받을 수 있는 가장 기본적인 설정을 진행 했으니 TOPIC을 생성하고 메시지를 보내보는 것까지 실습하고자 한다.
우선 Docker 컨테이너에 정상적으로 Kafka와 zookeeper가 돌아가고 있는 지 확인해보자.
% docker ps -a
er-kafka와 er-zookeeper라는 이름으로 현재 컨테이너가 실행되는 것을 확인 할 수 있다.
이제 설치는 완료 되었고 컨테이너가 정상적으로 돌아가는 것 또한 확인했다.
카프카 및 주키퍼 서버를 Start하고 Topic을 생성 그리고 메시지를 주고 받기 위해서 컨테이너로 접속을 해보자.
% docker exec -i -t er-kafka bash // er-kafka bash 접속
% docker exec -i -t er-zookeeper bash // er-zookeeper bash 접속
1. 주키퍼 서버 실행하기
% docker exec -i -t er-zookeeper bash
bash로 해당 컨테이너에 접속을 했다.
1-1) 주키퍼 서버 실행하기
bash bin/zkServer.sh start /opt/zookeeper-3.4.13/conf/zoo.cfg -demon
# Backgroud 동작을 위해 -daemon 추가
됐다! 주키퍼 서버의 2181가 LISTEN으로 되어있다. 즉 서버가 정상적으로 동작하고 있다.
2. 카프카 서버 실행하기
% docker exec -i -t er-kafka bash
er-kafka 컨테이너로 접속한다.
2-1) 카프카 서버 실행하기
kafka-server-start.sh -daemon
2-2) 카프카 토픽 확인
% kafka-topics.sh --list --zookeeper zookeeper
2-3) 추가 : 토픽 생성
토픽 생성 명령어는 다음과 같다.
% kafka-topics.sh --create --zookeeper zookeeper:2181 --topic Erjuer01 --partitions 1 --replication-factor 1
create_topics.sh 파일을 살펴보면
토픽을 생성하는 Command를 볼 수 있다.
COMMAND="JMX_PORT='' ${KAFKA_HOME}/bin/kafka-topics.sh \\
--create \\
--zookeeper ${KAFKA_ZOOKEEPER_CONNECT} \\
--topic ${topicConfig[0]} \\
--partitions ${topicConfig[1]} \\
--replication-factor ${topicConfig[2]} \\
${config} \\
${KAFKA_0_10_OPTS} &"
eval "${COMMAND}"
토픽 생성 명령어를 뜯어 보자면
1) --zookeeper zookeeper:2181 -> ${KAKFA_ZOOKEEPER_CONNECT} // 카프카와 주키퍼의 연결 2181 포트
2) --topic Erjuer01 -> ${topicConfig[0]} // TOPIC 명 : Erjuer01
3) --partitions 1 -> ${topicConfig[1]} // 파티션의 갯수 : 1
4) --replication-factor 1 -> ${topicConfig[2]} // 복제 요소 1
특히 4번 내용은 3장에서 더 자세히 다루기도 하는데
간단히 언급하고 이야기하자면 Kafka 장애를 대비하여 Broker를 복제를 하는데 1개의 Broker에 복제한다는 뜻이다. 즉 복제본이 하나만 있으며 명령어 그대로 replication factor을 1로 설정하면 Broker가 장애날 시에는 바로 Kafka 또한 장애가 발생한다.
해당 명령어를 입력하면 "Erjuer01" 이라는 토픽명이 생성된다.
생성이 잘 되어 있는지 카프카 토픽 리스트를 확인해보자.
"Erjuer01" 토픽이 생성된 것을 확인 할 수 있다.
3. 카프카 서버에서 메시지 발행하기
% kafka-console-producer.sh --topic Erjuer${topic명} --broker-list localhost:9092
4. 카프카 서버 메시지 받기
% kafka-console-consumer.sh --topic Erjuer${topic명} --bootstrap-server localhost:9092 --from-beginning
--from-beginning : 메시지를 처음부터 다시 받겠다는 명령어이다.
물론 메시지 주고 받기 전에 각각 producer와 consumer를 실행해야 메시지를 정상적으로 받아 올 수 있다.
이번 장까지 간단하게 주키퍼와 카프카를 설치 및 실습을 진행했고 더 심화된 3장의 내용을 진행할 예정이다.
끝.
'개발 지식 > Kafka' 카테고리의 다른 글
[Kafka] 카프카는 어떻게 구성 되어 있는가 (feat. 디자인) (0) | 2022.05.24 |
---|---|
[Kafka] 카프카 스트림즈(Kafka Streams) API (0) | 2021.11.24 |
[Kafka] kafka 설치 및 실습 - 01 (Mac) (0) | 2021.10.27 |
[Kafka] 카프카란 무엇인가 (0) | 2021.10.21 |
댓글