進入zooKeeper官網:http://zookeeper.apache.org/,找到你想下載的版本,我這裏下載的是 zookeeper 3.5.4 版本。apache
/Users/shifeifei/Software/zk-3.5.4
這是個人目錄。vim
執行解壓命令:bash
tar -zxvf zookeeper-3.5.4.tar.gz
獲得目錄 , zookeeper-3.5.4-beta,可觀察到zookeeper的目錄結構及內容:
spa
vim ~/.bash_profile export ZK_HOME=/Users/shifeifei/Software/zk-3.5.4/zookeeper-3.5.4-beta-1 export PATH=$ZK_HOME/bin:$PATH source ~/.bash_profile
進入到目錄code
/Users/shifeifei/Software/zk-3.5.4/zookeeper-3.5.4-beta-1/conf
修改文件 zoo_sample.cfg 文件內容,並從新命名爲 zoo.cfgserver
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-1 dataLogDir=/Users/shifeifei/Software/zk-3.5.4/zk-log/ clientPort=2181 #maxClientCnxns=60 #autopurge.snapRetainCount=3 #autopurge.purgeInterval=1 server.1=127.0.0.1:2888:3888
其中 dataDir 和 dataLogDir 目錄是你自定義指定的。ip
文件內容是:server.1=127.0.0.1:2888:3888 中的 server.1 的 1get
進入目錄it
/Users/shifeifei/Software/zk-3.5.4/zookeeper-3.5.4-beta-1/bin
執行命令:
./zkServer.sh startclass
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-1 #dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-2 #dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-3 dataLogDir=/Users/shifeifei/Software/zk-3.5.4/zk-log/ clientPort=2181 #maxClientCnxns=60 #autopurge.snapRetainCount=3 #autopurge.purgeInterval=1 server.1=ip1:2888:3888 server.2=ip2:2888:3888 server.3=ip3:2888:3888
在集羣模式下,集羣中的每一臺機器都要感知到其餘機器的存在,因此集羣機器中的 zoo.cfg 文件中經過:
server.id=ip:port:port 來標識集羣中不一樣的機器。其中 serverId 用來標識機器在集羣中的序號,同時,對應的每臺機器在都須要在 dataDir 目錄下建立一個 myid 文件,該文件內容是 serverId 值,該 id 的取值範圍是 1-255。
所謂的僞集羣就是用一臺集羣來模擬真實集羣中的全部機器,只須要把 zoo.cfg 文件修改以下
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-1 #dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-2 #dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-3 dataLogDir=/Users/shifeifei/Software/zk-3.5.4/zk-log/ clientPort=2181 #clientPort=2182 #clientPort=2183 #maxClientCnxns=60 #autopurge.snapRetainCount=3 #autopurge.purgeInterval=1 server.1=ip1:2888:3888 server.2=ip1:2889:3889 server.3=ip1:2890:3890
在目錄 /Users/shifeifei/Software/zk-3.5.4 下分別建立三個zk節點,以下如所示:
zookeeper-3.5.4-beta-1 zookeeper-3.5.4-beta-2 zookeeper-3.5.4-beta-3
目錄下 conf/zoo.cfg 分別修改 dataDir 目錄便可,同時把 dataDir 目錄的 myid 內容改爲對應的 serverId 值,即:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-1 dataLogDir=/Users/shifeifei/Software/zk-3.5.4/zk-log/ clientPort=2181 #maxClientCnxns=60 #autopurge.snapRetainCount=3 #autopurge.purgeInterval=1 server.1=ip1:2888:3888 server.2=ip1:2889:3889 server.3=ip1:2890:3890
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-2 dataLogDir=/Users/shifeifei/Software/zk-3.5.4/zk-log/ clientPort=2182 #maxClientCnxns=60 #autopurge.snapRetainCount=3 #autopurge.purgeInterval=1 server.1=ip1:2888:3888 server.2=ip1:2889:3889 server.3=ip1:2890:3890
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/Users/shifeifei/Software/zk-3.5.4/zk-data/zk-data-3 dataLogDir=/Users/shifeifei/Software/zk-3.5.4/zk-log/ clientPort=2183 #maxClientCnxns=60 #autopurge.snapRetainCount=3 #autopurge.purgeInterval=1 server.1=ip1:2888:3888 server.2=ip1:2889:3889 server.3=ip1:2890:3890
分別啓動三個zk節點
客戶端命令在 /Users/shifeifei/Software/zk-3.5.4/zookeeper-3.5.4-beta-1 目錄下,進入客戶端
./zkCli.sh
create /zk-book 123 #在zk的根節點下建立一個 /zk-book 節點,節點內容是 123
ls / # 獲取根節點下全部節點 get /zk-book # 獲取指定節點的內容
set /zk-book 456
delete /zk-book