準備工作:三臺(最少)主機,並且爲基數臺主機,zookeeper規定至少一半以上正常工作才能正常運行,系統爲CentOS 7,
zookeeper軟件包:zookeeper-3.4.7.tar.gz
在安裝zookeeper之前,請先安裝jdk,Java環境支持。具體安裝jdk步驟簡單,不贅述。
下載軟件包,放在/usr/local/src目錄下,解壓
tar -zxvf zookeeper-3.4.7.tar.gz
mv zookeeper-3.4.7 /usr/local/zookeeper(個人習慣,把軟件包放在/usr/local下)
進入zookeeper/conf目錄下,複製zoo_sample.cfg 命名爲zoo.cfg
修改配置:
tickTime=2000
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
initLimit=5
syncLimit=2
clientPort=2181
server.1=IP1:2888:3888 此處紅色標記可隨意數字
server.2=IP2:2888:3888
server.3=IP3:2888:3888
保存退出;
由於配置文件中有dataDir和dataLogDir,所以要創建兩個目錄
mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/logs
在dataDIr目錄下創建server id 文件
vim myid 值爲1
注:IP1上的myid的值是server.X 的X值要一致,不一致會搭建不成功。
其餘兩臺主機同樣的配置,不同就是myid的值。
啓動zookeeper,進入bin目錄
cd /usr/local/zookeeper/bin
會發現如下文件:
.cmd文件是windows運行腳本,.sh文件是Linux運行腳本
三臺主機分別啓動:
./zkServer.sh start
是否成功,則查看狀態:
./zkServer.sh status;
若出現follower或者leader的單詞,則表示zookeeper集羣搭建成功。
常見的錯誤:
在查看狀態的時候,會出現以下代碼:
JMX enabled by default
Using config: /usr/local/zk/bin/../conf/zoo.cfg
Error contacting service. It is probably not running
原因之一是:zoo.cfg在制定log輸出目錄,但是沒有創建。
原因之二是:在配置節點主機名和myid不匹配;
原因之三是:zookeeper所需端口沒有開放,開放三個端口2181,2888,3888
把zookeeper加入開機啓動中;配置如下
進入/etc/init.d/創建啓動文件
vim zookeeper
內容爲:
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
EXEC=/usr/local/zookeeper/bin/zkServer.sh
ZOO_LOG_DIR="/tmp/zookeeper/logs"
JAVA_HOME=/usr/local/jdk
PATH=${JAVA_HOME}/bin:$PATH
case $1 in
start) su root /usr/local/zookeeper/bin/zkServer.sh start;;
stop) su root /usr/local/zookeeper/bin/zkServer.sh stop;;
status) su root /usr/local/zookeeper/bin/zkServer.sh status;;
restart) su root /usr/local/zookeeper/bin/zkServer.sh restart;;
*) echo "require start|stop|status|restart" ;;
esac
保存退出
給與執行權限chmod +x zookeeper
添加到啓動項
chkconfig --add zookeeper即可