Apache Kafka์ ๋ํ ํ์ต์ ์ํด ๋์ปค ์ปดํฌ์ฆ๋ก ์นดํ์นด์ ๋ํ ํ๊ฒฝ์ ๊ตฌ์ฑํ ๋ ๋๋ถ๋ถ wurstmeister/kafka-docker ๋๋ confluentinc/cp-kafka ์ฌ์ฉํ์ฌ ZooKeeper ๊ธฐ๋ฐ์ ์นดํ์นด๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ๋ณธ ๊ธ์์๋ ์ปจํ๋ฃจ์ธํธ์์ ์ ๊ณตํ๋ confluentinc/confluent-local๋ฅผ ์ฌ์ฉํด KRaft ๋ชจ๋์ Apache Kafka์ ๋ํ ํ์ต ํ๊ฒฝ์ ๋ง๋๋ ๊ฒ์ ๊ณต์ ํ๊ณ ์ ํ๋ค.
๋์ปค ์ปดํฌ์ฆ ๋ฌธ์ ์์ฑ โ
version: '3'
services:
kafka:
image: confluentinc/confluent-local:7.5.6
hostname: kafka
container_name: kafka
ports:
- "9092:9092"
- "8082:8082"
environment:
CLUSTER_ID: "EaJs_OcfTB6oWCOPTuY64Q"
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:29093"
KAFKA_INTER_BROKER_LISTENER_NAME: "PLAINTEXT"
KAFKA_LISTENERS: "PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092"
KAFKA_LOG_DIRS: "/tmp/kraft-combined-logs"
KAFKA_REST_HOST_NAME: rest-proxy
KAFKA_REST_BOOTSTRAP_SERVERS: "kafka:29092"
KAFKA_REST_LISTENERS: "http://0.0.0.0:8082"
kafka-ui: # Optional
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- "8080:8080"
depends_on:
- kafka
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
KAFKA_CLUSTERS_0_AUDIT_TOPICAUDITENABLED: 'true'
KAFKA_CLUSTERS_0_AUDIT_CONSOLEAUDITENABLED: 'true'
confluent-local ์ด๋ฏธ์ง๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํ ๊ฒ์ด๋ฏ๋ก ํ๋ก๋์ ํ๊ฒฝ์์๋ cp-all-in-one-kraft ๋ฅผ ์ฐธ๊ณ ํด์ cp-kafka ๋ก ์ง์ ๊ตฌ์ฑํด์ผํฉ๋๋ค.
Kafka ํด๋ฌ์คํฐ ์์ด๋ โ
kafka-storage๋ก ์นดํ์นด์์ ์ฌ์ฉํ ํด๋ฌ์คํฐ ์์ด๋๋ฅผ ๋ง๋ค์ด์ผํ๋ฉฐ kafka-storage ๋ confluent-local ์ด๋ฏธ์ง์ ํฌํจ๋์ด ์์ด ์๋์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์์ฑํ ์ ์๋ค. How to generate Kafka cluster ID ์์๋ kafka-storage ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ Base64๋ก ์ธ์ฝ๋ฉ๋ UUID๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์๋ ค์ฃผ๊ณ ์์ผ๋ ์ฐธ๊ณ ํ๋ฉด ์ข๊ฒ ๋ค.
# docker run --rm confluentinc/confluent-local:7.5.6 /bin/sh -c "/bin/uuidgen --time | tr -d '-' | base64 | cut -b 1-22"
docker run --rm confluentinc/confluent-local:7.5.6 /bin/kafka-storage random-uuid
EaJs_OcfTB6oWCOPTuY64Q