1.登錄zookeeper官網下載 https://zookeeper.apache.org/apache
zookeeper-3.4.8.tar.gzvim
解壓:tar -zxvf zookeeper-3.4.8.tar.gz服務器
1.單機分佈式
進入conf文件夾 建立一個配置文件zoo.cfg。測試
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/zk/data
clientPort=2181
前提建立了/usr/local/zookeeper/zk/data文件夾spa
tickTime:Zookeeper 服務器之間或客戶端與服務器之間心跳的時間間隔。
dataDir:Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
clientPort:Zookeeper 服務器監聽端口,用來接受客戶端的訪問請求。3d
配置完之後,就能夠啓動zookeeper服務了,進入Zookeeper/bin目錄,運行下面的命令來啓動Zookeeper服務日誌
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/software/zookeeper-3.4.8/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
默認加載conf名爲 zoo.cfg文件,或者能夠這樣指定文件code
[root@localhost bin]# ./zkServer.sh start ../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo.cfg
Starting zookeeper ... STARTED
查看服務狀態server
./zkServer.sh status ../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo.cfg
Mode: standalone
使用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節點
2.集羣
在一臺機器上部署了3個server,須要注意的是在集羣爲分佈式模式下咱們使用的每一個配置文檔模擬一臺機器,也就是說單臺機器及上運行多個Zookeeper實例。可是,必須保證每一個配置文檔的各個端口號不能衝突,除了clientPort不一樣以外,dataDir也不一樣。另外,還要在dataDir所對應的目錄中建立myid文件來指定對應的Zookeeper服務器實例。
■ clientPort端口:若是在1臺機器上部署多個server,那麼每臺機器都要不一樣的 clientPort,好比 server1是2181,server2是2182,server3是2183
■ dataDir和dataLogDir:dataDir和dataLogDir也須要區分下,將數據文件和日誌文件分開存放,同時每一個server的這兩變量所對應的路徑都是不一樣的
■ server.X和myid: server.X 這個數字就是對應,data/myid中的數字。在3個server的myid文件中分別寫入了0,1,2,那麼每一個server中的zoo.cfg都配 server.0 server.2,server.3就好了。由於在同一臺機器上,後面連着的2個端口,3個server都不要同樣,不然端口衝突
---------------------------------------------
新建3個配置文件
內容以下
zoo1.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/zk1/data
clientPort=2182
dataLogDir=/usr/local/zookeeper/zk1/logs
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
zoo2.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/zk2/data
clientPort=2183
dataLogDir=/usr/local/zookeeper/zk2/logs
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
zoo3.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/zk3/data
clientPort=2184
dataLogDir=/usr/local/zookeeper/zk3/logs
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
每一個實例都初始化相應data和log文件,例如zoo1.cfg的
啓動 zoo1.cfg ,好像成功了
[root@localhost bin]# ./zkServer.sh start ../conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Starting zookeeper ... STARTED
查看狀態發現,沒成功
[root@localhost bin]# ./zkServer.sh status ../conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Error contacting service. It is probably not running.
應該就是zoo1.cfg出錯了,原來是配置文件有錯誤,要麼路徑錯,要麼mypid錯了
zoo.cfg配置文件裏dataDir指定的那個目錄下建立myid文件,而且指定id,改id爲你zoo.cfg文件中server.1=localhost:2888:3888中的 1.只要在myid頭部寫入1便可.
vim myid
同理,爲其餘兩個實例是指myid
在運行完第一條指令以後,會出現一些錯誤異常,產生異常信息的緣由是因爲Zookeeper 服務的每一個實例都擁有全局配置信息,他們在啓動的時候會隨時隨地的進行Leader選舉操做。此時,第一個啓動的Zookeeper須要和另外兩個 Zookeeper實例進行通訊。可是,另外兩個Zookeeper實例尚未啓動起來,所以就產生了這的異樣信息。咱們直接將其忽略便可,待把圖中「2 號」和「3號」Zookeeper實例啓動起來以後,相應的異常信息天然會消失。此時,能夠經過下面三條命令,來查詢。
[root@localhost bin]# ./zkServer.sh start ../conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Starting zookeeper ... STARTED
[root@localhost bin]# ./zkServer.sh status ../conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Error contacting service. It is probably not running.
[root@localhost bin]# ./zkServer.sh start ../conf/zoo2.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Starting zookeeper ... STARTED
[root@localhost bin]# ./zkServer.sh status ../conf/zoo2.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Mode: leader
[root@localhost bin]# ./zkServer.sh status ../conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Mode: follower
[root@localhost bin]# ./zkServer.sh start ../conf/zoo3.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Starting zookeeper ... STARTED
[root@localhost bin]# ./zkServer.sh status ../conf/zoo3.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Mode: follower
成功
一些命令
啓動
./zkServer.sh start ../conf/zoo1.cfg
中止
./zkServer.sh stop ../conf/zoo1.cfg
查看狀態
./zkServer.sh status ../conf/zoo1.cfg
啓動客戶端
./zkCli.sh -server 127.0.0.1:2181
出,fa