Kafka๋ฅผ ๊ตฌ์ฑํ์ฌ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ฅผ Clickhouse๋ก ์ฒ๋ฆฌํ๋ ๋ถ์ ํ๊ฒฝ์ ๊ตฌ์ถํฉ๋๋ค.
๐ก ์ด ๊ธ์์ ๋ค๋ฃฐ ๋ด์ฉ:
- Kubernetes ํ๊ฒฝ์์ Kafka ์ค์น ๋ฐ ์ค์
- Helm ์ฐจํธ๋ฅผ ํ์ฉํ Kafka ๋ฐฐํฌ
- Kafka ํ ํฝ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ํ ์คํธ
1. Kafka๋?
Kafka๋ ๋์ฉ๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ ์ํ ๋ถ์ฐ ๋ฉ์์ง ํ๋ซํผ์
๋๋ค.
ClickHouse์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ค์๊ฐ ๋ฐ์ดํฐ ์์ง ๋ฐ ๋ถ์์ด ๊ฐ๋ฅํฉ๋๋ค.
๐ Kafka ์ฃผ์ ๊ฐ๋
๊ฐ๋ ์ค๋ช
Producer | ๋ฐ์ดํฐ๋ฅผ Kafka์ ๋ณด๋ด๋ ์ญํ |
---|---|
Consumer | Kafka์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์ญํ |
Topic | ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๋ ผ๋ฆฌ์ ๊ณต๊ฐ |
Broker | Kafka ์๋ฒ (๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌ) |
*Zookeeper | Kafka์ ํด๋ฌ์คํฐ ์ํ ๊ด๋ฆฌ |
- Kafka 4.0 ์ด์๋ถํฐ Message queue๋ฅผ ์ด์ฉํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ฌ Zookeeper ์ค์น๊ฐ ํ์๊ฐ ์๋๋๋ค.(๊ด๋ จ ๋งํฌ)
2. Kubernetes์ Kafka ์ค์น
Kafka๋ฅผ ์ง์ ์ค์ ํ๋ ๊ฒ์ ๋ณต์กํ๋ฏ๋ก Bitnami Helm ์ฐจํธ๋ฅผ ์ฌ์ฉํด ์ฝ๊ฒ ๋ฐฐํฌํฉ๋๋ค.
๐น 1) Helm ์ ์ฅ์ ์ถ๊ฐ
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
๐น 2) Kafka ์ค์น
value.yaml ํ์ผ ์์ (bitnami kafka 3.9.0-debian-12-r12 ๋ฒ์ ๊ธฐ์ค)
- ๊ธฐ๋ณธ values.yaml ํ์ผ(๋งํฌ)
- ํด๋น ํ์ผ์ ๋ณต์ฌํ์ฌ IDE(vscode ๋ฑ)์์ ํธ์งํฉ๋๋ค.
- replicaCount ์์
- ๋ก์ปฌ ๋ฐฐํฌ ํ
์คํธ์ฉ์ผ๋ก controller์ broker๋ฅผ 1๊ฐ๋ง ๋ฐฐํฌํฉ๋๋ค.
controller:
๋ฅผ ๊ฒ์(line:495) replicaCount ์ซ์๋ฅผ 1๋ก ๋ณ๊ฒฝํฉ๋๋ค.broker:
๋ฅผ ๊ฒ์(line:956) replicaCount ์ซ์๋ฅผ 1๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- auth ์ค์
- ์ด์ ์ ๋ฐฐํฌํ clickhouse์์ ์ ์ํ๊ธฐ ์ํด auth๋ฅผ ์ค์ ํฉ๋๋ค.
sasl:
์ ๊ฒ์(line:228) ํ์์ interbroker, controller, client ์ password ๊ฐ์ ์ํ๋ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
helm install kafka bitnami/kafka -f ./kafka/values.yaml --create-namespace --namespace kafka
์ค์น๊ฐ ์๋ฃ๋๋ฉด ๋ค์ ๋ช ๋ น์ด๋ก Kafka๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋์ง ํ์ธํฉ๋๋ค.
kubectl get pods -n kafka
์ถ๋ ฅ ์์:
NAME READY STATUS RESTARTS AGE
kafka-broker-0 1/1 Running 0 44m
kafka-controller-0 1/1 Running 0 44m
3. Kafka ํด๋ฌ์คํฐ ์ค์ ํ์ธ
Kafka๊ฐ ์ ์์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ๋ ค๋ฉด Kafka CLI๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐น 1) Kafka Broker ์ํ ํ์ธ
kubectl get svc -n kafka
์ถ๋ ฅ ์์:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka ClusterIP 10.108.250.227 <none> 9092/TCP 45m
kafka-broker-headless ClusterIP None <none> 9094/TCP,9092/TCP 45m
kafka-controller-headless ClusterIP None <none> 9094/TCP,9092/TCP,9093/TCP 45m
4. Kafka ํ ํฝ ์์ฑ ๋ฐ ๋ฉ์์ง ํ ์คํธ
โ 2025.03 ๊ธฐ์ค bitnami/kafka ์ค์น ๋ฐ kafka-client ๋ด ํ ํฝ ์์ฑ ๋ฐ ๋ฉ์์ง ํ ์คํธ ๋ฌธ์
- kafka ์ค์น ํ์๋ ํ ํฝ ์์ฑ ๋ฐ ํ์ธ์ด ๋์ง ์์ต๋๋ค.(connection timeout)
- ์ด์ ๋ค์ ๊ธ์์ redpanda-console์ ์ค์นํ์ฌ kafka ํ ํฝ์ ๊ด๋ฆฌํฉ๋๋ค.