ZooKeeper 오픈 소스의 운용 관리·운용 자동화

Apache ZooKeeper (아파치 주키퍼)는 분산 환경 운영 지원 서비스를 제공하는 코디네이션 엔진이다. 각 노드(시스템 전체)를 중앙 집중식 유지 관리하는 기능을 제공한다. ‘설정 관리’, ‘이름 확인’, ‘동기화’, ‘그룹 서비스’와 같은 빈도가 높은 다양한 서비스가 제공된다.

개요

Apache ZooKeeper(아파치 주키퍼)는 분산 환경 운영 지원 서비스를 제공하는 코디네이션 엔진이다. 각 노드(시스템 전체)를 중앙 집중식 유지 관리하는 기능을 제공한다.

기본 설명

분산 어플리케이션을 구현하는 경우, 각 분산 노드의 설정 등에 대량의 작업이 발생하게 된다. ZooKeeper는 구성 작업과 같은 본질적인 부분을 꺼내 중앙 집중식 코디네이션 서비스로 간단한 인터페이스를 제공한다.

ZooKeeper는 ‘설정 관리’, ‘이름 확인’, ‘동기화’, ‘그룹 서비스’ 등 다양한 빈번한 서비스를 제공한다.

표준 기능으로서 “합의 프로토콜”, “그룹 관리 프로토콜”, “리더 선거 프로토콜”, “프레즌스 프로토콜” 등을 이용할 수 있다. 독자적인 요구에 대응한 서비스의 구축도 가능한다.

Apache 소프트웨어 재단의 오픈 소스 프로젝트로 Hadoop의 하위 프로젝트 중 하나이다. Java 구현되어 JVM에서 동작한다. Java/C 언어용 API가 제공되고 있다.

주요 특징

높은 처리량/낮은 대기 시간

ZooKeeper가 관리하는 다양한 데이터는 스토리지가 아닌 메모리에 보관되므로 높은 처리량과 낮은 지연을 제공한다.
높은 성능을 발휘할 수 있으므로 대규모 분산 시스템에 대응할 수 있다. 클라이언트로부터의 액세스가 읽기 주체인 경우에는 특히 고속으로 동작할 수 있다.

고 가용성 (마스터 중복)

ZooKeeper를 여러 서버에 설치하고 사용할 수 있다. 가용성을 높이고 성능 향상도 기대할 수 있다. ZooKeeper를 여러 개 시작하면 마스터가 자동으로 선택되어 각종 통괄 관리를 실행한다.
ZooKeeper 마스터 노드가 어떤 이유로든 중지되면 각 노드간에 선거가 이루어지고 새로운 마스터 노드가 선택된다.

원자성

ZooKeeper가 관리하는 데이터는 원자적으로 읽고 쓸 수 있다. 클라이언트의 업데이트를 순서대로 하나씩 적용한다. 각 노드마다 액세스 제한을 설정할 수도 있다.

계층적 네임스페이스

ZooKeeper는 데이터를 계층적 네임스페이스에 저장한다. 여러 서버에 분산되어 있는 각 프로세스는 이 네임스페이스를 공유하는 것으로 서로 협조하면서 분산 처리를 진행시킨다.

노드 간 불일치 제거

데이터 갱신은 마스터 노드만이 실시하기 때문에, 노드간에 데이터가 모순된 내용이 되지 않는 구조가 되고 있다.

주요 기능

공유 설정 기능

구성 파일을 ZooKeeper 서버에 저장하고 각 인스턴스가 ZooKeeper에 저장된 구성 파일을 검색하면 각 인스턴스의 구성 파일이 동일한지 확인할 수 있다.

분산 잠금 기능

여러 인스턴스가 동시에 공유 리소스를 다시 쓰지 못하게 하는 잠금 기능이 있다.

멤버 획득 기능

분산 시스템의 각 인스턴스가 ZooKeeper의 임시 노드를 등록하면 분산 시스템 내에서 사용 가능한 인스턴스 목록을 얻을 수 있다. 각 클라이언트는 활성 상태의 서버에 연결할 수 있다.

시계 기능

특정 프로세스가 특정 ZooKeeper 노드를 관찰하는 경우 해당 ZooKeeper 노드에 변경 사항이 있으면 프로세스에 변경 사항을 알린다. 설정 파일의 재로드 트리거 등에 이용할 수 있다.

도입 사례

분산 키 밸류 데이터베이스 “HBase”, 검색 엔진 “SolrCloud”, 분산 실시간 스트리밍 처리 엔진 “Jubatus” 등에 도입되었다.
주요 적용 분야로는 “디렉터리 서비스”, “구성 관리 서비스”, “동기 서비스”, “리더 선출 서비스”, “메시지 큐 서비스”, “「엔터프라이즈 검색 시스템” 등이 있다.

라이센스 정보

Apache ZooKeeper의 라이센스는 “Apache License 2.0"이다. 이 라이선스에 따라 소스 코드를 수정하고 게시할 수 있다.

다운로드




최종 수정 : 2022-12-24