KRaft 모드

카프카에 대해 조사를 해보면 카프카의 메타 데이터, 브로커 상태, 토픽 상태 등을 관리하기 위해 주키퍼를 사용하는 것을 볼 수 있다. 그런데 docker kafka 이미지들을 보면 zookeeper 없이 구성된 docker-compose를 볼 수 있는데 카프카의 최근 버전에서는 주키퍼 없이 카프카를 사용할 수 있는 구조를 지향한다고 한다.

 

그래서 주키퍼없이 자체적으로 메타데이터를 관리하기 위해 만들어진 것이 KRaft 모드이고 QUORUM 컨트롤러는 KRaft 와 관련된 키워드이다.

bitnami/kafka

services:
    kafka:
        image: bitnami/kafka:latest
        ports:
            - '9092:9092'
        environment:
            # KRaft settings
            - KAFKA_CFG_NODE_ID=0
            - KAFKA_CFG_PROCESS_ROLES=controller,broker
            - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
            # Listeners
            - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
            - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
            - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
            - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
            - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT

CONTROLLER 와 관련된 환경값도 KRaft 와 관련된 것 같다.

ADVERTISED_LISTENERS 는 지정안하면 spring에서 kafka 연결을 못잡았다.

SECURITY_PROTOCOL_MAP 은 없어도 도커 잘 올라가고 연결되고 주고받는 거에는 문제없었다. 정확히 어떤 동작을 하는 보안인지는 모르겠지만 일단 두자.

 

참고 자료

https://docs.confluent.io/platform/current/kafka-metadata/config-kraft.html#configure-kraft

 

Configure and Monitor KRaft | Confluent Documentation

This document covers hardware recommendations, configuration, debugging tools, and monitoring options for running Apache Kafka® in KRaft (pronounced craft) mode. Note that as of Confluent Platform 7.5, ZooKeeper is deprecated for new deployments. Confluen

docs.confluent.io

https://hoing.io/archives/4029

 

KRaft를 사용한 Kafka 설치(Using KRaft - without zookeeper)

안녕하세요    이번 포스팅에서는 KRaft 를 사용한 Kafka 에 대한 내용과 KRaft 에 대한 내용에 대해서 확인해 보도록 하겠습니다.

hoing.io

 

https://hub.docker.com/r/bitnami/kafka/

 

Docker

 

hub.docker.com

https://github.com/bitnami/containers/blob/main/bitnami/kafka/docker-compose.yml