安裝zookeeper(單機,僞集羣)

 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

相關文章
相關標籤/搜索