문서 목적

해당 문서는 Zookeeper에 대해서 간략하게 정리하기 위한 문서이다.
현재는 책에 있는 내용만 보고, 추후 더 공부할 예정...

Zookeeper

ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or another by distributed applications. Each time they are implemented there is a lot of work that goes into fixing the bugs and race conditions that are inevitable. Because of the difficulty of implementing these kinds of services, applications initially usually skimp on them, which make them brittle in the presence of change and difficult to manage. Even when done correctly, different implementations of these services lead to management complexity when the applications are deployed.
> https://zookeeper.apache.org/

분산 코디네이터 서비스를 제공하는 오픈 소스 프로젝트
분산 환경의 경우, 수십~수천 대의 서버로 구성되는데, 서버 간의 정보를 쉽고 안전아게 공유해야만 효율적으로 관리할 수 있다.
코디네이터 시스템은 이런 공유된 정보를 이용해 서버간의 중요한 이벤트(분산락, 순서제어,부하 분산, 네임서비스 등)를 관리하면서 상호작용을 조율해준다.
현재 hadoop, kafka, Storm등의 분산 노드 관리에 사용 중이다.

구성 요소

  • Client : 주키퍼의 ZNode에 담긴 데이터에 대한 쓰기, 읽기, 삭제 등의 작업을 요청하는 클라이언트
  • ZNode : 주키퍼 서버에 생성되는 파일 시스템의 디렉터리 개념으로, 클라이언트의 요청 정보를 계층적으로 관리(버전, 접근 권한, 상태, 모니터링 객체 관리 등의 기능 지원)
  • Ensemble : 3대 이상의 주키퍼 서버를 하나의 클러스터로 구성한 HA 아키텍처
  • Leader Server : Ensemble 안에는 유일한 리더 서버가 선출되어 존재하며, 클라이언트의 요청을 받은 서버는 해당 요청을 리더 서버에 전달하고, 리더 서버는 모든 팔로워 서버에게 클라이언트 요청이 전달되도록 보장
  • Follower Server : Ensemble 안에서 한 대의 리더 서버를 제외한 나머지 서버로서, 리더 서버와 메시지를 주고받으면서 ZNode의 데이터를 동기화하고 리더 서버에 문제가 발생할 경우 내부적으로 새로운 리더를 선출하는 역할을 수행

Architecture

Zookeeper는 3대 이상의 홀수 개의 서버로 구성돼야 하며, 그 중 1대는 Leader서버가 되고 나머지는 Follow 서버가 된다.

참고

profile
열심히 정리하는 습관 기르기..

0개의 댓글