본문 바로가기
Kafka

1. Zookeeper란? Zookeeper의 실행 시 동작

by #Glacier 2024. 4. 3.
반응형

이 글에 앞서 실행환경이 구성되어있지 않다면

아래의 글을 통해 실행환경을 구성하고 테스트해보자.

 

2024.02.15 - [Kafka] - Ubuntu에 Docker, Kafka, Kafka-UI, Redis, Zookeeper, Opensearch, Logstash 설치하기

 

주키퍼는 Kafka 클러스터를 관리하는 역할입니다.

Zoo Keeper 이름 처럼 Zoo(동물원)을 Keeper(지키는) 역할입니다.

 

현재는 Kafka 3.X 대에 들어서면서 Zookeeper가 내장된 형태로 진행되는 Kraft 가 나온것으로 알고 있으나

아직 많이 사용되어 충분히 운영환경에서 쓰이지 않은 부분도 있어 여전히 Kafka + Zookeeper의 형태로 운영되는 경우도 많다.

 

Zookeeper의 상세한 역할을 보면,

 

  • 분산 코디네이션

분산 시스템에서 여러 서버간의 동기화, 리더 선출, 서버 간의 통신을 조정하는 데 사용된다.

아파치 카프카와 같은 분산 메시징 시스템에서 주키퍼를 사용해 토픽 파티션의 리더 및 컨슈머 그룹의 멤버를 관리한다.

  • 동기화 서비스

여러 클라이언트 간에 공유 데이터를 동기화하기 위한 서비스를 제공한다. 분산 시퀀스, 임시 노드 등의 기능을 통해 클라이언트 간의 순서 보장 및 안정적인 동기화 역할을 한다.

  • 동적 구성

동적으로 변경 가능한 구성 데이터를 저장하고 관리한다.

  • 확장성 및 안정성

분산 시스템의 안정성을 높이기 위해 설계되었고, 클러스터링 및 자동 장애복구와 같은 기능을 제공한다. 

 

이러한 역할을 하는 주키퍼를 앞선 docker-compose로 up 시켰으면, 실행되었을 것이다.

이 컨테이너의 로그를 통해 주키퍼의 역할을 살펴보자.

 

주키퍼가 실행될 때 화면

 

주키퍼가 일단 시작되면, User정보를 확인하고, data및 log를 사용하기 때문에 해당 폴더의 권한확인을 한다.

이후 실행되면서 대표적인 zookeeper.properties와 같은 configuration 파일을 먼저 읽으며 서버를 구동한다.

 

 

 

그 다음, 주키퍼가 실행된 후 클래스패스를 읽고,

 

스냅샷과 데이터 경로를 설정한다.

 

이렇게 경로에 있는 스냅샷을 성공적으로 로드하고, log file을 기록하면서 구동이 끝난다.

 

즉 스냅샷을 통해 초기 데이터를 로드하는 것을 알 수 있다.

 

앞으로 카프카를 하면서  뗄 수 없는 관계니까 필요한 내용이 있을 때 마다 다시 포스팅 해야겠다.

 

 

반응형