์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ์˜ต์…˜!

9 minute read

ํšŒ์‚ฌ์—์„œ Confluent๋ฅผ ํ†ตํ•ด Kafka ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด ์นดํ”„์นด์— ๋Œ€ํ•ด์„œ ์ข€๋” ์ž์„ธํžˆ ์•Œ๊ณ , ์ „๋ฌธ์„ฑ์„ ๊ฐ–์ถ”๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ 2025๋…„ ์ฒซ ๋ชฉํ‘œ๋กœ Confluent์˜ Kafka ์ž๊ฒฉ์ฆ์ธ Confluent Certified Developer for Apache Kafkaยฎ ์ž๊ฒฉ์ฆ์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค โœŒ๏ธ

๋“ค์–ด๊ฐ€๋ฉฐ

๋กœ์ปฌ Kubernetes ํ™˜๊ฒฝ์— Kafka ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ๋…ธ๋“œ 3๊ฐœ, ๋ธŒ๋กœ์ปค ๋…ธ๋“œ 3๊ฐœ๋กœ ๊ตฌ์„ฑ ํ–ˆ๋Š”๋ฐ์š”. ์ด๋Ÿด์ˆ˜๊ฐ€! KsqlDB๋ฅผ ์—ฐ์Šตํ•˜๊ธฐ ์œ„ํ•ด ๋„์šด ksqldb-server๊ฐ€ ๋ธŒ๋กœ์ปค์— ์ œ๋Œ€๋กœ ์ ‘์†์„ ํ•˜์ง€ ๋ชปํ•˜๋Š” ํ˜„์ƒ์„ ๊ฒฝํ—˜ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

$ curl -X GET  http://localhost:8088/info
curl: (7) Failed to connect to localhost port 8088: Connection refused

์‚ฌ์‹ค bitnami-kafka์˜ helm chart์˜ REAEDME๋ฅผ ์ž˜ ์ฝ์–ด๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์ ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

In order to access Kafka Brokers from outside the cluster, an additional listener and advertised listener must be configured. Additionally, a specific service per kafka pod will be created. - bitnami-kafka helm chart

์ฆ‰, โ€œAdvertised Listenerโ€๋ฅผ ์ œ๋Œ€๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„ ์™ธ๋ถ€ ์ ‘์†์ด ์›ํ™œํ•˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ธŒ๋กœ์ปค์— ์ ‘์†ํ•ด์„œ Kafka CLI๋ฅผ ์‹คํ–‰ํ•ด์„œ ์ด ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชป ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๊ณ„๊ธฐ๋กœ ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ์— ์„ธํŒ…ํ•˜๋Š” listeners์™€ advertised.listeners ์˜ต์…˜์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ ๋‚ด์šฉ์„ ์ œ ๋ฐฉ์‹๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

Broker Listeners

listeners

listeners=PLAINTEXT://0.0.0.0:9092

๋ธŒ๋กœ์ปค๊ฐ€ ๋ฐ”์ธ๋”ฉํ•  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํฌํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” Config ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋กœ์ปค๊ฐ€ ์–ด๋–ค IP์™€ ํฌํŠธ์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ• ์ง€ ์ •์˜ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ, PLAINTEXT๋Š” ์นดํ”„์นด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์Šค๋„ˆ ํ”„๋กœํ† ์ฝœ ์ค‘ ํ•˜๋‚˜๋กœ ์•”ํ˜ธํ™” ์—†์ด ๊ธฐ๋ณธ TCP ํ†ต์‹ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ์ž…๋‹ˆ๋‹ค. ์„ธ๋ถ€์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฆฌ์Šค๋„ˆ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœํ† ์ฝœ ์„ค๋ช…
PLAINTEXT ์•”ํ˜ธํ™” ์—†์ด ๊ธฐ๋ณธ TCP ํ†ต์‹  (๊ธฐ๋ณธ๊ฐ’)
SSL TLS/SSL์„ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ํ†ต์‹ 
SASL_PLAINTEXT SASL ์ธ์ฆ ์‚ฌ์šฉ, ํ•˜์ง€๋งŒ ๋ฉ”์‹œ์ง€๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์Œ
SASL_SSL SASL ์ธ์ฆ + TLS/SSL ์•”ํ˜ธํ™”

0.0.0.0์€ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์–ด๋–ค IP ์ฃผ์†Œ๋กœ ์š”์ฒญ์ด ์˜ค๋”๋ผ๋„ ๋ชจ๋“  ์š”์ฒญ์„ ์ˆ˜๋ฝํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. 0.0.0.0 ์™ธ์—๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ฐ’ ์˜๋ฏธ
0.0.0.0 ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์—ฐ๊ฒฐ ํ—ˆ์šฉ (๋‚ด๋ถ€, ์™ธ๋ถ€ ํฌํ•จ)
127.0.0.1 ์˜ค์ง localhost(๋ฃจํ”„๋ฐฑ)์—์„œ๋งŒ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ (์™ธ๋ถ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€)
192.168.1.10 ํŠน์ • ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
10.0.0.5 ํŠน์ • VPC ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
203.0.113.15 ํŠน์ • ๊ณต์ธ IP์—์„œ๋งŒ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ

advertised.listeners

advertised.listeners=PLAINTEXT://my.kafka.broker.com:9092

ํด๋ผ์ด์–ธํŠธ(ํ”„๋กœ๋“€์„œ, ์ปจ์Šˆ๋จธ)๊ฐ€ ๋ธŒ๋กœ์ปค์— ์ ‘์†ํ•  ๋•Œ, ์–ด๋–ค ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋กœ์ปค์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์†Œํ†ตํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํด๋ผ๋Š” ์„ค์ •๋œ bootstrap.servers ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด Kafka ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ธŒ๋กœ์ปค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ „์ฒด ์ •๋ณด๋ฅผ ํฌํ•จํ•˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์‘๋‹ต์„ ํด๋ผ์—๊ฒŒ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
    1. ์ด๋•Œ, ๊ฐ ๋ธŒ๋กœ์ปค์˜ advertised.listeners ๊ฐ’์„ ํฌํ•จํ•ด ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.
  3. ํด๋ผ๋Š” ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์„ ์†Œ์œ ํ•œ ๋ธŒ๋กœ์ปค๋ฅผ ์ฐพ๊ณ , ๊ทธ ๋ธŒ๋กœ์ปค์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๋ธŒ๋กœ์ปค์— ๋‹ด๊ฒจ ์žˆ๋˜ advertised.listeners ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด advertised.listeners ๊ฐ’์ด ์ž˜ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ์™€ ์ •์ƒ์ ์œผ๋กœ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

bitnami-kafka

์ €๋Š” bitnami-kafka์˜ helm chart๋ฅผ ์ด์šฉํ•ด Kubernetes on Kafka ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค. advertised.listeners๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด values.yaml ํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธํŒ…ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

listeners:
  client:
    protocol: 'PLAINTEXT'  # no auth
  controller:
    protocol: 'PLAINTEXT'  # no auth

externalAccess:
  enabled: true
  controller:
    service:
      type: NodePort
  broker:
    service:
      type: NodePort
  autoDiscovery:
    enabled: true
serviceAccount:
  create: true
rbac:
  create: true

bitnami-kafka์—์„œ๋Š” ์™ธ๋ถ€ ์ ‘์†์„ ํ•˜๊ธฐ ์œ„ํ•ด์„  externalAccess.enabled=true๋กœ ์„ค์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, Kubernetes Service์˜ ํƒ€์ž…์„ ๋ญ๋กœ ํ• ์ง€ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ €๋Š” NodePort๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

NAME                                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
bitnami-kafka                         ClusterIP   10.43.165.141   <none>        9092/TCP,9095/TCP            11h
bitnami-kafka-broker-0-external       NodePort    10.43.209.77    <none>        9094:31770/TCP               11h
bitnami-kafka-broker-1-external       NodePort    10.43.227.177   <none>        9094:30447/TCP               11h
bitnami-kafka-broker-2-external       NodePort    10.43.207.221   <none>        9094:31014/TCP               11h
bitnami-kafka-broker-headless         ClusterIP   None            <none>        9094/TCP,9092/TCP            11h
bitnami-kafka-controller-0-external   NodePort    10.43.240.235   <none>        9094:31401/TCP               11h
bitnami-kafka-controller-1-external   NodePort    10.43.222.244   <none>        9094:31073/TCP               11h
bitnami-kafka-controller-2-external   NodePort    10.43.178.28    <none>        9094:30316/TCP               11h
bitnami-kafka-controller-headless     ClusterIP   None            <none>        9094/TCP,9092/TCP,9093/TCP   11h

externalAccess.enabled=true๋กœ ์„ค์ •ํ•˜๋ฉด ๊ฐ ๋ธŒ๋กœ์ปค์™€ ์ปจํŠธ๋กค๋Ÿฌ๋งˆ๋‹ค NodePort ํƒ€์ž…์˜ Kubernetes Service๊ฐ€ ์ƒ์„ฑ ๋ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ๋Š” ๋กœ์ปฌ Kubernetes์ด๊ธฐ ๋•Œ๋ฌธ์—, Ingress ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ EKS ํ™˜๊ฒฝ์ด์—ˆ๋‹ค๋ฉด, ๋ธŒ๋กœ์ปค ๋ณ„๋กœ Ingress๋ฅผ ๋งŒ๋“ค๊ณ  ๋ธŒ๋กœ์ปค์— ํ• ๋‹น๋œ public DNS ๊ฐ’์„ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.


์ด๋ ‡๊ฒŒ ์„ธํŒ… ํ•œ ํ›„์—๋Š” KsqlDB Pod์ด ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ์— ์ •์ƒ์ ์œผ๋กœ ํ†ต์‹ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋‹ค๋งŒ, ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•˜๋Š” Kafka-Streams๋Š” Kubernetes ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ผ ๋กœ์ปฌ IntelliJ์—์„œ ์‹คํ–‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ bitnami-kafka ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐ๋˜์ง€ ๋ชปํ•˜๋Š” ํ˜„์ƒ์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค.

Advertised Listeners๊ฐ€ ํ•„์š”ํ•œ ์นดํ”„์นด ์ปดํฌ๋„ŒํŠธ๋“ค

์นดํ”„์นด์—๋Š” ๋ธŒ๋กœ์ปค ๋ง๊ณ ๋„ Advertised Listeners ์„ค์ •์ด ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Kafka Broker

  • advertised.listeners

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ์— ์ ‘์† ํ–ˆ์„ ๋•Œ, ์–ด๋–ค ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜๊ณผ ํ†ต์‹ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด Advertised Listeners ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Kafka Connect

  • CONNECT_REST_ADVERTISED_HOST_NAME
  • CONNECT_REST_ADVERTISED_PORT

Kafka Connect๋ฅผ ๋ฉ€ํ‹ฐ ์›Œ์ปค๋กœ ์šด์˜ํ•  ๋•Œ ํ•„์š”ํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. Kafka Connect๊ฐ€ ๋ฉ€ํ‹ฐ ์›Œ์ปค๋กœ ๋™์ž‘ํ•  ๋•Œ๋Š” ๊ฐ ์›Œ์ปค๊ฐ€ ์ž˜ ์‚ด์•„์žˆ๋Š”์ง€ ํ™•์ธ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Advertised Listeners๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ Task๊ฐ€ ์›Œ์ปค ๋…ธ๋“œ๋“ค์—๊ฒŒ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ถ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค.

Kafka Connect ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋ฆฌ๋” ๋…ธ๋“œ์™€ ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋กœ ์ด๋ค„์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ, Advertised Listeners๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ๋ฆฌ๋” ๋…ธ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ ์ ˆํžˆ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์•˜๋‹ค๋ฉด, ํƒœ์Šคํฌ๊ฐ€ ์›Œ์ปค ๋…ธ๋“œ์— ์ œ๋Œ€๋กœ ํ• ๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

KsqlDB

  • KSQL_ADVERTISED_LISTENERS

KsqlDB์— ์ ‘์†ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋“ค ksql-cli์™€ Kafka Connect๊ฐ€ KsqlDB์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์ด ์ œ๋Œ€๋กœ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด, ksql-cli๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์œ„์˜ ๊ณผ์ •์—์„œ bitnami-kafka์˜ Advertised Listeners๋ฅผ ์ œ๋Œ€๋กœ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœ ํ–ˆ๋Š”๋ฐ์š”. bitnami-kafka์˜ Advertised Listeners๋งŒ ์ œ๋Œ€๋กœ ์„ค์ • ํ–ˆ์„ ๋•Œ๋Š” ksqldb-server๋Š” ์ •์ƒ ์ ‘๊ทผ ํ•˜์˜€์ง€๋งŒ, ksqldb-cli๋Š” ksqldb-server์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ksqldb-server๋ฅผ ๋””ํ”Œ๋กœ์ด ํ•  ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •์ด ํ•„์š” ํ–ˆ์Šต๋‹ˆ๋‹ค.

...
      containers:
        - name: ksqldb-server
          # https://hub.docker.com/r/confluentinc/ksqldb-server
          image: confluentinc/ksqldb-server:0.29.0
          ports:
            - containerPort: 8088
          env:
            - name: KSQL_LISTENERS
              value: "http://0.0.0.0:8088"
            - name: KSQL_ADVERTISED_LISTENERS
              value: "http://0.0.0.0:8088,http://ksqldb-service.kafka.svc.cluster.local:8088"
            - name: KSQL_BOOTSTRAP_SERVERS
              value: "bitnami-kafka.kafka.svc.cluster.local:9092"
            - name: KSQL_SECURITY_PROTOCOL
              value: "PLAINTEXT"
            - name: KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE
              value: "true"
            - name: KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE
              value: "true"

๋ถ€๋ก

Empty Advertised Listeners

๋งŒ์•ฝ Advertised Listeners ๊ฐ’์ด ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ Listeners์— ์„ค์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

If this is not set, the value for listeners will be used. Unlike listeners, it is not valid to advertise the 0.0.0.0 meta-address.

๊ทธ๋Ÿฌ๋‚˜ listeners์—๋Š” ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ ๊ธฐ ๋•Œ๋ฌธ์—, Advertised Listener๊ฐ€ ๊ทธ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

INTERNAL, EXTERNAL ํ”„๋กœํ† ์ฝœ

์ข…์ข… listeners์˜ ๊ฐ’์ด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธํŒ…๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

listeners=INTERNAL://192.168.1.10:9092,EXTERNAL://0.0.0.0:9093
advertised.listeners=INTERNAL://192.168.1.10:9092,EXTERNAL://public-broker.mydomain.com:9093

INTERNAL? EXTERNAL? ์•ž์—์„œ๋Š” PLAINTEXT://...๋กœ ์„ค์ •๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ณด์•˜๋Š”๋ฐ, ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์–ด๋–ค ๊ฒฝ์šฐ์ธ์ง€ ๊ถ๊ธˆํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์นดํ”„์นด์—์„œ๋Š” ๋‚ด๋ถ€ ์„œ๋น„์Šค์™€ ์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘๊ทผ์„ ๋ถ„๋ฆฌํ•ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. listeners์— ์ž‘์„ฑ๋œ ๋‚ด์šฉ์„ ํ•ด์„ํ•ด๋ณด๋ฉด

  • INTERNAL://192.168.1.10:9092
    • ๋‚ด๋ถ€ ์„œ๋น„์Šค๋Š” 9092 ํฌํŠธ๋ฅผ ํ†ตํ•ด ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • EXTERNAL://0.0.0.0:9093
    • ์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ๋Š” 9093 ํฌํŠธ๋ฅผ ํ†ตํ•ด์„œ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  advertised.listeners์˜ ๋‚ด์šฉ์„ ํ•ด์„ํ•˜๋ฉด

  • INTERNAL://192.168.1.10:9092
    • ๋‚ด๋ถ€ ์„œ๋น„์Šค๋Š” VPC ๋ง ๋‚ด์˜ Cluster IP๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.
  • EXTERNAL://public-broker.mydomain.com:9093
    • ์™ธ๋ถ€ ์ ‘๊ทผ์€ ์œ„์˜ hostname์œผ๋กœ ์ ‘์†ํ•ด์•ผ ํ•œ๋‹ค.

advertised.listeners์— INTERNAL๊ณผ EXTERNAL 2๊ฐœ์˜ ์ฃผ์†Œ๊ฐ€ ์„ค์ • ๋˜์—ˆ๋Š”๋ฐ์š”. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•ธ๋“œ์‰์ดํฌ ๊ณผ์ •์—์„œ ์ „๋‹ฌ ๋ฐ›์€ advertised.listeners์˜ ์ฃผ์†Œ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์‹ ์ด INTERNAL์— ์†ํ•œ๋‹ค๋ฉด, INTERNAL๋กœ ์•„๋‹ˆ๋ผ๋ฉด EXTERNAL์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์›ํ•œ๋‹ค๋ฉด, INTERNAL๋งŒ ์ •์˜ํ•ด์„œ ๋‚ด๋ถ€ ํŠธ๋ž˜ํ”ฝ๋งŒ ๋ฐ›๋„๋ก ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ณ , EXTERNAL๋งŒ ์ •์˜ํ•ด์„œ ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ ๋ฐ›๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

(์ด๋ ‡๊ฒŒ ์ ์—ˆ๋Š”๋ฐ๋„ ์•„์ง ์™„์ „ํžˆ ์ดํ•ดํ•œ ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹คโ€ฆ;;)

Categories:

Updated: