๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง

์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ„์„ ํ™˜๊ฒฝ ๊ตฌ์ถ• - 03. Kafka ์„ค์น˜ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ตฌ์„ฑ

Tempo 2025. 3. 24. 08:00
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 ๋“ฑ)์—์„œ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  1. replicaCount ์ˆ˜์ •
  • ๋กœ์ปฌ ๋ฐฐํฌ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ controller์™€ broker๋ฅผ 1๊ฐœ๋งŒ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
    controller: ๋ฅผ ๊ฒ€์ƒ‰(line:495) replicaCount ์ˆซ์ž๋ฅผ 1๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    broker:๋ฅผ ๊ฒ€์ƒ‰(line:956) replicaCount ์ˆซ์ž๋ฅผ 1๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  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 ํ† ํ”ฝ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•