Kafka

Zookeeper 구성에 관한 팁

재심 2022. 11. 2. 15:05

[zookeeper 홀수개를 권장하는 이유]

클러스터를 구성할 때 적절한 노드 수: (n/2+1) 

→ 5개의 노드로 zookeeper quorum을 구성하고자 한다면, (5/2+1) = 3개의 노드가 quorum으로 구성되어야 한다. 

 

아래가 예제

 

만약 quorum 크기가 2라고 가정한 상태에서..

두 DC간 단절상황인 Split Brain이 발생한다면 각 DC에서는 각자 자신들이 Primary라고 인식하게 되서 중복으로 서비스가 실행되게된다. 

이후에 장애가 복구되었을 때 정상적인 운영이 불가해지는 상태에 빠질 수 있다고 한다.

 

즉 Split Brain을 방지하기 위해 (n/2+1) = 3개를 quorum으로 구성할 필요가 있다. 

 

참조: https://paulsmooth.tistory.com/156

 

[zookeeper] 과반수 구성 이유 (majority voting/quorums)

zookeeper를 구성하는 경우 과반수 선출(majority voting/quorums)을 위해 zookeeper server의 수를 홀수로 구성할 것을 권고한다. 개발/테스트 환경을 위해서 1대로 구성하는 경우가 아니라면, 보통 3대로 구성

paulsmooth.tistory.com

split-brain과 zookeeper 서버 구성에 대한 정리: https://blog.actorsfit.com/a?ID=01300-582eef31-3269-41b7-80ab-d4da36d4f73f 

 

What is split brain? How does Zookeeper solve it? - actorsfit

What is split brain Split-brain is "brain split", that is, one "brain" is split into two or more "brains". We all know that if a person has multiple brains and they are independent of each other, It will lead to the human body "hands dancing" and "not list

blog.actorsfit.com

 

[짝수개가 되면 안되는건가?]

결론적으로 짝수개를 구성해도 문제가 되진 않는다고 한다. 

예를 들어, 5개로 구성된 클러스터A와 6개로 구성된 클러스터B를 비교해보자..!

 

Quorum

A: (5/2+1) = 3

B: (6/2+1) = 4

 

장애허용 수

A: 5-3 = 2

B: 6-4 = 2

 

즉, 짝수나 홀수가 장애허용수가 같고, 노드추가로 인한 오버헤드가 있을 수 있기 때문에 짝수개를 권장하지 않는다.

 

[2.5 Data Center Topology]

2.5DC로 구성한 zookeeper

 

 

 

[참고도서]

https://www.oreilly.com/library/view/zookeeper/9781449361297/

 

ZooKeeper

Building distributed applications is difficult enough without having to coordinate the actions that make them work. This practical guide shows how Apache ZooKeeper helps you manage distributed systems, so you … - Selection from ZooKeeper [Book]

www.oreilly.com