HomeBlogGuestbookLab 

JDM's Blog

온갖 테스트 결과가 기록되는 이곳은 JDM's Blog입니다. :3

주키퍼 클러스터 설치(Zookeeper Cluster on Multi Node)

기존에도 주키퍼 클러스터 설정에 대해 간간히 포스팅한 것이 있었습니다. 이번 포스트는 주키퍼 클러스터만 뽑아서 설명드립니다.

What is Apache Zookeeper?

주키퍼에 대한 자세한 내용은 아파치 주키퍼(Apache Zookeeper)를 참조해주세요.

Setup Zookeeper Cluster

이제 본격적으로 주키퍼 클러스터Zookeeper Cluster를 구축해 봅시다.

Architecture

주키퍼 클러스터 구축을 위해 아래와 같은 구성도를 그려봤습니다.

┏━━━━━━━━┓┏━━━━━━━━┓┏━━━━━━━━┓
┃zoo-1.jdm.kr    ┃┃zoo-2.jdm.kr    ┃┃zoo-3.jdm.kr    ┃ * 해당 라인에 있는 것은 Host 이름!
┃┏━━━━━━┓┃┃┏━━━━━━┓┃┃┏━━━━━━┓┃
┃┃Zookeeper   ┃┃┃┃Zookeeper   ┃┃┃┃Zookeeper   ┃┃
┃┗━━━━━━┛┃┃┗━━━━━━┛┃┃┗━━━━━━┛┃
┗━━━━━━━━┛┗━━━━━━━━┛┗━━━━━━━━┛

3대의 호스트에 각각 주키퍼 서버를 하나씩 올릴 예정입니다. 호스트 정보는 위와 같은 zoo-1.jdm.kr, zoo-2.jdm.kr, zoo-3.jdm.kr입니다.

Preparations

클러스터 구축을 위해서 몇가지 사전 준비 사항이 필요합니다. 그리고 이부분에 해당하는 내용은 모든 호스트가 동일하도록 진행해주세요.

Install Java JDK

CentOS라면 아래와 같은 커맨드로 자바 JDK를 설치할 수 있습니다. 이미 설치 되어 있다면 이 단계는 무시하셔도 됩니다.

$ sudo yum install java

Download Apache Zookeeper

주키퍼 서버 패키지를 다운로드 받고 환경 설정을 해봅시다. 아래의 커맨드를 순서대로 실행해서 주키퍼를 다운로드한 뒤 압축을 해제하고 환경설정 파일을 편집할 준비를 합니다.

$ wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
$ tar -xzf zookeeper-3.4.6.tar.gz
$ ln -s zookeeper-3.4.6 zookeeper
$ cd zookeeper/conf/
$ vi zoo.cfg

이후 zoo.cfg 파일에 다음과 같은 환경 설정을 해줍니다.

# zoo.cfg
tickTime=2000
dataDir=/home/test/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo-1.jdm.kr:2888:3888
server.2=zoo-2.jdm.kr:2888:3888
server.3=zoo-3.jdm.kr:2888:3888

반드시 myid 파일을 dataDir 속성에 넣었던 위치에 만들어야 합니다. 호스트마다 아이디를 넣으세요. 위의 구성이라면 1번 호스트zoo-1.jdm.kr에는 {dataDir}/myid 내부에 1이라는 값이 있어야 합니다. 그리고 이 값은 유일해야 하고 1~255 사이로 넣어주세요.

Start Apache Zookeeper

{zookeeper}/bin 디렉토리에서 다음과 같은 커맨드로 구동합니다. 호스트별로 전부 띄워주세요.

$ ./zkServer.sh start

Check Apache Zookeeper

주키퍼가 잘 떠 있다면 다음와 같은 스크립트 실행을 통해 주키퍼에 대한 내용을 점검하거나 확인 할 수 있습니다.

$ ./zkCli.sh zoo-1.jdm.kr:2181

Tip

주키퍼는 일정 간격으로 스냅샷snapshot을 떠서 파일로 만듭니다. 해당 파일들이 쌓이면 불필요한 디스크 공간을 차지하기 때문에 주기적으로 지워줘야 합니다. 이를 위해 주키퍼에서는 자체적으로 zkCleanup.sh라는 스크립트를 제공하고 있으니 참고하시면 됩니다.