일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- apache storm
- Angular2
- design pattern
- hadoop
- Spring
- 스프링 배치
- spark
- Hbase
- 엘라스틱서치
- SBT
- scala
- Linux
- Gradle
- hibernate
- DDD
- elasticsearch
- Clean Code
- 제주
- Java
- nginx
- 도메인주도설계
- hdfs
- intellij
- Storm
- Spring Batch
- docker
- Spring Boot
- Domain Driven Design
- Spring XD
- elastic search
- Today
- Total
욱'S 노트
ZooKeeper - 시작하기 본문
이제 ZooKeeper에 대해서 알아보자. 아무것도 모르고 ZooKeeper를 도입해야 하는 상황이 생겼다. 빨리 Getting Started를 마스터 해야한다.
다운로드
아래의 주키퍼 공식 사이트로 접근을 해서 최신 릴리이즈를 다운로드 하자. 설치를 진행할 버젼은 3.4.6이다.
http://zookeeper.apache.org/
Apache 미러 사이트에서 다운로드를 받을 수 있었고, 파일명이 zookeeper-3.4.6.tar.gz 이며, 용량은 16.9mb이다.
StandAlone
역시 시작은 stand alone으로 해야겠지? 주키퍼 서버는 하나의 JAR 파일을 포함한다.. 그래서 설치는 설정을 포함한다. 일단 압축을 적당한 위치에 풀자.
toddsonui-MacBook-Pro:zookeeper-3.4.6 devsun$ ls -al
total 3040
drwxr-xr-x 22 devsun staff 748 2 20 2014 .
drwxr-xr-x 16 devsun staff 544 3 12 16:36 ..
-rw-r--r-- 1 devsun staff 80776 2 20 2014 CHANGES.txt
-rw-r--r-- 1 devsun staff 11358 2 20 2014 LICENSE.txt
-rw-r--r-- 1 devsun staff 170 2 20 2014 NOTICE.txt
-rw-r--r-- 1 devsun staff 1585 2 20 2014 README.txt
-rw-r--r-- 1 devsun staff 1770 2 20 2014 README_packaging.txt
drwxr-xr-x 10 devsun staff 340 2 20 2014 bin
-rw-r--r-- 1 devsun staff 82446 2 20 2014 build.xml
drwxr-xr-x 5 devsun staff 170 2 20 2014 conf
drwxr-xr-x 10 devsun staff 340 2 20 2014 contrib
drwxr-xr-x 22 devsun staff 748 2 20 2014 dist-maven
drwxr-xr-x 49 devsun staff 1666 2 20 2014 docs
-rw-r--r-- 1 devsun staff 3375 2 20 2014 ivy.xml
-rw-r--r-- 1 devsun staff 1953 2 20 2014 ivysettings.xml
drwxr-xr-x 11 devsun staff 374 2 20 2014 lib
drwxr-xr-x 5 devsun staff 170 2 20 2014 recipes
drwxr-xr-x 11 devsun staff 374 2 20 2014 src
-rw-r--r-- 1 devsun staff 1340305 2 20 2014 zookeeper-3.4.6.jar
-rw-r--r-- 1 devsun staff 836 2 20 2014 zookeeper-3.4.6.jar.asc
-rw-r--r-- 1 devsun staff 33 2 20 2014 zookeeper-3.4.6.jar.md5
-rw-r--r-- 1 devsun staff 41 2 20 2014 zookeeper-3.4.6.jar.sha1
압축을 푼 모습이다. 하나의 jar를 포함한다는 말은 머지? 좀 헷갈린다. 오역인가?
주키퍼를 시작하기 위해서는 설정 파일이 필요하다고 한다. conf/zoo.cfg를 만드는데 일단 아래의 내용으로 만들어보자.
tickTime=2000
dataDir=/tmp/zookeeper
clientPort=2181
이 파일은 머라고 불려도 상관없다. 하지만 그냥 conf/zoo.cfg라고 부르자. dataDir은 존재하는 디렉토리로 명시하자.
tickTime - 주키퍼에서 사용하는 기본 시간 단위 밀리세컨드. heartbeat를 위해 사용되면 최소 세션 타임아웃은 tickTime의 두배이다.
dataDir - in-memory 데이터베이스의 스냅샷을 저장할 위치. 데이터베이스의 갱신 로그이다.
clientPort - 클라이언트 연결을 위한 사용되는 listen 포트
설정 파일을 생성하였으면 주키퍼를 시작할 수 있다.
toddsonui-MacBook-Pro:bin devsun$ ./zkServer.sh start
JMX enabled by default
Using config: /Users/devsun/dev/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
로그가 완전 심플하다. 주키퍼는 내부적으로 로깅을 위해 log4j를 사용한다. standalone모드에서는 replication이 없다. 더 좋은 개발 환경을 위해서는 repicated mode로 실행해야 하는데 그건 나중에 알아보자. 운영에서는 ZooKeeper 스토리지는 외부에서 관리되어야만 한다. 이에 대한 자세한 내용도 다음에 살펴보기로 한다.
이제 주키퍼로 연결을 수행해보자.
toddsonui-MacBook-Pro:bin devsun$ ./zkCli.sh -server 127.0.0.1:2181
Connecting to 127.0.0.1:2181
2015-03-12 17:05:39,565 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
2015-03-12 17:05:39,569 [myid:] - INFO [main:Environment@100] - Client environment:host.name=172.27.70.136
2015-03-12 17:05:39,570 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_25
2015-03-12 17:05:39,571 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/Users/devsun/dev/zookeeper-3.4.6/bin/../build/classes:/Users/devsun/dev/zookeeper-3.4.6/bin/../build/lib/*.jar:/Users/devsun/dev/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/Users/devsun/dev/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/Users/devsun/dev/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/Users/devsun/dev/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/Users/devsun/dev/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/Users/devsun/dev/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/Users/devsun/dev/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/Users/devsun/dev/zookeeper-3.4.6/bin/../conf:
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/Users/devsun/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/var/folders/9r/9zffgr317j1cv6d8j_gr52n80000gn/T/
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Mac OS X
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=x86_64
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:os.version=10.10.2
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:user.name=devsun
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/Users/devsun
2015-03-12 17:05:39,572 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/Users/devsun/dev/zookeeper-3.4.6/bin
2015-03-12 17:05:39,573 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@69663380
Welcome to ZooKeeper!
2015-03-12 17:05:39,596 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@975] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
[zk: 127.0.0.1:2181(CONNECTING) 0] 2015-03-12 17:05:39,649 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@852] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
2015-03-12 17:05:39,702 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x14c0cfb83340000, negotiated timeout = 30000
WATCHER::
접속을 잘되었는지 확인하기 위해 help 명령을 수행해보자. 먼가 나온다.
[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
CLI 상에서 ls 명령을 수행해보자.
[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper]
다음은 znode를 생성해보자. 새로운 znode를 생성하고 string "my_data"와 해당 노드를 연관짓는 것이다.
[zk: 127.0.0.1:2181(CONNECTED) 4] create /zk_test my_data
Created /zk_test
[zk: 127.0.0.1:2181(CONNECTED) 5] ls /
[zookeeper, zk_test]
다음은 get 명령을 통해 znode와 연관된 데이터를 확인해보자.
[zk: 127.0.0.1:2181(CONNECTED) 6] get /zk_test
my_data
cZxid = 0x2
ctime = Thu Mar 12 17:13:32 KST 2015
mZxid = 0x2
mtime = Thu Mar 12 17:13:32 KST 2015
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
set 명령을 통해 zk_test 노드에 연관된 데이터를 변경할 수 있다.
[zk: 127.0.0.1:2181(CONNECTED) 8] set /zk_test junk
cZxid = 0x2
ctime = Thu Mar 12 17:13:32 KST 2015
mZxid = 0x5
mtime = Thu Mar 12 17:18:41 KST 2015
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 9] get /zk_test junk
junk
cZxid = 0x2
ctime = Thu Mar 12 17:13:32 KST 2015
mZxid = 0x5
mtime = Thu Mar 12 17:18:41 KST 2015
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
마지막으로 delete 명령으로 노드를 삭제해보자.
[zk: 127.0.0.1:2181(CONNECTED) 10] delete /zk_test
WATCHER::
WatchedEvent state:SyncConnected type:NodeDeleted path:/zk_test
'Programming > ZooKeeper' 카테고리의 다른 글
ZooKeeper - 개요 (0) | 2015.03.12 |
---|