이 글에 앞서 실행환경이 구성되어있지 않다면
아래의 글을 통해 실행환경을 구성하고 테스트해보자.
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을 기록하면서 구동이 끝난다.
즉 스냅샷을 통해 초기 데이터를 로드하는 것을 알 수 있다.
앞으로 카프카를 하면서 뗄 수 없는 관계니까 필요한 내용이 있을 때 마다 다시 포스팅 해야겠다.
'Kafka' 카테고리의 다른 글
5. Kafka - Kafka-Configs (0) | 2024.04.04 |
---|---|
4. Kafka - 컨슈머 그룹 (Consumer Group) (0) | 2024.04.04 |
3. Kafka - 키가 없는 경우의 파티셔닝 전략 (0) | 2024.04.04 |
2. Kafka - CLI 환경에서 다양한 방식의 메시지 송/수신 테스트 하기 (0) | 2024.04.04 |
Ubuntu에 Docker, Kafka, Kafka-UI, Redis, Zookeeper, Opensearch, Logstash 설치하기 (1) | 2024.04.03 |