ZooKeeper安裝
- 首先保證已安裝Java運行環境
- 下載ZooKeeper安裝包,可以去ZooKpper官網下載最新的Stable版本,並解壓到指定目錄
- 配置zoo.cfg 解壓成功後,在conf文件夾下複製一份新的zoo_sample.cfg並重新命名爲zoo.cfg
具體操作流程如下
# cd /opt //安裝到opt目錄下
# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz //使用wget指令下載zk
# tar -xzvf zookeeper-3.4.8.tar.gz //解壓
# mv zookeeper-3.4.8 zookeeper //重命名安裝包
# cd zookeeper/ // 進入安裝包
# cd conf/ //進入conf目錄下
# mv zoo_sample.cfg zoo.cfg //拷貝一份新的zoo-sample.cfg並命名爲zoo.cfg
這樣,整個Zookeeper的安裝就完成了,下面看一下相關指令,學些如何啓動,停止ZooKeeper的相關指令
zoo.cfg配置信息詳解
# The number of milliseconds of each tick
tickTime=2000 ##ZooKeeper的最小時間單元,單位毫秒(ms),默認值爲3000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10 ##Leader服務器等待Follower啓動並完成數據同步的時間,默認值10,表示tickTime的10倍
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5 ##Leader服務器和Follower之間進行心跳檢測的最大延時時間,默認值5,表示tickTime的5倍
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper ##ZooKeeper服務器存儲快照文件的目錄,必須配值,建議放置在var目錄下
# the port at which the clients will connect
clientPort=2181 ## 服務器對外服務端口,默認值爲2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
ZooKeeper服務端指令
啓動ZK服務
進入bin目錄下,執行sh zkServer.sh start
如下如所示:
[root@localhost bin]# sh zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
停止ZK服務
[root@localhost bin]# sh zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
查看ZK服務狀態
[root@localhost bin]# sh zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: standalone
常用四字命令
命令 | 功能描述 |
---|---|
conf | 輸出相關服務配置的詳細信息 |
cons | 列出所有連接到服務器的客戶端的完全的連接/會話的詳細信息.包括“接受/發送”的包數量,會話,id,操作延遲,最後的操作執行等等信息 |
dump | 列出未經處理的會話和臨時節點. |
envi | 輸出關於服務環境的詳細信息 |
reqs | 列出未經處理的請求 |
ruok | 測試服務是否處於正確狀態.如果確實如此,那麼服務返回”imok”,否則不做任何響應 |
stat | 輸出關於性能和連接的客戶端的列表 |
wchs | 列出服務器watch的詳細信息 |
wchc | 通過session列出服務器watch的詳細信息,它的輸出是一個與watch相關的會話的列表 |
wchp | 通過路徑列出服務器watch的詳細信息.它輸出一個與session相關的路徑 |
下面給出幾個例子:
ruok
測試服務是否處於正確狀態.如果確實如此,那麼服務返回” imok”,否則不做任何相應.
[root@localhost bin]# echo ruok|nc 127.0.0.1 2181
imok
回覆imok表示已經啓動
conf
輸出相關服務配置的詳細信息
[root@localhost bin]# echo conf|nc 127.0.0.1 2181
clientPort=2181
dataDir=/tmp/zookeeper/version-2
dataLogDir=/tmp/zookeeper/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0
ZooKeeper客戶端命令
連接到服務端
指令格式: sh zkCli.sh -server host:port
ZooKeeper客戶端命令行zkCli.sh(zkCli.cmd)類似於shell,.當ZooKeeper服務成功之後,輸入下面的命令,連接到ZooKeeper服務:
[root@localhost bin]# sh zkCli.sh -server 127.0.0.1:2181
Connecting to 127.0.0.1:2181
2016-08-08 21:20:23,954 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.8--1, built on 02/06/2016 03:18 GMT
2016-08-08 21:20:23,957 [myid:] - INFO [main:Environment@100] - Client environment:host.name=localhost
2016-08-08 21:20:23,957 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_65
2016-08-08 21:20:23,960 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2016-08-08 21:20:23,960 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre
2016-08-08 21:20:23,960 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/opt/zookeeper/bin/../build/classes:/opt/zookeeper/bin/../build/lib/*.jar:/opt/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/opt/zookeeper/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper/bin/../lib/jline-0.9.94.jar:/opt/zookeeper/bin/../zookeeper-3.4.8.jar:/opt/zookeeper/bin/../src/java/lib/*.jar:/opt/zookeeper/bin/../conf:
2016-08-08 21:20:23,960 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2016-08-08 21:20:23,960 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2016-08-08 21:20:23,960 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2016-08-08 21:20:23,961 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2016-08-08 21:20:23,961 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2016-08-08 21:20:23,961 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-327.el7.x86_64
2016-08-08 21:20:23,961 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2016-08-08 21:20:23,961 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2016-08-08 21:20:23,961 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/opt/zookeeper/bin
2016-08-08 21:20:23,963 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@7aec35a
2016-08-08 21:20:24,024 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2016-08-08 21:20:24,268 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@876] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
2016-08-08 21:20:24,357 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x1565613f3390000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
查看幫助信息
在連接到服務端後,輸入help可以查看具體的幫助信息
[zk: localhost: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
創建節點
使用create指令創建一個znode以及與他關聯的字符串
[zk: localhost:2181(CONNECTED) 2] create /node1 value1
Created /node1
[zk: localhost:2181(CONNECTED) 3] create /node2 value2
Created /node2
查看節點列表
使用ls指令查看當前ZK中所包含的內容
[zk: localhost:2181(CONNECTED) 4] ls /
[node2, zookeeper, node1]
查看節點信息
使用get指令來確認znode是否包含我們所創建的字符串
[zk: localhost:2181(CONNECTED) 4] get /node1
value1
cZxid = 0x6
ctime = Mon Aug 08 21:32:35 CST 2016
mZxid = 0x6
mtime = Mon Aug 08 21:32:35 CST 2016
pZxid = 0x6
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: localhost:2181(CONNECTED) 5] get node3
Command failed: java.lang.IllegalArgumentException: Path must start with / characte
爲節點設置新值
使用set指令對znode所關聯的字符串進行設置
node2 node1
[zk: localhost:2181(CONNECTED) 6] set /node2 value3
cZxid = 0x7
ctime = Mon Aug 08 21:33:11 CST 2016
mZxid = 0x8
mtime = Mon Aug 08 21:36:38 CST 2016
pZxid = 0x7
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: localhost:2181(CONNECTED) 7] get /node2
value3
cZxid = 0x7
ctime = Mon Aug 08 21:33:11 CST 2016
mZxid = 0x8
mtime = Mon Aug 08 21:36:38 CST 2016
pZxid = 0x7
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
刪除節點
使用delete指令刪除znode
[zk: localhost:2181(CONNECTED) 5] delete /node2
[zk: localhost:2181(CONNECTED) 7] ls /
[zookeeper, node1]
其他指令在具體使用實例時再做介紹
參考:http://blog.csdn.net/shenlan211314/article/details/6187029
http://blog.csdn.net/xiaolang85/article/details/13021339
http://blog.csdn.net/ganglia/article/details/11606807