[Zookeeper] 1. 개념 정리

이강호·2022년 10월 18일
0
post-thumbnail

회사에서 Zookeeper를 사용해 보았다.
사용하게 된 첫번째 이유는 Kafka Clustering을 위해서였다. 그 뒤로 개별 서비스에서 HA 기능이 필요하게 되면서 코디네이션 툴로 Zookeeper를 사용하게 되었다.
이에 Zookeeper는 무엇인지, Zookeeper에서 제공하는 기능에는 어떤 것들이 있는지 찾아보고 정리하고자 한다.

먼저 Zookeeper를 간단하게 3가지 키워드로 정의해보자.
Zookeeper의 소개글에서 굵직한 키워드들을 살펴보면,

  1. Centralized Service
  2. Distributed Applications
  3. Race Conditions

이렇게 3가지 키워드로 정리해 볼 수 있을 것 같다. 하나하나 톺아보도록 하자.

.

1. Centralized Service

Centralized는 중앙 집중식이란 뜻이다. 중앙 집중식이란 하나의 메인 시스템에 의해 분산되어 있는 시스템들이 제어되는 것을 의미한다. Zookeeper는 동물원 사육사라는 뜻으로도 번역할 수 있는데, 주변의 빅데이터 오픈 소스 프로젝트들을 보면 Hadoop(코끼리), Chukwa(거북이), Pig(돼지) 등 주로 동물을 대표 이미지로 사용한다. Zookeeper는 이런 환경에서 코디네이션 역할을 하며 각 시스템들의 제어권을 지니고 컨트롤하게 된다.

2. Distributed Applications

요즘 애플리케이션은 Singe Server, Single Application이 아니라 Multi Servers, Multi Applications 구조를 지닌다. 그 이유로는 장애 대응(가용성) 및 수평적 확장 등 다양한 원인이 있다. 이렇듯 분산된 애플리케이션들이 동작하기 위해선 이를 제어하는 코디네이션, 감시자 역할이 필요하게 된다. Zookeeper는 Zookeeper Cluster를 통해 그 기능을 제공한다.

3. Race Conditions

경쟁 상태(Race Conditions)는 운영체제에서도 등장하는 개념인데, 둘 이상의 입력 혹은 조작의 순서가 결과에 영향을 줄 수 있는 상태를 의미한다. 다중 서비스 환경에서 요청 혹은 트래픽이 발생했을 때 어떤 서비스에 할당하고 어떤 순서로 처리할지 정하는 것은 결과에 큰 영향을 준다. 그렇다면 Zookeeper는 이러한 경쟁 상태를 어떻게 해결할까.

Zookeeper에는 Leader와 Follower라는 개념이 존재한다. Leader는 반드시 하나만 존재하며 Ledaer를 제외한 나머지 노드들은 Follwer가 된다. Zookeeper의 Leader Election 과정을 통해 선택된 Leader는 데이터의 추가, 수정, 삭제에 대한 처리를 하게 된다. Leader가 데이터를 변화시키면 Broadcast를 하게 되고, Follwer들은 이를 수신하고 Leader에게 Ack 신호를 보내게 된다. 이렇게 Leader라는 하나의 노드만 데이터에 접근할 수 있도록 함으로써 경쟁 상태를 해결할 수 있었다.

Zookeeper에서 사용하는 프로토콜으로는 ZAB(Zookeeper Atomic Broadcast protocol)이 있다. ZAB에서 AB, Atomic Broadcast란 분산 환경의 각 노드간 정보 교환을 위해 진행하는 Broadcast에서 순서가 보장되는 것을 의미한다. 즉, 경쟁 상태의 각 노드들이 동일한 정보를 동일한 순서로 받아 처리하게 된다. 이것이 중요한 이유는 Leader의 값 변화에 대해 Follwer들이 순차적으로 처리할 수 있게 되고, 데이터의 꼬임이 발생하지 않기 때문이다. 결과, 모든 서버를 동기화 상태로 유지할 수 있게 된다.
.
.
.

마치며...

Zookeeper의 기본적인 개념들을 정리해보았다. 다음 시간에는 조금만 더 깊게 들어가서 각 노드간 클러스터링의 순차 구조 및 장애 처리 로직 등 다양한 것들을 알아보기로 하자.

(참고자료)
- Architecture of ZAB – ZooKeeper Atomic Broadcast protocol
- How Does Zookeeper Servers Remain In sync?
- Zab: High-performance broadcast for primary-backup system
- Apache Zookeeper Zab1.0
- ZooKeeper Recipes and Solutions

profile
할 때 하고 놀 때 노는 개발자

0개의 댓글