-
2. zookeeper(주키퍼)SW개발/Kafka 2020. 9. 15. 00:00
1. Zookeeper?
주키퍼는 분산 애플리케이션을 위한 코디네이션 시스템입니다. 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산되어 있는 각 애플리케이션의 정보를 중앙에 집중하고 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공합니다.
2. Ensemble
주키퍼는 그림과 같이 서버 여러 대를 앙상블(클러스터)로 구성하고, 분산 애플리케이션들이 각각 클라이언트가 되어 주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고받게 됩니다. 상태 정보들은 주키퍼의 지노드(znode)라 불리는 곳에 키-값 형태로 저장하고, 지노드에 키-값이 저장된 것을 이용하여 분산 애플리케이션들은 서로 데이터를 주고 받게 됩니다. 참고로, 앙상블로 구성되어 있는 주키퍼는 과반수 방식에 따라 살아 있는 노드 수가 과반 수 이상 유지되기만 하면 지속적인 서비스가 가능합니다.
3. (참고) zookeeper config
zookeeper 설치시에 zookeeper의 설정은 아래와 같은 값을 가집니다.
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data clientPort=2181 server.1=peter-zk001:2888:3888 server.2=peter-zk002:2888:3888 server.3=peter-zk003:2888:3888
- tickTime: 주키퍼가 사용하는 시간에 대한 기본 측정(밀리초)
- initLimit: 팔로워가 리더와 초기에 연결하는 시간에 대한 타임 아웃 tick의 수
- syncLimit: 팔로워가 리더와 동기화 하는 시간에 대한 타임 아웃 tick의 수(주키퍼에 저장된 데이터의 수가 크면 수를 늘려야합니다)
- dataDir: 주키퍼의 트랜잭션 로그와 스냅샷이 저장되는 데이터 저장 경로
- clientPort: 주키퍼 사용 TCP 포트
- server.x: 주키퍼 앙상블 구성을 위한 서버 설정. myid와 호스트 이름 또는 ID 주소를 모두 입력하고, 포트 번호를 입력합니다. 여기서 2888, 3888은 기본 포트이며 앙상블 내 노드끼리 연결하는데 사용하고, 리더 선출에 사용합니다.
이 외에도 더 많은 주키퍼 옵션들이 있지만, 이 부분은 생략합니다.
'SW개발 > Kafka' 카테고리의 다른 글
6. Consumer (0) 2020.09.20 5. Producer (1) (0) 2020.09.18 4. kafka 구조 (0) 2020.09.17 3. Kafka broker의 주요 설정(properties) (0) 2020.09.16 1. Kafka란? (0) 2020.09.14