生产环境下的Zookeeper 往往都是集群环境, 集群节点个数通常为3,5,7,9… 但是在开发和测试环境下, 单实例环境就可以满足需求.

1. Zookeeper 安装包

  • 下载地址: http://zookeeper.apache.org/releases.html
配置/脚本用途
bin/zkEnv.shzookeeper 的环境配置脚本
bin/zkServer.shzookeeper 的启动管理脚本
bin/zkCli.shzookeeper的客户端连接脚本
conf/zoo.cfgzookeeper 的核心配置文件, 需要手工创建
conf/log4j.propertieszookeeper 的日志输出格式配置文件, zookeeper使用log4j 输出日志

2. Zookeeper 单实例安装

zookeeper 安装方式比较简单的, 解压二进制包即可. 启动Zookeeper 服务之前, 我们需先对Zookeeper 相关目录做一下规划, 这些目录需手工创建.

目录用途
/opt/app/zookeeper/zookeeper-3.4.11zookeeper 安装家目录
/data/zookeeperzookeeper 数据存放目录
/data/logs/zookeeperzookeeper 日志存放目录

2.1 安装zookeeper

$ tar -zxf zookeeper-3.4.11.tar.gz -C /opt/app/zookeeper

2.2 创建配置文件zoo.cfg

zookeeper 默认使用conf目录下的zoo.cfg 配置文件, 复制conf/zoo_example.cfg或手工创建: vim conf/zoo.cfg

# 单位时间, 毫秒
tickTime=2000

#集群中follwer节点与leader 节点初始化连接超时时间,单位为tickTime
initLimit=10

#集群中follwer节点与leader节点之前请求-响应超时时间,单位为tickTime
syncLimit=5

#数据操作日志存放目录
dataLogDir=/var/data/zookeeper/datalogs

#客户端连接端口
clientPort=2181

2.3 修改启动日志文件

  • zookeeper 启动时,默认会在你执行命令的当前目录创建一个zookeeper.out 日志文件, 而且zoo.cfg 的配置文件中并不能修改zookeeper启动日志文件位置, 只能通过修改 bin/zkEnv.sh 脚本中的设置
  • 将 bin/zkEnv.sh 中第一行添加变量 ZOO_LOG_DIR 值为: /var/logs/zookeeper/zklogs
ZOO_LOG_DIR=/data/logs/zookeeper

2.4 修改log4j 配置

zookeeper 默认使用log4j 打印日志, log4j 的配置文件在conf 目录下, 可以按需修改log4j 的日志打印信息

3. Zookeeper 服务管理

zookeeper 的相关命令都在bin 目录下, 启动停止是通过zkServer.sh 来完成

3.1 启动zookeeper

$ ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/app/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

3.2 查看zookeeper状态

$ ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/app/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: standalone  # 单例模式

3.3 重启zookeeper

$ ./bin/zkServer.sh restart
ZooKeeper JMX enabled by default
Using config: /opt/app/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /opt/app/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
ZooKeeper JMX enabled by default
Using config: /opt/app/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

3.4 停止zookeeper

$ ./bin/zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /opt/app/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

3.5 查看zookeeper 进程

$ jps -l | grep zookeeper
28054 org.apache.zookeeper.server.quorum.QuorumPeerMain

4. 客户端连接

  • 使用 zkCli.sh 执行命令时, 有两种方式: 交互式方式和非交互式方式, 其中非交互式只能执行单条命令.
  • 默认情况下, zkCli.sh 连接的是本地2181 zk服务器, 可通过-server 参数指定zk服务器的ip 和端口号.

4.1 交互式执行命令

交互式方式中命令提示符格式: 命令提示符由zk服务ip, 端口号, 连接状态, 当前会话执行命令计数器组成.

$ ./zkCli.sh
Connecting to localhost:2181
日志信息...

[zk: localhost:2181(CONNECTED) 0] 

4.2 非交互式执行命令

zkcli.sh 脚本可直接跟需要执行的命令, 无须使用引号包裹, 但只能执行单挑命令.

$ ./zkCli.sh -server 172.22.85.226:2181 ls2 /zookeeper
# 省略启动日志...

[quota]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐