zookeeper 单机多节点部署

  1. apache 官网下载 zookeeper 压缩包,下载地址 https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
  2. 解压压缩包,tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
  3. 创建 3 个配置文件
  • conf/zoo1.cfg
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
  • conf/zoo2.cfg
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
  • conf/zoo3.cfg
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
  1. 修改日志配置,目的是不在控制台输出日志,而是将日志输出到文件中(如果在控制台打印日志,那么在你使用终端的时候会突然冒出一些日志打断你的工作,很痛苦)
  • conf/log4j.properties 默认配置
zookeeper.root.logger=INFO, CONSOLE
  • conf/log4j.properties 修改后配置
zookeeper.root.logger=INFO, ROLLINGFILE
  1. 修改 zkEnv.sh(环境变量注入脚本),目的是让修改后的日志配置文件生效
  • bin/zkEnv.sh 默认代码
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,CONSOLE"
fi
  • bin/zkEnv.sh 修改后代码
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
  1. 根据 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
  1. 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
  1. 启动 zookeeper 服务端
bin/zkServer.sh start conf/zoo1.cfg
bin/zkServer.sh start conf/zoo2.cfg
bin/zkServer.sh start conf/zoo3.cfg
  1. 查看各个节点的状态(其余命令还包括 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
  1. zookeeper 客户端的常用命令
# 连接,端口号可以为集群中任一节点的端口
bin/zkCli.sh -server localhost:2181
# 创建新节点
create /node
# 查询某一节点下的子节点列表
ls /node
# 查询某一节点的具体数据
get /node
# 更新某一节点的数据
set /node "node"
# 删除某一节点,如果该节点存在子节点则删除失败
delete /node
# 强制删除某一节点及其子节点
rmr /node
  1. 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容