1. 程式人生 > >linux 安裝zookeeer叢集

linux 安裝zookeeer叢集

伺服器 1:192.168.1.81 伺服器 2:192.168.1.82 伺服器 3:192.168.1.83 埠:2181、2881、3881 埠:2182、2882、3882 埠:2183、2883、3883 1、 修改作業系統的/etc/hosts 檔案,新增 IP 與主機名對映:

  # zookeeper cluster servers

2、 下載或上傳 zookeeper-3.4.6.tar.gz 到/home/wusc/zookeeper 目錄: 3、 解壓 zookeeper 安裝包,並按節點號對 zookeeper 目錄重新命名: $ tar -zxvf zookeeper-3.4.6.tar.gz 伺服器 1:

$ mv zookeeper-3.4.6 node-01

伺服器 2:

$ mv zookeeper-3.4.6 node-02 伺服器 3:
$ mv zookeeper-3.4.6 node-03

4、 在各 zookeeper 節點目錄下建立以下目錄:

$ cd /home/wusc/zookeeper/node-0X (X 代表節點號 1、2、3,以下同解) $ mkdir data
$ mkdir logs

5、 將 zookeeper/node-0X/conf 目錄下的 zoo_sample.cfg 檔案拷貝一份,命名為 zoo.cfg: $ cp zoo_sample.cfg zoo.cfg 6、 修改 zoo.cfg 配置檔案:

zookeeper/node-01 的配置(/home/wusc/zookeeper/node-01/conf/zoo.cfg)如下:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/wusc/zookeeper/node-01/data dataLogDir=/home/wusc/zookeeper/node-01/logs
    clientPort=2181
    server.1=edu-zk-01:2881:3881
    server.2=edu-zk-02:2882:3882
    server.3=edu-zk-03:2883:3883

zookeeper/node-02 的配置(/home/wusc/zookeeper/node-02/conf/zoo.cfg)如下:

tickTime=2000
  initLimit=10
  syncLimit=5
  dataDir=/home/wusc/zookeeper/node-02/data
  dataLogDir=/home/wusc/zookeeper/node-02/logs
  clientPort=2182
  server.1=edu-zk-01:2881:3881
  server.2=edu-zk-02:2882:3882
  server.3=edu-zk-03:2883:3883

zookeeper/node-03 的配置(/home/wusc/zookeeper/node-03/conf/zoo.cfg)如下:

tickTime=2000
  initLimit=10
  syncLimit=5
  dataDir=/home/wusc/zookeeper/node-03/data
  dataLogDir=/home/wusc/zookeeper/node-03/logs
  clientPort=2183
  server.1=edu-zk-01:2881:3881
  server.2=edu-zk-02:2882:3882
  server.3=edu-zk-03:2883:3883

引數說明: tickTime=2000

tickTime 這個時間是作為 Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每 個 tickTime 時間就會發送一個心跳。

initLimit=10

initLimit 這個配置項是用來配置 Zookeeper 接受客戶端(這裡所說的客戶端不是使用者連線 Zookeeper 伺服器的客戶端,而是 Zookeeper 伺服器叢集中連線到 Leader 的 Follower 伺服器)初始化連線時最長 能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 服 務器還沒有收到客戶端的返回資訊,那麼表明這個客戶端連線失敗。總的時間長度就是 10*2000=20 秒。

syncLimit=5

syncLimit 這個配置項標識 Leader 與 Follower 之間傳送訊息,請求和應答時間長度,最長不能超過多少 個 tickTime 的時間長度,總的時間長度就是 5*2000=10 秒。

dataDir=/home/wusc/zookeeper/node-01/data

dataDir 顧名思義就是 Zookeeper 儲存資料的目錄,預設情況下 Zookeeper 將寫資料的日誌檔案也儲存在 這個目錄裡。

clientPort=2181 clientPort 這個埠就是客戶端(應用程式)連線 Zookeeper 伺服器的埠,Zookeeper 會監聽這個端 口接受客戶端的訪問請求。 龍果學院微信公眾號:ron-coo

server.A=B:C:D

   server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883

A 是一個數字,表示這個是第幾號伺服器; B 是這個伺服器的 IP 地址(或者是與 IP 地址做了對映的主機名); C 第一個埠用來叢集成員的資訊交換,表示這個伺服器與叢集中的 Leader 伺服器交換資訊的埠; D 是在 leader 掛掉時專門用來進行選舉 leader 所用的埠。 注意:如果是偽叢集的配置方式,不同的 Zookeeper 例項通訊埠號不能一樣,所以要給它們分配不 同的埠號。 7、 在 dataDir=/home/wusc/zookeeper/node-0X/data 下建立 myid 檔案 編輯 myid 檔案,並在對應的 IP 的機器上輸入對應的編號。如在 node-01 上,myid 檔案內容就是 1,node-02 上就是 2,node-03 上就是 3:

$ vi /home/wusc/zookeeper/node-01/data/myid
$ vi /home/wusc/zookeeper/node-02/data/myid
$ vi /home/wusc/zookeeper/node-03/data/myid

8、 在防火牆中開啟要用到的埠 218X、288X、388X 切換到 root 使用者許可權,執行以下命令:

chkconfig iptables on

service iptables start 編輯/etc/sysconfig/iptables

vi /etc/sysconfig/iptables 如伺服器 01 增加以下 3 行:

 ## zookeeper
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 2881 -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3881 -j ACCEPT

重啟防火牆:

service iptables restart 檢視防火牆埠狀態:

service iptables status

9、 啟動並測試 zookeeper(要用 wusc 使用者啟動,不要用 root): (1) 使用 wusc 使用者到/home/wusc/zookeeper/node-0X/bin 目錄中執行:

 $ /home/wusc/zookeeper/node-01/bin/zkServer.sh start
 $ /home/wusc/zookeeper/node-02/bin/zkServer.sh start
 $ /home/wusc/zookeeper/node-03/bin/zkServer.sh start

(2) 輸入 jps 命令檢視程序: 龍果學院微信公眾號:ron-coo

值為 1 ## 值為 2 ## 值為 3

(3)  $ /home/wusc/zookeeper/node-01/bin/zkServer.sh status

(4) 檢視 zookeeper 服務輸出資訊: 由於服務資訊輸出檔案在

/home/wusc/zookeeper/node-0X/bin/zookeeper.out 
$ tail -500f zookeeper.out

10、 $ 11、配置 zookeeper 開機使用 wusc 使用者啟動: 編輯 node-01、node-02、node-03 中的/etc/rc.local 檔案,分別加入:

su - wusc -c `'/home/wusc/zookeeper/node-01/bin/zkServer.sh start' 
su - wusc -c '/home/wusc/zookeeper/node-02/bin/zkServer.sh start' 
su - wusc -c '/home/wusc/zookeeper/node-03/bin/zkServer.sh start'`