參考官方文檔:https://zookeeper.apache.org/doc/r3.4.14/zookeeperStarted.html#sc_Download
前提:部署好java環境
一、單機部署
1、下載官網文檔版安裝包
#wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.14.tar.gz
#tar zxf zookeeper-3.4.14.tar.gz -C /data/app/zookeeper
2、配置文件配置
#mkdir -pv /data/data/zookeeper/{data,logs}
#cd /data/app/zookeeper/conf
#cp zoo_sample.cfg zoo.cfg
#cat zoo.cfg #創建配置文件
tickTime=2000
dataDir=/data/data/zookeeper/data
clientPort=2181
tickTime:ZooKeeper使用的基本時間單位(以毫秒為單位)。它用于做心跳,最小會話超時將是tickTime的兩倍。
dataDir:存儲內存數據庫快照的位置,除非另有說明,否則為數據庫更新的事務日志。
clientPort:偵聽客戶端連接的端口
3、啟動測試
#useradd -M -s /sbin/nologin zookeeper
#chown -R zookeeper.zookeeper /data/app/zookeeper /data/data/zookeeper
以普通用戶啟動腳本
#!/bin/bash
zkFile='/data/app/zookeeper/bin/zkServer.sh'
cd /data/app/zookeeper/bin/
case $1 in
start)
su zookeeper -s /bin/bash -c "${zkFile} start" ;;
stop)
${zkFile} stop ;;
restart)
${zkFile} stop
su zookeeper -s /bin/bash -c "${zkFile} start" ;;
status)
${zkFile} status;;
upgrade)
${zkFile} upgrade;;
print-cmd)
${zkFile} print-cmd;;
start-foreground)
${zkFile} start-foreground;;
*)
echo "參數錯誤!" ;;
esac
二、單機偽集群部署
先按照單機部署步驟,先下載解壓程序文件。
1、創建配置文件
#cd /data/app/zookeeper/conf
#cat zoo1.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/data/zookeeper1/data
clientPort=2181
dataLogDir=/data/data/zookeeper1/logs
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
#cat zoo2.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/data/zookeeper2/data
clientPort=2182
dataLogDir=/data/data/zookeeper2/logs
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
#cat zoo3.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/data/zookeeper3/data
clientPort=2183
dataLogDir=/data/data/zookeeper3/logs
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
2.創建數據文件夾和日志文件夾
#mkdir -pv /data/data/zookeeper{1..3}/{data,logs}
#echo "1" > /data/data/zookeeper1/data/myid
#echo "2" > /data/data/zookeeper2/data/myid
#echo "3" > /data/data/zookeeper3/data/myid
#chown -R zookeeper.zookeeper /data/app/zookeeper /data/data/zookeeper*
3、創建普通用戶啟動腳本
#!/bin/bash
zkFile='/data/app/zookeeper/bin/zkServer.sh'
confFile='/data/app/zookeeper/conf'
cd /data/app/zookeeper/bin/
case $1 in
start)
su zookeeper -s /bin/bash -c "${zkFile} start ${confFile}/${2}" ;;
stop)
${zkFile} stop ${confFile}/${2};;
restart)
${zkFile} stop ${confFile}/${2}
su zookeeper -s /bin/bash -c "${zkFile} start ${confFile}/${2}" ;;
status)
${zkFile} status ${confFile}/${2};;
upgrade)
${zkFile} upgrade ${confFile}/${2};;
print-cmd)
${zkFile} print-cmd ${confFile}/${2};;
start-foreground)
${zkFile} start-foreground ${confFile}/${2};;
*)
echo "參數錯誤!" ;;
esac
# ./zk-cluster.sh start zoo2.cfg
# ./zk-cluster.sh start zoo1.cfg
# ./zk-cluster.sh start zoo3.cfg
4、測試
# ./zkCli.sh -server 127.0.0.1:2183
[zk: 127.0.0.1:2183(CONNECTED) 4] create /test test123
Created /test
[zk: 127.0.0.1:2183(CONNECTED) 5] quit
# ./zkCli.sh -server 127.0.0.1:2181
[zk: 127.0.0.1:2181(CONNECTED) 0] ls /
[zookeeper, test]
[zk: 127.0.0.1:2181(CONNECTED) 1] get /test
test123
cZxid = 0x400000004
ctime = Mon Apr 29 14:17:49 CST 2019
mZxid = 0x400000004
mtime = Mon Apr 29 14:17:49 CST 2019
pZxid = 0x400000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
三、多服務器集群部署(至少三臺服務器)
1、每臺服務器按照步驟一的安裝部署下載解壓,然后配置文件更改為:
#cat zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/data/zookeeper/data
clientPort=2181
dataLogDir=/data/data/zookeeper/logs
server.1=172.16.2.5:2888:3888
server.2=172.16.2.6:2888:3888
server.3=172.16.2.7:2888:3888
2、創建文件和文件夾
數據文件夾、日志文件夾、myid文件
3、使用步驟一單機普通用戶啟動腳本分別啟動每個服務器的服務。


