아파치 주키퍼

IT 위키

아파치 주키퍼(Apache ZooKeeper)는 대규모 분산 시스템에서 구성 정보 관리, 이름 서비스, 동기화, 그룹 관리 등을 지원하는 중앙 집중식 분산 코디네이터이다. 노드 간의 일관성과 고가용성을 유지하기 위해 설계되었으며, 다양한 분산 애플리케이션에서 핵심 인프라로 사용된다.

1 개념[편집 | 원본 편집]

  • 주키퍼는 클라이언트와 서버 간의 일관된 상태 공유를 위한 중앙 저장소 역할
  • 분산 환경에서의 동기화 문제 해결을 위한 도구
  • 간단한 API로 복잡한 분산 시스템 기능 구현 가능
  • Paxos를 단순화한 Zab(Zookeeper Atomic Broadcast) 프로토콜을 사용하여 데이터 복제 및 합의 처리

2 주요 기능[편집 | 원본 편집]

  • 구성 정보 저장
    • 클러스터 구성, 서비스 주소, 포트 등 공유 정보 관리
  • 분산 락(Distributed Lock)
    • 하나의 작업을 하나의 노드만 실행하도록 제어
  • 리더 선출(Leader Election)
    • 다수 노드 중 하나를 리더로 자동 선정
  • 이벤트 알림 및 워치(Watch)
    • 데이터 변경 감지 시 클라이언트에게 알림 제공
  • 노드 그룹 관리
    • 클러스터 내 서비스 인스턴스의 동적 등록 및 조회

3 데이터 모델[편집 | 원본 편집]

  • 주키퍼는 파일 시스템과 유사한 트리 구조의 계층적 네임스페이스를 사용함
  • 트리의 각 노드를 znode라고 부르며, 경로(path)로 접근 가능
  • znode에는 데이터와 메타데이터(버전, 타임스탬프, 자식 노드 수 등)를 포함할 수 있음
  • 각 znode는 다음 중 하나로 생성됨:
    • 영속 노드(Persistent znode): 삭제 요청이 없으면 유지됨
    • 임시 노드(Ephemeral znode): 클라이언트 세션 종료 시 자동 삭제됨
    • 시퀀스 노드(Sequential znode): 자동 증가 번호가 붙은 노드 생성 (영속 또는 임시 가능)

예시 트리 구조:

/
├── app
│   ├── config
│   └── servers
│       ├── server1
│       └── server2
  • 워치 기능을 통해 특정 znode의 변화(생성, 삭제, 데이터 변경 등)를 감시 가능
  • 트리 구조는 이름 서비스, 설정 정보 저장, 동기화 구조 구성에 적합

4 특징[편집 | 원본 편집]

  • 읽기 작업은 빠르고, 쓰기 작업은 느릴 수 있음 (일관성 우선 모델)
  • 다중 서버로 구성된 클러스터 기반 → 고가용성 보장
  • 최소 3개 이상의 서버(쿼럼 구조)로 구성해야 안정성 확보

5 사용 예시[편집 | 원본 편집]

  • Apache Kafka의 브로커 메타데이터 관리
  • Hadoop 클러스터의 이름 노드 활성/비활성 관리
  • HBase의 마스터 선출 및 메타 데이터 공유
  • 마이크로서비스 환경에서 서비스 디스커버리

6 구조[편집 | 원본 편집]

  • 클라이언트는 주키퍼 서버에 연결하여 znode를 읽고 쓰며, 워치를 설정
  • 서버는 Leader-Follower 구조로 구성됨
  • Zab 프로토콜을 통해 데이터 일관성과 장애 복구 수행

7 주키퍼 vs etcd vs Consul[편집 | 원본 편집]

항목 ZooKeeper etcd Consul
합의 알고리즘 Zab Raft Raft
데이터 모델 트리(znode) key-value key-value + 서비스 디스커버리
주요 용도 동기화, 리더 선출 설정 관리, Kubernetes 서비스 디스커버리, 헬스 체크

8 같이 보기[편집 | 원본 편집]

9 참고 문헌[편집 | 원본 편집]

  • Apache ZooKeeper 공식 문서: https://zookeeper.apache.org/
  • Hunt, P. et al. (2010). ZooKeeper: Wait-free coordination for internet-scale systems. USENIX ATC
  • "Designing Data-Intensive Applications" by Martin Kleppmann