[Kafka] Zookeeper 없이 Kafka 시작하기

이재민·2024년 1월 29일
0

Kafka

목록 보기
10/17

Kafka KRaft Mode

Kafka 프로젝트는 2019년 8월 1일 KIP-500이 도입되면서 가장 큰 변화를 수행했다고 합니다.
Apache Kafka 실행에 대한 종속성인 Zookeeper를 제거하려는 목적이었다고 합니다.


Kafka에서 Zookeeper를 제거하는 이유는?

Kafka 스케일링으로 인해 Zookeeper의 성능적 병목 현상이 발생했습니다. 즉, Kafka에는 Zookeeper와 관련하여 제한 사항이 있습니다.

  1. Kafka Cluster는 제한된 수의 파티션만 제공합니다.(최대 200,000개)
  2. Kafka Broker가 Cluster에 참여하거나 제거될때 다수의 Reader 선택이 발생해야 하며 이로 인해 Zookeeper에 과부하가 걸리고 Cluster 속도가 일시적으로 느려질 수 있습니다.
  3. Kafka Cluster 설정은 어렵고 설정할 다른 구성 요소에 따라 다릅니다.
  4. Kafka Cluster 메타데이터가 때때로 Zookeeper와 동기화되지 않습니다.
  5. Zookeeper 보안은 Kafka 보안보다 뒤떨어져 있습니다.

Zookeeper를 제거한다는 것은 Kafka Controller 선택을 수행하기 위해 여전히 쿼럼 역할을 해야 함을 의미하므로 Kafka Broker는 Raft 프로토콜 구현하여 새로운 Kafka 메타데이터 쿼럼 모드(Quorum mode)에 KRaft라는 이름을 부여합니다.


Zookeeper가 없을때 갖는 이점

  1. 수백만 개의 파티션으로 확장할 수 있고 유지 관리 및 설정이 더 쉽습니다.
  2. 안정성 향상, 모니터링, 지원 및 관리가 더 쉬워졌습니다.
  3. Kafka를 시작하는 단일 프로세스
  4. 전체 시스템에 대한 단일 보안 모델
  5. 더 빠른 컨트롤러 종료 및 복구 시간

참고 문서

https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum
https://www.confluent.io/blog/removing-zookeeper-dependency-in-kafka/


Mac OS에서 KRaft로 Kafka 설치하기

Java 설치하기


Apache Kafka 설치하기


Start Apache Kafka

  1. 새로운 cluster ID를 발급 받습니다.
    • 설치된 파일을 본인의 root 경로로 옮겨 sh 파일을 실행합니다.
      • ~/kafka_2.12-3.6.1/bin/kafka-storage.sh random-uuid
      • 새로운 UUID를 발급 받습니다.
  2. Storage directory 포맷
    • 발급 받은 새로운 cluster ID를 아래 명령어에 대체하여 실행합니다.
    • ~/kafka_2.12-3.6.1/bin/kafka-storage.sh format -t <uuid> -c ~/kafka_2.12-3.6.1/config/kraft/server.properties
    • default 경로인 /tmp/kraft-combined-logs 가 포맷되고 config/kraft/server.properties 에 카프카가 데이터를 저장하게 경로가 변경됩니다.
  3. 카프카 실행
    • ~/kafka_2.12-3.6.1/bin/kafka-server-start.sh ~/kafka_2.12-3.6.1/config/kraft/server.properties
profile
문제 해결과 개선 과제를 수행하며 성장을 추구하는 것을 좋아합니다.

0개의 댓글