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'`