Zookeeper 설치 및 클러스터 구성 가이드

개요

Zookeeper는 분산 시스템에서 노드 간의 동기화와 협력을 지원하는 중간 소프트웨어입니다. 파일 시스템과 유사한 트리 구조를 사용하며, 변경 사항을 클라이언트에게 실시간으로 알리는 기능도 제공합니다.

  • 공식 사이트: https://zookeeper.apache.org/
  • 구성 요소: 하나의 리더(Leader)와 여러 팔로워(Follower)로 구성된 클러스터입니다. 절반 이상의 노드가 살아 있어야 정상 작동하며, 보통 홀수 개의 서버를 권장합니다.
  • 데이터 일관성: 모든 서버는 동일한 데이터 복사를 유지하며, 클라이언트가 어느 서버에 연결되더라도 동일한 데이터를 받습니다.
  • 실시간 처리: 한 클라이언트가 데이터를 업데이트하면 다른 클라이언트들도 빠르게 최신 데이터를 받습니다.
// 홀수 대비 설명
// 예를 들어 5명이 회의를 하면 3명 이상이 동의하면 결정이 가능하다.
// 하지만 4명인 경우 2명이 반대하면 결정이 나지 않으므로 홀수를 추천합니다.

설치

Linux 환경

다음은 Linux 환경에서 Zookeeper를 설치하는 과정입니다.

// 압축 해제
mkdir /opt/module/
tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz -C /opt/module/
cd /opt/module/

// 디렉토리 이름 변경
mv apache-zookeeper-3.9.1-bin zookeeper-3.9.1

// 데이터 디렉토리 생성
cd zookeeper-3.9.1
mkdir zkData

// 설정 파일 수정
cp conf/zoo_sample.cfg conf/zoo.cfg
sed -i 's/^dataDir=.*/dataDir=\/opt\/module\/zookeeper-3.9.1\/zkData/' conf/zoo.cfg

// 서비스 시작 및 상태 확인
cd /opt/module/zookeeper-3.9.1/bin
sh zkServer.sh start
sh zkServer.sh status

// 포트 확인
jps -l | grep QuorumPeerMain
netstat -anlp | grep $(jps -l | grep QuorumPeerMain | awk '{print $1}') | grep tcp

주요 설정 파라미터

아래는 Zookeeper의 주요 설정값들입니다.

  • tickTime: 기본값 2000ms. 클라이언트와 서버 간 심박 신호 시간 간격.
  • initLimit: 기본값 10. 리더와 팔로워의 초기 연결 허용 시간.
  • syncLimit: 기본값 5. 리더와 팔로워 간 데이터 동기화 시간 제한.
  • dataDir: 데이터 저장 경로.
  • clientPort: 클라이언트 접속 포트 (기본값 2181).

클러스터 구성

다음은 Zookeeper 클러스터를 구성하기 위한 예시 설정입니다.

# 심박 시간 설정
tickTime=2000
# 초기 동기화 시간 제한
initLimit=10
# 데이터 동기화 시간 제한
syncLimit=5
# 데이터 저장 디렉토리
dataDir=/opt/module/zookeeper-3.9.1/zkData
# 클라이언트 접속 포트
clientPort=2181

# 클러스터 구성
server.1=192.168.19.1:2888:3888
server.2=192.168.19.2:2888:3888
server.3=192.168.19.3:2888:3888

각 서버의 myid 파일을 다음과 같이 작성해야 합니다.

// 각 노드에서 실행
echo "1" > /opt/module/zookeeper-3.9.1/zkData/myid   # 첫 번째 서버
echo "2" > /opt/module/zookeeper-3.9.1/zkData/myid   # 두 번째 서버
echo "3" > /opt/module/zookeeper-3.9.1/zkData/myid   # 세 번째 서버

클러스터 시작

모든 노드에서 아래 명령어를 실행하여 서비스를 시작합니다.

sh zkServer.sh start

태그: ZooKeeper distributed-systems cluster-configuration

7월 12일 04:23에 게시됨