Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

Zookeeper 개요 본문

Kafka, MSK, Kinesis/아키텍처 및 내부 구조

Zookeeper 개요

`O` 2025. 5. 24. 01:39
728x90
반응형

이 페이지에서는 Kafka 를 구성 및 이용하기 위해 기반이 되는 Zookeeper 에 대하여 다룬다.

 

이 페이지는 perplexity 를 통해 필자가 어떤 prompt 를 작성하여 공부하는지를 공유한다. ([] 로 표기)

또한, 검색이외에 추가로 덧붙일 내용은 ※ 로 추가한다.

 

AI 를 통해 관련된 자료를 검색하다보면 이전 게시글과 중복된 사항도 있으나 이는 복습 및 상기 차원에서 그대로 기재 되도록 한다.

또한, 출처 또한 동시에 표기한다.

 

[Zookeeper 는 무엇이고, Kafka 에 어떻게 쓰이는지 알려줘]

 

Zookeeper는 분산 시스템에서 여러 서버와 애플리케이션의 상태를 중앙에서 관리하고 조율해주는 오픈소스 코디네이션 서비스다. 주로 분산 환경에서 서버 간 정보 공유, 서버의 상태 모니터링, 분산 락, 장애 감지, 환경설정 관리 등 다양한 역할을 수행한다. Zookeeper는 데이터를 디렉터리 구조(znode)로 저장하며, Leader와 Follower 구조를 통해 데이터의 일관성과 동기화를 보장한다. 보통 3대 이상의 서버(홀수)를 클러스터로 구성하여 과반수 합의로 장애에 대응한다158.

 

Kafka에서는 Zookeeper가 클러스터의 메타데이터 관리와 브로커, 토픽, 파티션 등의 상태 조율에 사용된다. 예를 들어, Kafka 브로커가 추가되거나 제거될 때, Zookeeper가 이를 감지하고 클러스터 내 역할 분배와 리더 선출 등의 작업을 처리한다. 또한, 컨슈머 그룹의 오프셋 관리, 분산 락, 장애 복구 등에도 관여하여 Kafka 시스템이 안정적으로 동작할 수 있도록 돕는다. 즉, Kafka에서 Zookeeper는 클러스터의 중심에서 각 구성 요소의 상태를 실시간으로 관리하고, 장애 발생 시 빠르게 복구할 수 있도록 지원하는 핵심 인프라 역할을 한다148.

 

Citations:

  1. https://velog.io/@rmdrkdgh/Zookeeper-1.-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
  2. https://xangmin.tistory.com/169
  3. https://junb51.tistory.com/5
  4. https://velog.io/@cobin_dev/Kafka%EC%99%80-Zookeeper%EC%9D%98-%EA%B0%9C%EB%85%90
  5. https://coding-start.tistory.com/66
  6. https://jokergt.tistory.com/188
  7. https://naeti.tistory.com/52
  8. https://ram2ram2.tistory.com/5

위에서 홀수 서버를 클러스터로 구성 후 과반수 서버의 합의에 따른 장애에 대응하는 개념을 쿼럼(quorum) 이라하며

이 또한 AI 로 검색하면 아래의 내용을 얻을 수 있다.

 

[Quorum 에 대해서 알려줘]

 

quorum(쿼럼)은 분산 시스템에서 어떤 작업을 성공적으로 처리하거나 합의를 이루기 위해 필요한 최소한의 노드 수를 의미한다134. 주로 클러스터 환경에서 과반수 이상의 노드가 응답하거나 동의해야만 데이터의 일관성, 장애 복구, 리더 선출 등의 중요한 작업이 진행될 수 있도록 한다25.

 

예를 들어, 노드가 5개인 클러스터에서 쿼럼은 (5+1)/2=3(5+1)/2 = 3개 노드로 계산된다. 즉, 3개 이상의 노드가 동의해야만 트랜잭션이 성공적으로 처리된다. 이렇게 하면 일부 노드가 장애가 나더라도, 클러스터 전체의 일관성과 가용성을 유지할 수 있다35. 만약 쿼럼이 과반수가 아니라 더 적은 수로 구성된다면, 장애 발생 시 데이터 불일치나 유실이 발생할 수 있다5.

쿼럼은 스플릿 브레인(split-brain) 현상(네트워크 단절로 인해 클러스터가 둘로 쪼개져 각자 독립적으로 동작하는 문제)을 방지하는 데도 중요한 역할을 한다. 과반수 이상의 노드가 동작하지 않으면 클러스터는 정상적으로 동작하지 않으며, 이로 인해 데이터의 무결성을 보장할 수 있다45.

 

즉, quorum은 분산 시스템에서 일관성과 신뢰성을 보장하기 위한 핵심 개념이다.

 

Citations:

  1. https://hayz.tistory.com/entry/%EA%B0%95%EC%9D%98-%EC%A0%95%EB%A6%AC-Distributed-System-52-Quorums-%EC%A0%95%EC%A1%B1%EC%88%98
  2. https://delicioushwan.tistory.com/10
  3. https://seongjin.me/raft-consensus-algorithm/
  4. https://leehi0110.tistory.com/12
  5. https://engkimbs.tistory.com/entry/Zookeeper-Quorum-and-Majority-%EC%BF%BC%EB%9F%BC%EA%B3%BC-%EA%B3%BC%EB%B0%98%EC%88%98
  6. https://blog.naver.com/PostView.nhn?blogId=xkqlwlsemlf&logNo=222368062691
  7. https://bluayer.com/61

 

[Kafka 이외에 Zookeeper 가 쓰이는 영역을 알려줘]

 

Zookeeper는 분산 시스템에서 여러 서버와 애플리케이션의 상태를 중앙에서 관리하고 조율하는 분산 코디네이션 서비스다. Kafka 외에도 다양한 영역에서 활용되고 있다.

다음은 Zookeeper가 사용되는 대표적인 영역이다.

 

  • 설정 관리: 여러 서버가 동시에 사용하는 설정 정보를 중앙에서 관리하고, 변경 사항을 실시간으로 동기화할 때 사용한다56.
  • 클러스터 관리: 분산 시스템의 클러스터 내 노드들의 상태를 모니터링하고, 노드 추가/제거 시 정보를 공유하는 데 활용된다256.
  • 리더 선출(Leader Election): 여러 서버 중 하나를 리더로 선출해야 하는 환경에서 공정하고 일관성 있게 리더를 선정하는 데 사용된다45.
  • 분산 락 서비스: 여러 프로세스가 동시에 자원에 접근하지 않도록 분산 락을 제공하여 데이터 일관성을 보장한다48.
  • 네임 서비스: 분산 환경에서 서버, 노드, 자원 등의 네임스페이스를 관리하는 데 사용된다46.
  • 분산 큐: 분산 환경에서 이벤트 처리나 메시지 큐 시스템의 일부로 활용될 수 있다4.
  • 장애 감지 및 복구: 노드 장애 발생 시 이를 감지하고, 다른 노드가 복구 작업을 수행할 수 있도록 정보를 공유한다7.
  • 상태 정보 및 메타데이터 관리: 여러 서버가 공유하는 상태 정보나 메타데이터를 저장하고 관리하는 데 쓰인다67.

실제 적용 예시로는 Apache Hadoop, Apache HBase, Apache Storm, Apache Solr, ClickHouse 등 다양한 분산 시스템에서 Zookeeper를 활용하여 노드 간 조정, 상태 관리, 리더 선출, 클러스터 메타데이터 관리 등을 수행한다479.

즉, Zookeeper는 Kafka뿐만 아니라 다양한 분산 시스템에서 핵심적인 조정 및 동기화 인프라로 널리 사용되고 있다.

 

Citations:

  1. https://velog.io/@kimtjsdlf/Zookeeper%EB%9E%80
  2. https://engkimbs.tistory.com/entry/%EC%A3%BC%ED%82%A4%ED%8D%BC-Zookeeper-%EC%95%84%ED%8C%8C%EC%B9%98-%EC%A3%BC%ED%82%A4%ED%8D%BCApache-Zookeeper-%EC%86%8C%EA%B0%9C-%EB%B0%8F-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98
  3. https://d2.naver.com/helloworld/294797
  4. https://blog.pages.kr/2850
  5. https://testkernelv2.tistory.com/524
  6. https://kimseunghyun76.tistory.com/397
  7. https://selfish-developer.com/entry/Zookeeper-%EC%82%AC%EC%9A%A9-%EB%AA%A9%EC%A0%81%EA%B3%BC-%EC%82%AC%EB%A1%80-%EC%A4%91%EC%8B%AC%EC%9C%BC%EB%A1%9C-%EC%A0%95%EB%A6%AC
  8. https://herojoon-dev.tistory.com/212
  9. https://sungks.tistory.com/167
  10. https://www.slideshare.net/slideshow/zookeeper-34888385/34888385

Perplexity로부터의 답변: pplx.ai/share

 

728x90
반응형
Comments