1 분 소요

아파치 카프카 래프트(KRaft)는 메타데이터 관리를 위해 ZooKeeper에 대한 아파치 카프카의 의존성을 제거하기 위해 도입된 합의 프로토콜입니다.
이것은 메타데이터에 대한 책임을 두 개의 다른 시스템으로 나누는 대신 Kafka 자체로 통합함으로써 Kafka의 아키텍처를 크게 단순화합니다:
ZooKeeper와 Kafka. KRaft 모드는 이전 컨트롤러를 대체하고 이벤트 기반의 변형된 Raft 합의 프로토콜을 사용하는 Kafka의 새로운 쿼럼 컨트롤러 서비스를 사용합니다.

kafka cluster 구성 - broker,controller share 모델

kafka cluster를 구성할 때 broker only, controller only, broker and controller share model을 구성할 수 있습니다.

여기에서는 bitnami/kafka helm chart를 이용하여 share model로 설치하는 방법을 설명합니다.

repo 추가

bitnami helm chart repo를 추가하고 업데이트합니다.

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

values 수정

values 파일을 생성합니다. size 8Gi에서 1Gi로 모두 변경합니다.
그리고 values에서 나머지 항목을 아래와 같이 변경합니다.

helm show values bitnami/kafka  > kafka-values.yaml
global:
  storageClass: "standard"

listeners:
  client:
    containerPort: 9092
    protocol: PLAINTEXT

  controller:
    name: CONTROLLER
    containerPort: 9093
    protocol: PLAINTEXT

  interbroker:
    containerPort: 9094
    protocol: PLAINTEXT    

  external:
    containerPort: 9095
    protocol: PLAINTEXT

serviceAccount:
  name: "kafka"

controller:
  replicaCount: 3
rbac:
  create: true

kafka broker and controller 공유모델 생성

helm 을 이용하여 kafka cluster를 아래와 같이 생성합니다.

helm install kafka bitnami/kafka -f kafka-values.yaml

kafka-client 생성

kubectl run kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.8.0-debian-12-r5 --namespace default --command -- sleep infinity
kubectl exec --tty -i kafka-client --namespace default -- bash
kafka-topics.sh --bootstrap-server kafka-controller-headless:9092 --list
kubectl exec -it  kafka-client -- kafka-topics.sh --bootstrap-server kafka-controller-headless:9092 --list

kafka topic 생성

kubectl exec -it  kafka-client -- kafka-topics.sh --bootstrap-server kafka-controller-headless:9092 --create --topic testuser01 --partitions 1 --replication-factor 3

참조

태그:

카테고리:

업데이트:

댓글남기기