zookeeper 叢集安裝

不設限發表於2016-09-08
  1. 第一步:伺服器配置

    master 172.16.1.1
    node1 172.16.1.2
    node2 172.16.1.3
  2. 驗證 JAVA 執行環境

    java -version
    javac -version
  3. 第二步下載 Zookeeper

  4. 第三步:解壓Zookeeper(先在第一臺伺服器master 上分別執行(1)-(4)步)

    • (1)解壓和重新命名:
      將zookeeper-3.4.5.tar.gz 放入 /user/local/目錄下執行下面命令

      
      #1.解壓 zookeeper
      
      tar zxf zookeeper-3.4.5.tar.gz
      
      #2.重新命名 資料夾
      
      mv zookeeper-3.4.5 zookeeper
    • (2)建立資料目錄和日誌目錄:

    mkdir /user/local/zookeeper/data
    mkdir /user/local/zookeeper/dataLog
    • (3)配置:將conf/zoo_sample.cfg拷貝一份命名為zoo.cfg,也放在conf目錄下
    tickTime=2000       
    dataDir=/user/local/zookeeper/data
    dataLogDir=/user/local/zookeeper/dataLog
    initLimit=5
    syncLimit=2
    
    #連線 zookeeper 的埠
    
    clientPort=2181
    
    #2888 是叢集之間交換資訊的埠
    
    
    #3888 是叢集之間選舉leader的埠
    
    
    #如果是偽叢集模式的話,這些埠都需要不一樣
    
    server.1=172.16.1.1:2888:3888
    server.2=172.16.1.2:2888:3888
    server.3=172.16.1.3:2888:3888
    
    #注意 server.1 這個字尾,標識的是 172.16.1.1 這個機器,在叢集中的 serverid 是1
    
    • (4)標識 ServerID
      在目錄 /user/local/zookeeper/data 中建立檔案 myid,裡面寫上數字1
  5. 接下來將上面的安裝檔案拷貝到機器中的其他機器上的對應的目錄下

    • 拷貝檔案
    scp -r zookeeper root@node1:/user/local/zookeeper
    scp -r zookeeper root@node1:/user/local/zookeeper
    • 修改對應的 myid
    
    #修改 node1
    
    echo "2">/user/local/zookeeper/data/myid
    
    #修改 node2
    
    echo "3">/user/local/zookeeper/data/myid
  6. 啟動Zookeeper 在 master、node1、node2 機器上分別執行如下命令

    /usr/local/zookeeper/bin/zkServer.sh start
  7. 注意:即便是你都按照上面所說的做了,但是結果還可能會報錯:
    這裡寫圖片描述

這個時候,你就需要注意了,這種情況通常是因為找不到對應的服務的地址導致的,這種情況下你應該給所有的機器都配置上一個別名:如果你的是多臺機器的叢集,那麼就像下面這麼配置:
這裡寫圖片描述
如果你是單臺機器的偽叢集,那麼就只需要配置一個就好了如下:

192.168.100.15 zkserver

當然你的 zoo.cfg 檔案也是需要修改的:把使用 ip 的地方換為別名,這樣再去連結 zookeeper 服務的時候就沒有問題了。

```
server.1=zkserver:2555:3555
server.2=zkserver:2666:3666
server.3=zkserver:2777:3777
```

8. zookeeper 叢集啟動指令碼:

#!/bin/bash

#宣告伺服器:
server11=192.168.100.11
server12=192.168.100.12
server13=192.168.100.13

cd /opt/tools/zookeeper-3.4.6;bin/zkServer.sh stop;bin/zkServer.sh start
echo "${server11} is ready......"
echo -e "\n\n"

# 遠端啟動需要輸出遠端機器的 java_home
ssh root@server12 "export JAVA_HOME=/opt/tools/jdk1.7.0_67;export PATH=$JAVA_HOME/bin:$PATH;export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar;cd /opt/tools/zookeeper-3.4.6;bin/zkServer.sh stop;bin/zkServer.sh start"
echo "${server12} is ready......"
echo -e "\n\n"

ssh root@server13 "export JAVA_HOME=/opt/tools/jdk1.7.0_67;export PATH=$JAVA_HOME/bin:$PATH;export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar;cd /opt/tools/zookeeper-3.4.6;bin/zkServer.sh stop;bin/zkServer.sh start"
echo "${server13} is ready......"

相關文章