說明:系統(tǒng)環(huán)境為centos6.9酣藻,由于Zookeeper集群是通過多數(shù)選舉的方式產(chǎn)生leader的锭沟,因此尔当,集群需要奇數(shù)個Zookeeper實例組成坞靶,也就是說至少需要3臺(一般推薦3憔狞、5、7臺 )彰阴。
1. 下載穩(wěn)定版3.4.10
sudo yum install -y tar wget
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local
其他版本參考:http://zookeeper.apache.org/releases.html
2. 創(chuàng)建配置文件zoo.cfg
進入 /usr/local/zookeeper-3.4.10目錄瘾敢,并將conf目錄下zoo_sample.cfg重命名或拷貝一份,且命名為zoo.cfg
cd /usr/local/zookeeper-3.4.10
sudo cp conf/zoo_sample.cfg conf/zoo.cfg
3. 修改配置文件zoo.cfg
在文件的最后加入主機IP等相關(guān)信息,例如:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper
clientPort=2181
#maxClientCnxns=60
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
- tickTime:心跳時間尿这,為了確保連接存在的簇抵,以毫秒為單位,最小超時時間為兩個心跳時間射众。
- initLimit:多少個心跳時間內(nèi)碟摆,允許其他server連接并初始化數(shù)據(jù),如果ZooKeeper管理的數(shù)據(jù)較大责球,應(yīng)相應(yīng)增大這個值焦履。
- syncLimit:多少個tickTime內(nèi),允許follower同步雏逾,如果follower落后太多嘉裤,則會被丟棄。
- dataDir:用于存放內(nèi)存數(shù)據(jù)庫快照的文件夾栖博,同時對于集群的myid文件也存在這個文件夾里(注意:一個配置文件只能包含一個dataDir字樣屑宠,即使它被注釋掉了。)
- clientPort:服務(wù)的監(jiān)聽端口仇让。
- server.A=B:C:D
A是一個數(shù)字,表示這個是第幾號服務(wù)器,B是這個服務(wù)器的ip地址
C第一個端口用來集群成員的信息交換,表示的是這個服務(wù)器與集群中的Leader服務(wù)器交換信息的端口
D是在leader掛掉時專門用來進行選舉leader所用
4. 設(shè)置myid和/etc/hosts
上步配置中的A就是一個zookeeper節(jié)點的ID典奉,它需要被寫在對應(yīng)的{dataDir}/myid文件中躺翻。
echo '1' > /var/lib/zookeeper/myid
echo '2' > /var/lib/zookeeper/myid
echo '3' > /var/lib/zookeeper/myid
echo '127.0.0.1 zookeeper1' > /etc/hosts
echo '127.0.0.1 zookeeper1' > /etc/hosts
echo '127.0.0.1 zookeeper1' > /etc/hosts
5. 在三個zookeeper節(jié)點上分別啟動zookeeper服務(wù)
./bin/zkServer.sh start
注:以下各步驟的當(dāng)前目錄均為:/usr/local/zookeeper-3.4.10
6. 查看服務(wù)狀態(tài)
./bin/zkServer.sh status
正常狀態(tài)為:
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: standalone
zookeeper支持兩種運行模式:獨立模式(standalone)和復(fù)制模式(replicated),真正用于生產(chǎn)環(huán)境的Zookeeper肯定都是使用復(fù)制模式的卫玖,這樣做可以避免單點問題公你。
7. 可通過啟動客戶端測試連接
./bin/zkCli.sh -server zookeeper:2181
8. 停止服務(wù)
./bin/zkServer.sh stop
9. 設(shè)置開機啟動
(1)創(chuàng)建腳本
cd /etc/rc.d/init.d
touch zookeeper && chmod +x zookeeper
(2)編輯zookeeper文件,添加如下內(nèi)容
#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.10
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
case $1 in
start) su root $ZOOKEEPER_HOME/bin/zkServer.sh start;;
status) su root $ZOOKEEPER_HOME/bin/zkServer.sh status;;
stop) su root $ZOOKEEPER_HOME/bin/zkServer.sh stop;;
restart) su root $ZOOKEEPER_HOME/bin/zkServer.sh restart;;
*) echo "requirestart|stop|status|restart" ;;
esac
(3)添加到開機啟動
chkconfig zookeeper on
chkconfig --add zookeeper
// 啟動或停止
service zookeeper start | stop | restart
10. 至此已完成zookeeper安裝及配置假瞬。
11. 問題總結(jié)
啟動后陕靠,查看狀態(tài)時異常:
JMX enabled by default
Using config: /usr/lib/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
- 原因1:系統(tǒng)未安裝java
解決方法:yum install java-1.8.0-openjdk-devel.x86_64 -y - 原因2: zoo.cfg參數(shù)配置問題
- 原因3: 若是集群環(huán)境下,則其他節(jié)點可能未啟動或配置錯誤脱茉。