- apache 官网下载 zookeeper 压缩包,下载地址 https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
- 解压压缩包,tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
- 创建 3 个配置文件
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk1
clientPort=2181
server.1=localhost:2666:3666
server.2=localhost:2667:3667
server.3=localhost:2668:3668
admin.serverPort=2180
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk2
clientPort=2182
server.1=localhost:2666:3666
server.2=localhost:2667:3667
server.3=localhost:2668:3668
admin.enableServer=false
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk3
clientPort=2183
server.1=localhost:2666:3666
server.2=localhost:2667:3667
server.3=localhost:2668:3668
admin.enableServer=false
- 修改日志配置,目的是不在控制台输出日志,而是将日志输出到文件中(如果在控制台打印日志,那么在你使用终端的时候会突然冒出一些日志打断你的工作,很痛苦)
- conf/log4j.properties 默认配置
zookeeper.root.logger=INFO, CONSOLE
- conf/log4j.properties 修改后配置
zookeeper.root.logger=INFO, ROLLINGFILE
- 修改 zkEnv.sh(环境变量注入脚本),目的是让修改后的日志配置文件生效
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,CONSOLE"
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
- 根据 zoo1.cfg, zoo2.cfg, zoo3.cfg 配置文件中的 dataDir 创建目录,该目录用于存储各个节点的数据(请区分数据 data 与日志 log,日志文件存储在 apache-zookeeper-3.7.0-bin/logs 下)
mkdir /Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk1
mkdir /Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk2
mkdir /Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk3
- zookeeper 启动的时候会去保存数据的目录(即 conf/zoo.cfg 配置文件中的 dataDir)查找 myid 文件,因此在步骤 6 创建的目录中生成各个节点的 myid 文件,myid 的取值集合等于 conf/zoo.cfg 配置文件中的 server.1/server.2/server.3 的编号集合
echo 1 > /Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk1/myid
echo 2 > /Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk2/myid
echo 3 > /Users/Documents/zookeeper/apache-zookeeper-3.7.0-bin/data/zk3/myid
- 启动 zookeeper 服务端
bin/zkServer.sh start conf/zoo1.cfg
bin/zkServer.sh start conf/zoo2.cfg
bin/zkServer.sh start conf/zoo3.cfg
- 查看各个节点的状态(其余命令还包括 start-foreground/stop/restart/version/print-cmd )
bin/zkServer.sh status conf/zoo1.cfg
bin/zkServer.sh status conf/zoo2.cfg
bin/zkServer.sh status conf/zoo3.cfg
- zookeeper 客户端的常用命令
# 连接,端口号可以为集群中任一节点的端口
bin/zkCli.sh -server localhost:2181
# 创建新节点
create /node
# 查询某一节点下的子节点列表
ls /node
# 查询某一节点的具体数据
get /node
# 更新某一节点的数据
set /node "node"
# 删除某一节点,如果该节点存在子节点则删除失败
delete /node
# 强制删除某一节点及其子节点
rmr /node
- conf/zoo.cfg 配置文件中有两个特殊的配置,这是 zookeeper 3.5 之后新增的功能,可以访问 localhost:2180/commands 查看 admin 管理界面。该功能默认开启,默认端口为 8080。在单机多节点部署过程中,如果各个节点都开启 admin 且配置为相同端口,只有第一个节点会成功启动 admin,其余节点会在 logs/xxx.out 文件中打出 warn 日志
# conf/zoo1.cfg : 配置为 2180 端口
admin.serverPort=2180
# conf/zoo2.cfg, conf/zoo3.cfg : 关闭 admin
admin.enableServer=false