Zookeeper介紹 Zookeeper 分布式服務框架是用來解決分布式應用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等。本文主要從使用者角度來介紹一下Zookeeper的安裝,配置及應用。
單機模式
Zookeeper可以單機安裝,這種應用模式主要用在測試或demo的情況下,在生產環境下一般不會采用。
1. 首先可以從Zookeeper的官方網站下載最新的安裝包http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
2. 解壓zookeeper到指定目錄下,這里假定為/opt/zookeeper
3. 進入zookeeper目錄下的conf目錄,復制zoo_sample.cfg為zoo.cfg,並將內容修改如下
tickTime=2000 dataDir=/opt/zookeeper-3.4.6/data clientPort=2181
tickTime:Zookeeper 服務器之間或客戶端與服務器之間心跳的時間間隔。
dataDir:Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日志文件也保存在這個目錄里。
clientPort:Zookeeper 服務器監聽端口,用來接受客戶端的訪問請求。
4. 配置完以后,就可以啟動zookeeper服務了,進入Zookeeper/bin目錄,運行下面的命令來啟動Zookeeper服務
$ ./zkServer.sh start JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
啟動后可以使用下面的命令查看服務狀態
$ ./zkServer.sh status JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Mode: standalone
5. 在Zookeeper服務器啟動以后,就可以使用Zookeeper的客戶端來連接並測試了。
$ ./zkCli.sh
或
$ ./zkCli.sh -server 127.0.0.1:2181
連接之后可以時候help來查看有哪些命令可以使用
[zk: 127.0.0.1:2181(CONNECTED) 0] ls / #查看根節點 [zookeeper] [zk: 127.0.0.1:2181(CONNECTED) 1] create /mykey1 myvalue1 #創建一個新節點mykey1 Created /mykey1 [zk: 127.0.0.1:2181(CONNECTED) 2] create /mykey2 myvalue2 #創建一個新節點mykey2 Created /mykey2 [zk: 127.0.0.1:2181(CONNECTED) 13] ls / #查看根節點 [mykey1, mykey2, zookeeper] [zk: 127.0.0.1:2181(CONNECTED) 23] get /mykey1 #獲取mykey1節點 myvalue1 cZxid = 0x6 ctime = Sat Sep 20 21:00:17 CST 2014 mZxid = 0x8 mtime = Sat Sep 20 21:01:06 CST 2014 pZxid = 0x6 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 [zk: 127.0.0.1:2181(CONNECTED) 23] get /mykey2 #獲取mykey2節點 myvalue2 cZxid = 0x6 ctime = Sat Sep 20 21:00:17 CST 2014 mZxid = 0x8 mtime = Sat Sep 20 21:01:06 CST 2014 pZxid = 0x6 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 [zk: 127.0.0.1:2181(CONNECTED) 24] set /mykey1 myvalue11 #設置mykey1節點的值 [zk: 127.0.0.1:2181(CONNECTED) 25] set /mykey2 myvalue22 #設置mykey2節點的值 [zk: 127.0.0.1:2181(CONNECTED) 26] set /mykey1 #刪除mykey1節點 [zk: 127.0.0.1:2181(CONNECTED) 27] set /mykey2 #刪除mykey2節點