zookeeper安裝教程(zookeeper3.4.5爲例)

zookeeper有單機、僞集羣、集羣三種部署方式,可根據本身對可靠性的需求選擇合適的部署方式。下邊對這三種部署方式逐一進行講解。html

 

1、單機安裝

1.1 下載

進入要下載的版本的目錄,選擇.tar.gz文件下載linux

下載連接:http://archive.apache.org/dist/zookeeper/apache

 

1.2 安裝

使用tar解壓要安裝的目錄便可,以3.4.5版本爲例app

這裏以解壓到/usr/myapp,實際安裝根據本身的想安裝的目錄修改(注意若是修改,那後邊的命令和配置文件中的路徑都要相應修改)socket

tar -zxf zookeeper-3.4.5.tar.gz -C /usr/myapp

 

1.3 配置

在主目錄下建立data和logs兩個目錄用於存儲數據和日誌:ui

cd /usr/myapp/zookeeper-3.4.5
mkdir
data mkdir logs

 

在conf目錄下新建zoo.cfg文件,寫入如下內容保存:spa

tickTime=2000
dataDir=/usr/myapp/zookeeper-3.4.5/data
dataLogDir=/usr/myapp/zookeeper-3.4.5/logs
clientPort=2181

 

1.4 啓動和中止

進入bin目錄,啓動、中止、重啓分和查看當前節點狀態(包括集羣中是何角色)別執行:rest

./zkServer.sh start
./zkServer.sh stop
./zkServer.sh restart
./zkServer.sh status

 

2、僞集羣模式

僞集羣模式就是在同一主機啓動多個zookeeper並組成集羣,下邊以在192.168.220.128主機上創3個zookeeper組集羣爲例。日誌

將經過第一大點安裝的zookeeper,複製成zookeeper1/zookeeper2/zookeeper3三份code

 

2.1 zookeeper1配置

zookeeper1配置文件conf/zoo.cfg修改以下:

tickTime=2000
dataDir=/usr/myapp/zookeeper1/data
dataLogDir=/usr/myapp/zookeeper1/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.220.128:2888:3888
server.2=192.168.220.128:4888:5888
server.3=192.168.220.128:6888:7888

zookeeper1的data/myid配置以下:

echo '1' > data/myid

 

2.2 zookeeper2配置

zookeeper2配置文件conf/zoo.cfg修改以下:

tickTime=2000
dataDir=/usr/myapp/zookeeper2/data
dataLogDir=/usr/myapp/zookeeper2/logs
clientPort=3181
initLimit=5
syncLimit=2
server.1=192.168.220.128:2888:3888
server.2=192.168.220.128:4888:5888
server.3=192.168.220.128:6888:7888

zookeeper2的data/myid配置以下:

echo '2' > data/myid

 

2.3 zookeeper3配置

zookeeper3配置文件conf/zoo.cfg修改以下:

tickTime=2000
dataDir=/usr/myapp/zookeeper3/data
dataLogDir=/usr/myapp/zookeeper3/logs
clientPort=4181
initLimit=5
syncLimit=2
server.1=192.168.220.128:2888:3888
server.2=192.168.220.128:4888:5888
server.3=192.168.220.128:6888:7888

 zookeeper3的data/myid配置以下:

echo '3' > data/myid

最後使用1.4的命令把三個zookeeper都啓動便可,啓動順序隨意沒要求。

 

3、集羣模式

集羣模式就是在不一樣主機上安裝zookeeper而後組成集羣的模式;下邊以在192.168.220.128/129/130三臺主機爲例。

將第1.1到1.3步中安裝好的zookeeper打包複製到129和130上,並都解壓到一樣的目錄下。

 

3.1 conf/zoo.cfg文件修改

三個zookeeper的conf/zoo.cfg修改以下:

tickTime=2000
dataDir=/usr/myapp/zookeeper-3.4.5/data
dataLogDir=/usr/myapp/zookeeper-3.4.5/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.220.128:2888:3888
server.2=192.168.220.129:2888:3888
server.3=192.168.220.130:2888:3888

對於129和130,因爲安裝目錄都是zookeeper-3.4.5因此dataDir和dataLogDir不須要改變,又因爲在不一樣機器上因此clientPort也不須要改變

因此此時129和130的conf/zoo.cfg的內容與128同樣便可。

 

3.2 data/myid文件修改

128 data/myid修改以下:

echo '1' > data/myid

129 data/myid修改以下:

echo '2' > data/myid

130 data/myid修改以下:

echo '3' > data/myid

最後使用1.4的命令把三個zookeeper都啓動便可,啓動順序隨意沒要求。

 

4、基本命令使用

如下命令無論是單機、僞集羣、集羣模式都適用;僞集羣和集羣模式隨便鏈接其中一個zookeeper便可。

進入zookeeper的bin目錄,使用zkCli鏈接zookeeper:

./zkCli.sh
# 默認鏈接localhost:2181,如需指定ip和端口可以使用以下形式
# ./zkCli.sh -server 192.168.220.128:2181

如下是zkCli中的簡單命令使用示例,總的而言zookeeper的組織結構相似於linux的目錄結構:

# 查看全部支持的命令。其實輸入任一條不支持的命令都會打印幫助
help

# 查看目錄下有哪些節點。以根目錄爲例
ls /

# 建立一個節點。
# 加-s表示建立順序節點,即會自動在給定的路徑後面再加上一個數字串,保證路徑不重複。
# 默認是持久節點,加-e是臨時節點
create /example_path "example_data"

# 查看節點內容
# 返回第一行便是節點的內容,若是第一行空白或null那就說明該節點建立時就沒有值
# 後續的cZxid到numChildren都是該節點的一些屬性信息;其中numChildren標識該節點下有多少個子節點
get /example_path

# 刪除一個沒有子節點的節點
delete /example_path

# 遞規刪除節點及其全部子節點
rmr /example_path

# 退出zkCli
quit

 

5、報錯及處理

應用鏈接zookeepr報錯:Session 0x0 for server 192.168.220.128/192.168.220.128:2181,unexpected error,closing socket connection and attempting reconnect;

                                        先看端口可否telnet通,若是通則使用./zkServer.sh status查看zk是否確實已啓動,沒啓查看bin/zookeeper.out中的報錯。

bin/zookeeper.out中報錯:「zookeeper address already in use」;顯然端口被佔用,要麼是其餘進程佔用了配置的端口,要麼是上邊配置的clientPort和server中的端口有重複。

bin/zookeeper.out中報錯:Cannot open channel to 2 at election address /192.168.220.130:3888;這應該只是組成集羣的130節點未啓動,到130啓動起來zk即會正常。

 

參考:

http://coolxing.iteye.com/blog/1871009

https://zookeeper.apache.org/doc/r3.4.10/zookeeperStarted.html

https://www.w3cschool.cn/zookeeper/zookeeper_cli.html

相關文章
相關標籤/搜索