Zookeeper설치

분산시스템 2014. 1. 7. 23:57

ZooKeeper는 분산 코디네이터 기능, 설정정보, 네이밍, 분산동기화, 그룹관리 기능을 제공한다.

자세한 내용은 다음 글에서 쓰도록 하고, 일단 설치를 하여 보도록 하자.


Zookeeper Download : http://www.apache.org/dyn/closer.cgi/zookeeper/

Zookeeper 문서: http://zookeeper.apache.org/doc/current/

Zookeeper 설치 및 가이드 : http://zookeeper.apache.org/doc/current/zookeeperStarted.html


요구사항: JDK 6이상이 설치 

# wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz

# tar zxvf zookeeper-3.4.5.tar.gz

# cp -Rf zookeeper-3.3.5 /usr/local/zookeeper

# cd /usr/local/zookeeper


* 설정파일 복사하기 : conf/zoo_sample.cfg를 conf/zoo.cfg로 복사

# cp conf/zoo_sample.cfg conf/zoo.cfg


* zoo.cfg 파일 수정 : 특히 dataDir를 자신이 사용할 것으로 수정한다.

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/zookeeper/data
# the port at which the clients will connect
clientPort=2181

* 단일 서버 설정은 완료

* 서버 구동

# bin/zkServer.sh start
* Zookeeper 접속하기 :

# bin/zkCli.sh -server 127.0.0.1:2181

Connecting to localhost:2181 log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper). log4j:WARN Please initialize the log4j system properly. Welcome to ZooKeeper! JLine support is enabled [zkshell: 0]

[zkshell: 0] help ZooKeeper host:port cmd args get path [watch] ls path [watch] set path data [version] delquota [-n|-b] path quit printwatches on|off createpath data acl stat path [watch] listquota path history setAcl path acl getAcl path sync path redo cmdno addauth scheme auth delete path [version] setquota -n|-b val path

* 노드를 만들고, 값을 가져오고, 설정하고 삭제하는 예.

[zkshell: 9] create /zk_test my_data
Created /zk_test

[zk: 127.0.0.1:2181(CONNECTED) 3] ls /

[zookeeper, zk_test]

[zk: 127.0.0.1:2181(CONNECTED) 4] get /zk_test

my_data

[zk: 127.0.0.1:2181(CONNECTED) 5] set /zk_test  junk

[zk: 127.0.0.1:2181(CONNECTED) 6] get /zk_test

junk

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

[zk: 127.0.0.1:2181(CONNECTED) 8] ls /

[zookeeper]


* 복제된 Zookeeper 서버 실행을 위해선 zoo.cfg 정보 설정

tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

* zoo1, zoo2, zoo3는 서버명, 그러므로 192.168.0.1, 192.168.0.2, 192.168.0.3등으로 대체 가능

2888는 각 피어별로 통신을 위한 port, 3888은 leader 선출을 위한 port

zoo1, zoo2, zoo3 각 서버의 dataDir(예를 들자면, /data/zookeeper/data)에서

/data/zookeeper/data/myid 파일에 server.1 server.2 server.3 의 1, 2, 3을 기록한다.

zoo1# cat > /data/zookeper/data/myid

1

zoo2# cat > /data/zookeper/data/myid

2

zoo3# cat > /data/zookeper/data/myid

3


1,2,3이 중요한 것이 아니라 아니라 server.1과 같이 숫자든 문자든 server.X와 myid의 X를 일치 시켜야 한다.




Posted by 눈사람
,