ZooKeeper 集羣的安裝、配置

  Zookeeper 集羣中只要有過半的節點是正常的情況下,那麼整個集羣對外就是可用的。正是基於這個

特性,要將 ZK 集羣的節點數量要爲奇數(2n+1:如 3、5、7 個節點)較爲合適。

系統環境:CentOS 6.6_x64 jdk1.8

  服務器IP和端口規劃:

服務器 1:192.168.1.11 端口:2181、2888、3888

服務器 2:192.168.1.12 端口:2181、2888、3888

服務器 3:192.168.1.13 端口:2181、2888、3888


1、 修改操作系統的/etc/hosts 文件,添加 IP 與主機名映射:

vim /etc/hosts
# zookeeper cluster servers
192.168.1.11 zk-01
192.168.1.12 zk-02
192.168.1.13 zk-03

2、 下載或上傳 zookeeper-3.4.6.tar.gz 到/home/wusc/zookeeper 目錄:

cd /usr/local/src
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

3、 解壓 zookeeper 安裝包,並建立軟連接

tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/
ln -sv /usr/local/zookeeper-3.4.6 /usr/local/zookeeper

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

mkdir -pv /data/zookeeper/{data,log} #數據目錄和日誌目錄

5、 將/usr/local/zookeeper/conf 目錄下的 zoo_sample.cfg 文件拷貝一份,命名爲 zoo.cfg:

cp zoo_sample.cfg zoo.cfg

6、 修改 zoo.cfg 配置文件:#3臺的配置一樣

vim /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/
dataLogDir=/data/zookeeper/log
clientPort=2181
server.1=zk-01:2888:3888
server.2=zk-02:2888:3888
server.3=zk-03:2888:3888

參數說明:

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=/data/zookeeper/

dataDir顧名思義就是Zookeeper保存數據的目錄,默認情況下Zookeeper將寫數據的日誌文件也保存在

這個目錄裏。

clientPort=2181

clientPort 這個端口就是客戶端(應用程序)連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端

口接受客戶端的訪問請求。

server.A=B:C:D

server.1=zk-01:2888:3888

server.2=zk-02:2888:3888

server.3=zk-03:2888:3888

A 是一個數字,表示這個是第幾號服務器;

B 是這個服務器的 IP 地址(或者是與 IP 地址做了映射的主機名) ;

C 第一個端口用來集羣成員的信息交換,表示這個服務器與集羣中的 Leader 服務器交換信息的端口;

D 是在 leader 掛掉時專門用來進行選舉 leader 所用的端口。

注意:如果是僞集羣的配置方式,不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不

同的端口號。


7、 在 dataDir=/data/zookeeper/ 下創建 myid 文件

編輯 myid 文件,並在對應的 IP 的機器上輸入對應的編號。如在 node-01 上,myid 文件內容就是

1,node-02 上就是 2,node-03 上就是 3:

echo 1 > /data/zookeeper/myid
echo 2 > /data/zookeeper/myid
echo 3 > /data/zookeeper/myid

8、 在防火牆中打開要用到的端口 2181、2888、3888

vim /etc/sysconfig/iptables
## 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 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT

重啓防火牆:

service iptables restart

查看防火牆端口狀態:

iptables -L

9、 啓動並測試 zookeeper:

/usr/local/zookeeper/bin/zkServer.sh start
jps #查看進程
247 QuorumPeerMain #QuorumPeerMain是zookeeper進程,說明啓動正常
tailf -200 /data/zookeeper/log/zookeeper.out #查看日誌,沒報錯,有集羣配置信息就說明集羣配置成功

注意:zookeeper集羣配置每個節點的配置都是一樣的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章