Study/Big Data

Zookeeper 주키퍼

z 2022. 1. 26. 11:03
728x90

 

ZOOKEEPER 주키퍼

 

: 분산 코디네이션 서비스를 제공하는 오픈소스 프로젝트 

>  분산 시스템에서 시스템 간의 정보 공유, 서버들 간의 동기화를 위한 lock(락), 상태 체크 등을 처리해주는 서비스

 

 

출처) 아파치 공식사이트

 

 

' 안정적이고 가용성 높은 znode 데이터 시스템을 제공하는 클러스터 서버'

- 네임 서비스를 통해 분산해서 각각 클라이언트들이 동시 작업할 수 있도록 지원해줘서 부하를 분산시킨다.

- 락(lock)을 통해 하나의 서버에서 처리된 결과가 다른 서버들과 동기화할 수 있게 해준다.

 

 

 


 

 

Architecture

: Leader Follower로 구성되는 Master-Slave 아키텍처를 기반으로 구성

 

 

주키퍼 아키텍처 (출처 : https://ssup2.github.io/theory_analysis/ZooKeeper/)

 

 

여러(3대 이상의) 주키퍼 서버를 하나의 클러스터로 구성한  앙상블(ENSEMBLE) ,

앙상블 데이터의 불일치를 방지하고자 한 쿼럼(Quorum),

분산 데이터 시스템인 znode로 이뤄진 주키퍼 데이터 모델(zookeeper data model)

 

서버 여러 대를 앙상블(클러스터)로 구성하고, 분산 애플리케이션들이 각각 클라이언트가 되어 주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고 받는다. * 상태 정보들은 주키퍼의 지노드(znode)라고 불리는 곳에 Key-Value 형태로 저장하며,  지노드에 저장된 것을 이용하여 분산 애플리케이션들은 서로 데이터를 주고받게 된다.

 

** 주키퍼는 분산 시스템의 일부분이기 때문에 동작을 멈춘다면 분산 시스템이 멈출수도 있다. 그래서 안정성을 확보하기 위해 클러스터로 구축한다. 클러스터는 홀수로 구축한다. 어떤 서버에 문제가 생겼을 경우 과반수 이상의 데이터를 기준으로 일관성을 맞추기 때문이다. 살아있는 노드가 과반수 이상이라면 지속적인 서비스를 제공한다.

 

 

 


 

znode 란?

: 클러스터를 구성하고 있는 각각의 서버(컴퓨터)

 

 

znode (출처: https://ssup2.github.io/theory_analysis/ZooKeeper)

 

 

일반적인 디렉토리와 형태가 비슷하고 자식노드를 가지고 있는 계층형 구조로 구성되어 있다.

각 지노드는 데이터 변경 등에 대한 유효성 검사 등을 위해 버전 번호를 관리한다. 

(데이터가 변동될 때마다 지노드의 버전 번호가 증가)

 

1.영구노드 : 명시적으로 삭제되기 전까지 존재한다.

2. 임시노드 : 세션이 유지되는 동안 존재한다. (자식노드 가질 수 없다)

 

 


 

 

> 카프카에서 주키퍼는?

서버의 상태를 감지하기 위해 사용되며 새로운 토픽이 생성되었을 시 토픽의 생성과 소비에 대한 상태를 저장한다.

주키퍼와 카프카는 대규모 환경에서는 다른 서버에 두는 편이 좋다. 주키퍼 앙상블은 홀수로 구성되어 과반수 이상이 장애가 발생하면 중단되고, 카프카는 그렇지 않아도 되기 때문에 다른 서버에 두는 것을 권장한다.



 

 

 

 

 

 

728x90