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


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

 

一、單機安裝

1.1 下載

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

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

 

1.2 安裝

使用tar解壓要安裝的目錄即可,以3.4.5版本為例

這里以解壓到/usr/myapp,實際安裝根據自己的想安裝的目錄修改(注意如果修改,那后邊的命令和配置文件中的路徑都要相應修改)

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

 

1.3 配置

在主目錄下創建data和logs兩個目錄用於存儲數據和日志:

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

 

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

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

 

1.4 啟動和停止

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

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

 

二、偽集群模式

偽集群模式就是在同一主機啟動多個zookeeper並組成集群,下邊以在192.168.220.128主機上創3個zookeeper組集群為例。

將通過第一大點安裝的zookeeper,復制成zookeeper1/zookeeper2/zookeeper3三份

 

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都啟動即可,啟動順序隨意沒要求。

 

三、集群模式

集群模式就是在不同主機上安裝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都啟動即可,啟動順序隨意沒要求。

 

四、基本命令使用

以下命令不管是單機、偽集群、集群模式都適用;偽集群和集群模式隨便連接其中一個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

 

五、報錯及處理

應用連接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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM