1. 程式人生 > >zookeeper單機叢集安裝

zookeeper單機叢集安裝

一、單機安裝

1.1 下載

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

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

四、報錯及處理

應用連線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即會正常。