주키퍼 설치 및 설정

주키퍼를 설치 해보자. 다운로드 여기서 다운 받으면 되겠다

압축을 풀고 원하는 디렉토리에 넣어두자. 필자는 /usr/local/에 넣어 두었다.
${home}/conf/zoo.cfg 파일이 주키퍼 설정 파일이다.

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper1
clientPort=2184

설정을 저장하자.
서버를 실행시켜보자!

./bin/zkServer.sh start

JMX enabled by default
Using config: /usr/local/zookeeper1/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

주키퍼 클라이언트를 이용해서 접속해보자!

./bin/zkCli.sh -server localhost:2184

접속이 완료되었다.
간단하게 노드를 만들어보자.

[zk: localhost:2184(CONNECTED) 0] create /zoo_test my_data
Created /zoo_test

만들어진 노드를 확인해보자

[zk: localhost:2184(CONNECTED) 1] ls /
[zoo_test, zookeeper]

잘 만들어져 있다.
정보도 한번 보자.

[zk: localhost:2184(CONNECTED) 2] get /zoo_test
my_data
cZxid = 0x500000007
ctime = Wed Mar 02 08:37:55 UTC 2016
mZxid = 0x500000007
mtime = Wed Mar 02 08:37:55 UTC 2016
pZxid = 0x500000007
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0

다음은 replication 설정을 해보자
세개의 주키퍼가 필요하므로 세개를 복사하자.
필자는 이렇게 했다.
/usr/local/zookeeper1
/usr/local/zookeeper2
/usr/local/zookeeper3
그리고 설정을 바꿔줘야한다.
다시 zoo.cfg 파일을 열어서 아래와 같이 바꾸자.

/usr/local/zookeeper1

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper1
clientPort=2184
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

/usr/local/zookeeper2

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper2
clientPort=2185
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

/usr/local/zookeeper3

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper3
clientPort=2186
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

아래의 세줄이 추가 되었고 디렉토리가 변경되었다.
3개의 주키퍼 모두 바꾸자! 디렉토리는 각기 다르게! 물리적으로 서버가 같다면 포트를 나눠줘야한다.
2888 포트는 각각의 통신하기 위한 포트 3888은 마스터를 선출하기 위한 노드라 한다.
server.1,server.2,server.3 의 숫자는 /var/zookeeper1/myid의 값과 동일해야된다.

cat /var/zookeeper1/myid
1
cat /var/zookeeper2/myid
2
cat /var/zookeeper3/myid
3

세개의 노드를 실행해야된다.
귀찮다.
스크립트로 대충 만들었다

#!/bin/bash

param=$1

ZOO1_HOME="/usr/local/zookeeper1/"
ZOO2_HOME="/usr/local/zookeeper2/"
ZOO3_HOME="/usr/local/zookeeper3/"

case $param in
  start)
    $ZOO1_HOME/bin/zkServer.sh start
    $ZOO2_HOME/bin/zkServer.sh start
    $ZOO3_HOME/bin/zkServer.sh start

    ;;
  stop)
    $ZOO1_HOME/bin/zkServer.sh stop
    $ZOO2_HOME/bin/zkServer.sh stop
    $ZOO3_HOME/bin/zkServer.sh stop
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
   echo  "Usage: $0 {start|stop|restart}"
esac

이제 실행해보자!
잘된다!
다시 접속해보자!

./bin/zkCli.sh -server localhost:2184

그리도 노드를 한개더 생성해보자

[zk: localhost:2184(CONNECTED) 0] create /test test
Created /test
[zk: localhost:2184(CONNECTED) 0] ls /

test가 있는 걸 확인 후 빠져나오자 quit

./bin/zkCli.sh -server localhost:2185

이번엔 2185로 접속해보자

[zk: localhost:2185(CONNECTED) 0] ㅣls /

test가 있는걸 확인 할 수 있다.

2186 포트는 마찬가지로 추가 되어있을 것이다.

별도로 주키퍼 관리할 수 있는 관리자 화면을 누군가가 만들었다.
클로저로 만들었으니 클로저를 설치하자!
주키퍼웹UI