티스토리 뷰

Coordinating Distributed Applications with ZooKeeper.


zookeeper란 분산어플리케이션을 구성하기위해 동일하게 분산처리를 담당하는 서비스 이다.

zookeeper가 처음나왔을때 사육사? 왜 사육사일까 라는 생각을 했었다. 생각해보니 Apache재단의 분산처리 오픈소스들이 대

분 동물 ( Hadoop, hive, pig 등등 )이기때문이어서 그런게 아닌가 했는데 이생각이 맞다고 한다.

zookeeper 설계목표는 아래의 그림과 같다.

[ 그림 1 ] zookeeper design goals

zookeeper는 표준파일시스템과 유사한 형태로 (tree 구조) node가 구성되어있으며 나눠진 계층 namespace를 통해 동등하게 coordination
한다.

[ 그림2 ] zookeeper node 구조



그래서 분산클러스터를 구성하기 위한 설치 및 간단한 성능 점검을 해보기로 한다.


테스트 환경

OS : Ubuntu 12.04 


step1. zookeeper installation

$ sudo apt-get install zookeeper


step2. zookeeper server & client start

$ cd /usr/share/zookeeper/bin
$ sudo ./zkServer.sh start
$ sudo ./zkCli.sh -server 127.0.0.1:2181


step3. zookeeper znode생성

[zk: 127.0.0.1:2181(CONNECTED) 0] ls /
[zookeeper]

[zk: 127.0.0.1:2181(CONNECTED) 1] create /zk_test my_data
Created /zk_test

[zk: 127.0.0.1:2181(CONNECTED) 2] ls /
[zookeeper, zk_test]


step4. znode 관련데이터 확인

get명령을 통해 zk_test의 znode 관련데이터를 확인한다.

[zk: 127.0.0.1:2181(CONNECTED) 3] get /zk_test
my_data
cZxid = 0xc
ctime = Tue Jul 09 00:56:16 KST 2013
mZxid = 0xc
mtime = Tue Jul 09 00:56:16 KST 2013
pZxid = 0xc
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0


step5. zk_test 데이터 변경

set명령을 이용하여 zk_test데이터를 변경한다.

[zk: 127.0.0.1:2181(CONNECTED) 4] set /zk_test junk
cZxid = 0xc
ctime = Tue Jul 09 00:56:16 KST 2013
mZxid = 0xd
mtime = Tue Jul 09 01:01:21 KST 2013
pZxid = 0xc
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

[zk: 127.0.0.1:2181(CONNECTED) 5] get /zk_test
junk
cZxid = 0xc
ctime = Tue Jul 09 00:56:16 KST 2013
mZxid = 0xd
mtime = Tue Jul 09 01:01:21 KST 2013
pZxid = 0xc
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0



step6. zk_test node 삭제

[zk: 127.0.0.1:2181(CONNECTED) 6] delete /zk_test
[zk: 127.0.0.1:2181(CONNECTED) 7] ls /
[zookeeper]


다음시간에는 실전으로 들어가 직접 redis failover를 구현해 보도록 하겠습니다.

.by rocksea


댓글