ZooKeeper 的安装包括单机模式安装,以及集群模式安装。
单机模式较简单,是指只部署一个 zk 进程,客户端直接与该 zk 进程进行通信。在开发测试环境下,通常来说没有较多的物理资源,因此我们常使用单机模式。
当然在单台物理机上也可以部署集群模式,但这会增加单台物理机的资源消耗。故在开发环境中,我们一般使用单机模式。
注意:生产环境下不可用单机模式,这是由于无论从系统可靠性还是读写性能,单机模式都不能满足生产的需求。
1、单机安装
安装JDK
由于 zookeeper 依赖 java 环境,所以我们需要安装 jdk,官网建议最低安装 jdk 1.8 版本
# 安装JDK
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
# 配置环境变量
vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
source /etc/profile
安装ZooKeeper
# 下载软件ZooKeeper
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2.tar.gz
--no-check-certificate
# 解压软件包
tar -zxvf apache-zookeeper-3.7.2.tar.gz -C /usr/local
# 创建内存数据库快照存放目录
mkdir -p /data/zk/data
# 创建事务日志存放目录
mkdir -p /data/zk/datalog
注意:如果不配置 datalog,那么事务日志也会写在 data 目录中。这样会严重影响zk 的性能。因为在 zk 吞吐量很高的时候,产生的事务日志和快照日志太多。
配置文件
# 复制一份配置文件
cd /usr/local/apache-zookeeper-3.7.2/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
#---------------------------------------配置文件-------------------------------
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk/data
dataLogDir=/data/zk/datalog
clientPort=2181
#---------------------------------------配置文件-------------------------------
tickTime | 基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime。 |
initLimit | 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是10*2000=20 秒 。 |
syncLimit | 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒。 |
dataDir | 是存放内存数据库快照的位置(存储数据的位置),默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。 |
dataLogDir | 是事务日志目录 。用于配置服务器存储事务日志文件的目录,默认值 dataDir,但是建议将两个目录分别配置,防止磁盘的并发读写,影响服务器性能。可将其配置在一个单独的磁盘上。 |
clientPort | 是 client 连接的端口。不同的服务器可以设置不同的监听端口,默认是 2181。 |
配置环境变量
这里必须是修改配置文件添加 path 环境变量,不然启动报错
vim /etc/profile
#------------------------------------------------------------
export ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.7.2
export PATH=$PATH:$ZOOKEEPER_HOME/bin
#------------------------------------------------------------
source /etc/profile
启动服务
# 启动zooKeeper
zkServer.sh start
# 查看java进程
jps -m
# 查看 ZooKeeper 的状态
zkServer.sh status
# 连接zookeeper客户端
zkCli.sh
# 或者
zkCli.sh -server localhost:2181
2、常用命令
查看节点
# 查看当前 ZooKeeper 中所包含的内容
ls /
创建节点
# 创建一个新的 znode
create /zkPro myData
# 再次查看内容
ls /
获取节点内容
# 获取的 znode 中的字符串
get /zkPro
修改节点内容
set /zkPro myData2
get /zkPro
删除节点
delete /zkPro
ls /