< Zookeeper 란? >

 

Zookeeper 란, 분산 시스템을 위한 중앙화된 분산 코디네이터임.

분산된 컴퓨터들이 하나의 목적을 위해 일을 하는 상황에서

고려해야 하는 사항들이 많음.

네트워크 신뢰성, 대역폭, 안전성, 전송 비용, 분산 서버 간 정보(데이터) 공유, 동기화, 분산 서버 상태 확인 등.

 

Zookeeper 는 분산 코디네이터로써

잠금 제어, 리더 선정, 동기화, 데이터 공유를 위한 데이터 스토리지 등의 기능을 제공.

 

 

 

 

< 역할 >

- 리더 선출 : 다중 어플리케이션 중에서 어떤 노드를 리더로 선출할 지를 정하는 로직을 만드는 데 사용

     주로 복제된 여러 노드 중 연산이 이루어지는 하나의 노드를 택하는 데 사용

- 중앙 집중형 신뢰성 있는 데이터 저장소

- 분산 클러스터 관리 : 클러스터의 서버가 추가되거나 제외될 때 그 정보를 클러스터 안 서버들이 공유하는 데 사용

- 분산 락/동기화 서비스 : 클러스터에 쓰기 연산이 빈번할 경우 경쟁상태에 들어갈 가능성이 커짐

     이는 데이터 불일치를 발생시킴

     이 때, 클러스터 전체를 대상을 동기화해( 락을 검 ) 경쟁상태에 들어갈 경우를 사전에 방지

- 명명 서비스

- 설정 관리 : 클러스터의 설정 정보를 최신으로 유지하기 위한 조율 시스템으로 사용

 

 

홀수개인 이유

 

- zookeeper 의 leader 노드가 죽었을 때, follower 들 중 다음 leader 를 선출하기 위해, 혹은

앙상블의 노드 하나가 죽었을 때 정상적인 서비스를 하기 위해, 혹은

앙상블의 노드 간 데이터 불일치가 발생했을 때 데이터 보정(동기화)를 하기 위해

'앙상블을 이루는 노드 개수'의 과반수 이상(반 이상, 즉 n/2 이상)의 동의가 필요하다.

(과반수 이상이 갖는 데이터를 기준으로 동기화가 진행됨)

 

만약 앙상블이 3대의 노드로 이루어졌더라면, (투표가 가능한 2대 중) 2대 이상의 동의가 필요하고

4대의 노드로 이루어졌더라면 (투표가 가능한 3대 중) 2대 이상의 동의가 필요하고

5대의 노드로 이루어졌더라면 (투표가 가능한 4대 중) 3대 이상의 동의가 필요하고

6대의 노드로 이루어졌더라면 (투표가 가능한 5대 중) 3대 이상의 동의가 필요하다.

 

위와 같이, 3대나 4대, 그리고 5대나 6대에서 동의가 필요한 노드 개수에 차이가 없다.

과반수 이상의 동의가 필요한 작업에서 짝수와 홀수 개수의 효과가 똑같다.

굳이 한 대를 더 추가하지 않은 홀수 개의 노드들 만으로도 서비스를 충분히 구동할 수 있다.

즉, 짝수대로 설치하는 것이 홀수대로 설치하는 것보다 이점이 없기 때문.

 

 

 

 

 

 

 

주키퍼 기본 개념

https://alnova2.tistory.com/1044 (설치 방법도 포함)

https://engkimbs.tistory.com/660

https://coding-start.tistory.com/66(출처 : https://d2.naver.com/helloworld/294797)

 

세 개 링크 모두 정독하면 주키퍼가 뭔지 어느정도 감이 잡힌다.

 

 

 

참고

https://kjyun.tistory.com/102

https://over153cm.tistory.com/entry/what-is-ZooKeeper

 

+ Recent posts