参考官方文档: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、使用步骤一单机普通用户启动脚本分别启动每个服务器的服务。