<Kafka> 2. 카프카 설치 및 예제 만들기
by BFine출처&참고 : https://product.kyobobook.co.kr/detail/S000201464167
가. 설치하기 (Docker Compose)
a. Confluent ?
- 카프카 도커 이미지를 찾아보니 Apache에서 제공하는것 이외에 엄청 다양한 이미지가 존재하는것을 볼수 있었다.
=> 카프카 베이스 이미지에 좀 더 편리하게 쓰기위해 커스텀한 이미지들이다.
- Confluent가 가장 많이 쓰이는 이미지로 보이고 UI도 제공하고 있어서 요걸로 카프카를 설치해보았다.
b. docker-compose.yml
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper:3.4.6
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
broker:
image: confluentinc/cp-kafka:7.7.1
hostname: broker
container_name: broker
ports:
- "9092:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_NODE_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_LISTENERS: 'PLAINTEXT://broker:29092,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
CLUSTER_ID: 'MkU3OEVBNTcwNTJENDM2Qk'
schema-registry:
image: confluentinc/cp-schema-registry:7.7.1
hostname: schema-registry
container_name: schema-registry
depends_on:
- broker
ports:
- "8081:8081"
environment:
SCHEMA_REGISTRY_HOST_NAME: schema-registry
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: 'broker:29092'
SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
- 여기서 zookeeper의 역할을 카프카 클러스터의 메타데이터와 컨슈머 클라이언트에 대한 정보를 저장하기 위해 사용한다.
=> 버전이 올라가면서 KRaft 모드가 default가 되어 zookeeper는 더이상 사용하지 않아도 된다고 한다. (위에는 그냥 추가해보았다)
- 위에 설정한 브로커 환경변수들 중에 리스너 설정은 그림처럼 내부 외부 통신용도로 사용된다고 보면 된다.
- schema registry의 역할은 confluent에서 제공하는 컴포넌트로 데이터 스키마 관리 및 직렬화(역직렬화) 등을 담당하는 중앙저장소이다.
나. 카프카 사용해보기
a. 토픽 만들기
kafka-topics --create --topic [topic-name] --bootstrap-server localhost:9092 --replication-factor 2 --partitions 3
- docker compose로 컨테이너를 실행하고 위의 명령어로 토픽을 생성할 수 있다.
b. 메세지 발행하기
docker exec -it broker kafka-console-producer --topic [topic-name] --bootstrap-server localhost:9092
- 위의 명령어를 이용하여 만든 토픽에 메세지를 발행할 수 있다.
c. UI 활용하기
kafdrop:
image: obsidiandynamics/kafdrop
restart: "no"
ports:
- "9000:9000"
environment:
KAFKA_BROKERCONNECT: "broker:29092"
depends_on:
- "broker"
- 명령어가 길다보니 이것저것 해보기에는 적합하지 않기 때문에 다양한 UI 제공해주는 것들이 있었는데 그 중에서 kafdrop을 사용해 보았다
- 위의 이미지에서 볼수 있듯이 아까 발행한 메세지가 test-topic에 2번 파티션에 저장된 것을 UI로 볼 수 있다 (메세지 발행, 토픽생성 등 가능)
=> confluent의 control center UI가 좀 더 다양한 기능이 있는데 내가 못찾는건지 모르겠지만 발행된 메세지 내용을 보는게 없는것 같다..
'공부 > Kafka' 카테고리의 다른 글
<Kafka> 5. 카프카 내부 메커니즘 살펴보기 (3) | 2024.11.03 |
---|---|
<Kafka> 4. 카프카 프로듀서 (Producer) (1) | 2024.10.28 |
<Kafka> 3. 카프카 컨슈머 (Consumer) (0) | 2024.10.20 |
<Kafka> 1. 카프카 기초 알아보기 (4) | 2024.10.06 |
블로그의 정보
57개월 BackEnd
BFine