- 下载Zookeeperhttp://zookeeper.apache.org/releases.html
点击 Download -> archive -> stable -> 选择合适版本tar包 - 解压
- 创建conf/zoo.cfg
最重要的两个配置项
- clientPort:连接zookeeper
- dataDir:放置zookeeper快照和交易日志文件(最好不要放在/tmp/目录下,在linux下会自动清理tmp目录下文件)
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
- 配置环境变量
export ZOOKPEEPER_HOME="$HOME/project/apache-zookeeper-3.5.6-bin"
export PATH="$ZOOKPEEPER_HOME/bin:$PATH"
启动zookeeper服务
- 使用
zkServer.sh start
启动服务 - 检查zookeeper日志是否有出错信息
- 检查zookeeper数据文件
- 检查zookeeper是否在端口上监听
- 启动zookeeper server
zkServer.sh start
- 检查异常和出错信息
grep -E -i "((exception) | (error))"
- 检查交易日志文件和快照文件
cd [dataDir]
- 检查是否在指定的端口上监听
netstat -an | ag [port]
使用zkCli.sh
- 创建znode
创建了两个名为app1和app2的znode,并在app1下创建了几个znode。
依次执行下面命令
create /app2
create /app1
create /app1/p_1
create /app1/p_2
create /app1/p_3
实现一个锁
分布式锁要求如果锁的持有者宕机了,锁可以被释放。zookeeper的ephemeral节点恰好具备这样的特性——当ephemeral节点宕机后,这个节点会被从data tree删掉。
打开两个终端,分别运行一个zhCli.sh
终端1:
zkCli.sh
create -e /lock
终端2:
zkCli.sh
create -e /lock
stat -w /lock
在终端1中执行quit
命令,在终端2种会收到一个lock节点被删除的事件。在终端2中执行create -e /lock
,成功。
网友评论