Kafka Shell: kafka-topics.sh
๋ค์ด๊ฐ๋ฉฐ
ํ์ฌ์์ Confluent๋ก Kafka ํด๋ฌ์คํฐ๋ฅผ ์ด์ํ๊ณ ์๊ณ , CCDAK ์๊ฒฉ์ฆ ์ํ์ ์ค๋นํ๊ณ ์์ต๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ bin/kafka-topics.sh
๋ช
๋ น์ด์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ํ๊ธฐ ์ ์
๋ก์ปฌ์์ Kafka๋ฅผ ์คํํด ํธ์ฆ์จ ํด๋ณด๊ณ ์์ต๋๋ค! ๋ก์ปฌ ๋งฅ๋ถ์ Kafka ํด๋ฌ์คํฐ๋ฅผ ๋ํ๋ก์ด ํ๋ ๋ฐฉ๋ฒ์ โDeploy Kafka on Kubernetes โธโ ํฌ์คํธ์์ ๊ธฐ์ ํ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค! ๋ณธ ํฌ์คํธ๋ ํด๋น ํฌ์คํธ์ ๊ธฐ์ ํ ๋ฐฉ์์ผ๋ก ๋ํ๋ก์ดํ Kafka ํด๋ฌ์คํฐ์ Broker ์ค ํ๋์ ์ ์ํด ์งํํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
ํด๋ฌ์คํฐ ์ ์
bitnami-kafka๋ฅผ Authentication ์์ด ์ ์ํ๋ PLAINTEXT
๋ชจ๋๋ก ๋ํ๋ก์ด ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ํ๋ก์ดํ Broker ์ค ํ๋์ kubectl exec
๋ก ์ ์ ํฉ๋๋ค.
$ kubectl exec -it bitnami-kafka-broker-2 -n kafka -- sh
์ฐธ๊ณ ๋ก bitnami-kafka๋ฅผ ๋ํ๋ก์ด ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Kafka Shell์ด /opt/bitnami/kafka/bin
๊ฒฝ๋ก์ ๋ชจ์ฌ ์์ต๋๋ค! cd
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด ์ด ๊ฒฝ๋ก๋ก ํด๋น ๊ฒฝ๋ก๋ก ์ด๋ํด๋ ๋์ง๋ง, Kafka Shell ๋๊ตฌ๋ค์ด ์ด๋ฏธ ๋ฑ๋ก์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฌด ๊ฒฝ๋ก์์ ์งํํด๋ ์๊ด ์์ต๋๋ค :)
Create topic
$ kafka-topics.sh \
--bootstrap-server=bitnami-kafka.kafka.svc.cluster.local:9092 \
--create \
--topic test
Created topic test.
--create --topic test
๋ฅผ ์ฃผ๋ฉด ํด๋น ์ด๋ฆ์ผ๋ก ํ ํฝ์ด ์์ฑ ๋ฉ๋๋ค. ์ด๋, ๋ฐ๋ก ์ค์ ํ์ง ์์ผ๋ฉด partition ๊ฐฏ์๋ replication.factor
์ ๊ฐ์ ๊ฐ์ ๋ธ๋ก์ปค์ ์ค์ ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋ฉ๋๋ค.
Describe all topics
$ kafka-topics.sh \
--bootstrap-server=bitnami-kafka.kafka.svc.cluster.local:9092 \
--describe
Topic: test TopicId: fj5dT8R4QkGFObM3IsrLRA PartitionCount: 1 ReplicationFactor: 1 Configs:
Topic: test Partition: 0 Leader: 102 Replicas: 102 Isr: 102 Elr: N/A LastKnownElr: N/A
ํ์ฌ Kafka ํด๋ฌ์คํฐ์ ์กด์ฌํ๋ ํ ํฝ์ ๋์ดํ๊ณ , ์ธ๋ถ ์ ๋ณด๋ฅผ ๋์ด ํฉ๋๋ค. ๋ฐ๋ก ์ค์ ํ์ง ์์๊ธฐ ๋๋ฌธ์ Partition๊ณผ replication.factor
๊ฐ ๋๋ค 1๋ก ์ค์ ๋์์ต๋๋ค.
replication.factor
๋ผ๋ ๊ฒ์ ๋ฆฌ๋ ํํฐ์
์ ๋ด์ฉ์ ๋ณต์ ํ ํ๋ก์ ํํฐ์
์ด ์กด์ฌํ์ง ์๋ ๋ค๋ ๊ฒ์ ๋งํฉ๋๋ค. ๊ฐ ํํฐ์
์ ํ๋์ ๋ณต์ ๋ณธ๋ง ์กด์ฌํ๋ฉด ์ด๊ฒ์ด ํํฐ์
๊ทธ ์์ฒด์ด์ ๋ฆฌ๋ ์ญํ ์ ํฉ๋๋ค.
๋ค์์ Partition Level ์ ๋ณด ์ ๋๋ค. ๋ด์ฉ์ ๊ฐ ํญ๋ชฉ์ ์ค๋ช ํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
Leader
- ํ ํฝ์ ํํฐ์ ์ด Producer/Consumer์ ํต์ ํ๋ฉฐ ์ ๊ท ๋ฐ์ดํฐ๊ฐ ์์ด๊ฑฐ๋, ์์ธ ๋ฐ์ดํฐ๊ฐ ์๋น ๋๋ ํํฐ์ ์ ๋๋ค.
- ์ถ๋ ฅ๋ก ๋ณด๋ฉด
Partition: 0 Leader: 102
๋ก ๋์ด ์์ด, ์ฒซ๋ฒ์งธ ํํฐ์ ์ ๋ฆฌ๋ ํํฐ์ ์ด102
๋ผ๋ Id์ ๋ธ๋ก์ปค์ ์กด์ฌํจ์ ์ ์ ์์ต๋๋ค.
Replicas
- ๋ฆฌ๋ ํํฐ์ ์ ๋ณต์ ํ ํ๋ก์ ํํฐ์ ์ ๋งํฉ๋๋ค.
- ์ถ๋ ฅ์์๋
Replicas: 102
๋ก ๋์ด ์์ด ๋ธ๋ก์ปค102
๊ฐ ๋ณต์ ๋ณธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Isr
- In-Sync Replica ๋ชฉ๋ก์ ๋๋ค.
- ํ๋ก์ ํํฐ์ ์ค์ ๋ฆฌ๋ ํํฐ์ ๊ณผ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ฆฌ๋ ํํฐ์ ์ฅ์ ์, ๋ฆฌ๋ ํํฐ์ ์ผ๋ก ์น๊ฒฉ๋ ์ ์๋ ๋ณต์ ๋ณธ์ โ์งํฉโ์ ๋งํฉ๋๋ค.
- ์ถ๋ ฅ์์๋
Isr: 102
๋ก ๋์ด ์์ด ๋ธ๋ก์ปค102
์ ์กด์ฌํ๋ ํ๋ก์ ํํฐ์ ์ด ์ฑํฌ ์ํ์ธ ISR์ ์ํฉ๋๋ค.
Elr
&LastKnownElr
- End Log Region์ ์ฝ์ ์ ๋๋ค.
- Kafka์ ํ์ฅ ๊ธฐ๋ฅ ์ค ์ผ๋ถ์์ ์ฌ์ฉํ๋ ๊ฐ๋ ์ผ๋ก, ๋ณธ๋ Kafka ํด๋ฌ์คํฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ธ๋ก์ปค์ ๋์คํฌ ๊ณต๊ฐ์ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ Kafka Tiered Storage๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ดํ ์คํ ๋ฆฌ์ง(ex: AWS S3)์ ์ ์ฅํฉ๋๋ค.
- ELR์ ํํฐ์ ๋ฐ์ดํฐ๊ฐ ๋ก์ปฌ์์ ๋์ด์ ์ ์ง๋์ง ์๊ณ , ์ธ๋ถ ์คํ ๋ฆฌ์ง๋ก ์ด๋ํ ์์ ์ ๊ฐ๋ฆฌํต๋๋ค. ์ฆ, โ๋ก์ปฌ ๋์คํฌ์์ ์ ๊ทผ ๊ฐ๋ฅํ ๋ก๊ทธ์ ๋ ์ง์ (offset)โ์ ๋ํ๋ ๋๋ค. ์ด ๊ฐ ์ด์ ์ ๋ฐ์ดํฐ๋ ์ธ๋ถ ์คํ ๋ฆฌ์ง์์๋ง ์ฝ์ ์ ์์ต๋๋ค.
Alter Topic Partition Number
$ kafka-topics.sh \
--bootstrap-server=bitnami-kafka.kafka.svc.cluster.local:9092 \
--alter \
--topic test \
--partitions 2 \
--replication-factor 2
ํ ํฝ์ ์ค์ ์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด, --alter
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๋จ, kafka-topics.sh --alter
์์ Topic์ ๋ชจ๋ Config๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๊ฑด ์๋๊ณ ,
์ค์ง ํ ํฝ ํํฐ์
์ ๋ํ ๊ฒ๋ง ๋ณ๊ฒฝ ๊ฐ๋ฅํฉ๋๋ค. ๋, ํ ํฝ ํํฐ์
์ ๋๋ฆฌ๋ ๊ฑด ๊ฐ๋ฅํ์ง๋ง, ์ค์ด๋ ๊ฑด ๋ถ๊ฐ๋ฅํฉ๋๋ค!
๊ทธ๋์ ๋๋ก๋ kafka-configs.sh
๋ฅผ ์ฌ์ฉํด ํ ํฝ์ ์ค์ ๋ Config๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ๋๋ ์์ต๋๋ค.
$ kafka-configs.sh \
--bootstrap-server=bitnami-kafka.kafka.svc.cluster.local:9092 \
--alter \
--topic test \
--add-config retention.ms=360000
์ด๊ฒ์ผ๋ก ํ ํฝ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ง ํ๋ ๊ธฐ๊ฐ์ธ retention.ms
๋ฅผ ๊ธฐ์กด 7์ผ(604800000)์์ 1์๊ฐ(3600000)์ผ๋ก ๋ณ๊ฒฝํด๋ณผ ์ ์์ต๋๋ค.
kafka-configs.sh
๋ ํ ํฝ ์ธ์๋ ๋ธ๋ก์ปค, ์ฌ์ฉ์์ ์นดํ์นด ํด๋ผ์ด์ธํธ ์ดํ๋ฆฌ์ผ์ด์
์ ์ค์ ๋ Config๋ฅผ ํ์ธํ๊ณ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค!
์ฐธ๊ณ ๋ก ํ๋ฒ ์ค์ ํ๋ฉด ํ ํฝ์ ์ง์ฐ์ง ์๋ ์ด์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ Config๋ ์์ต๋๋ค. ํ๋ก์ ํํฐ์
์ผ๋ก ๋ฆฌ๋ ํํฐ์
์ ๋ณต์ ํ๋ ์ ๋์ธ replication.factor
๊ฐ์ด ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ Config ์
๋๋ค. (๋จ, ์ด๊ฒ๋ ํํฐ์
์ฌํ ๋น ๋๊ตฌ์ธ kafka-reassign-partitions.sh
๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค๊ณ ํฉ๋๋ค.)
Delete topic
$ kafka-topics.sh \
--bootstrap-server=bitnami-kafka.kafka.svc.cluster.local:9092 \
--delete \
--topic test
์ญ์ ๋ --delete
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค EzEz
๋งบ์๋ง
์ด๊ฒ์ผ๋ก Kafka ํด๋ฌ์คํฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ช
๋ น์ด์ธ kafka-topics.sh
๋ฅผ ์ดํด๋ณด์์ต๋๋ค! (์ํธ) ์ด์ ๋ค๋ฅธ ๋ช
๋ น์ด๋ค์ ํธ์ฆ์จ ํด๋ด
์๋ค!