Data

[1028 from 실무로 배우는 빅데이터 기술 By 김강원 11]주키퍼

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


Client : 분산 서버.  공유할정보가 있으면 주키퍼 앙상블에 기록을하자 약속. 
          특정 분산서버 수정하면 FloowerServer에 작성.. -> 리더서버 전달. -> 나머지 싱크 맞춤. 

주키퍼 앙상블
- 환경설정정보 동기화, 
: 메타정보 로드발란싱(동기화), 패이로버(한대 죽어도 나머지 살아있어사용가능)
: 클러스터 1번~N번  서버정보 맴버쉽으로 묶어 주키퍼에 기록해놓고 있음. 
:클러스터 맴버십 관리
4번서버 장애 > 주키퍼에 4번서버정보 삭제됨. 

- 분산락 : 분산서버는 반드시 마스터가 필요함. 
Client1 마스터 지정.    주키퍼에 서버1 마스터락을받음.  나머지는 락번호낮음
마스터가 장애가 나면, 전체 클러스터문제 >> 다른 서버 마스터 지정.(그다음 락 낮은번호 자동지정) 
- 마스터 선출 
활용방안 스마트카 파일럿 프로젝트에서는 주키퍼를 직접적으로 활용하지 않는다. 
하둡, HBase, 카프카, 내부에서 주키퍼에 의존해 클러스터 멤버십 기능 및 환경설정의 동기화 등을 사용하고 있어 없어서는 안될 중요 소프트웨어다.