1. 环境准备
zookeeper需要java,所以先下载java.如果不是要求特别严格,可以下载openjdk
yum install -y java-1.8.0-openjdk.x86_64
也可以看我之前的文章自己手动安装jdk
2. 下载解压zookeeper
下载
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
解压
tar -xvf apache-zookeeper-3.6.3-bin.tar.gz
重命名
mv apache-zookeeper-3.6.3-bin zookeeper363
3. 创建文件夹
创建三个文件夹,代表三个服务器
mkdir -p server1 server2 server3
为 3 个节点创建各自的目录
# 数据目录
mkdir -p data/zk1 data/zk2 data/zk3
# 日志目录
mkdir -p logs/zk1 logs/zk2 logs/zk3
如图
每个节点创建 myid 文件并分别填写1、2、3
cd data/zk1
vim myid
# 按i,进入输入模式,输入文本“1”,按esc退出输入模式,按wq保存并退出 不懂百度一下vim咋用
cd ../../
另外两个以此类推最终如下图
4. 编辑配置文件
进入配置文件夹
cd zookeeper363/conf/
复制 zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg
vim zoo.cfg
# 单元时间(ms),zk中的时间间隔都是使用tickTime的倍数来表示
tickTime=2000
# 节点的初始化时间,Follower(从节点)启动并完成与Leader(主节点)数据同步的时间
initLimit=10
# 心跳最大延迟时间,用于主节点和从节点之间的心跳检测
syncLimit=5
# 数据目录选项
dataDir=/king/zk/data/zk1
# 日志目录选项
dataLogDir=/king/zk/logs/zk1
# 客户端连接节点的端口号
clientPort=2181
# 集群中的所有节点信息,每个节点都需要知道整个集群是由哪些节点组成的
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
5. 将编辑好的zookeeper复制到对应的 server 文件夹下
cp -r zookeeper363/ server1/
cp -r zookeeper363/ server2/
cp -r zookeeper363/ server3/
6. 编辑server2 server3 下的zoo.cfg
server2 如下
[root@VM-16-8-centos zk]# cat server2/zookeeper363/conf/zoo.cfg
# 单元时间(ms),zk中的时间间隔都是使用tickTime的倍数来表示
tickTime=2000
# 节点的初始化时间,Follower(从节点)启动并完成与Leader(主节点)数据同步的时间
initLimit=10
# 心跳最大延迟时间,用于主节点和从节点之间的心跳检测
syncLimit=5
# 数据目录选项
dataDir=/king/zk/data/zk2
# 日志目录选项
dataLogDir=/king/zk/logs/zk2
# 客户端连接节点的端口号
clientPort=2182
# 集群中的所有节点信息,每个节点都需要知道整个集群是由哪些节点组成的
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
server2 如下
server2 如下
[root@VM-16-8-centos zk]# cat server3/zookeeper363/conf/zoo.cfg
# 单元时间(ms),zk中的时间间隔都是使用tickTime的倍数来表示
tickTime=2000
# 节点的初始化时间,Follower(从节点)启动并完成与Leader(主节点)数据同步的时间
initLimit=10
# 心跳最大延迟时间,用于主节点和从节点之间的心跳检测
syncLimit=5
# 数据目录选项
dataDir=/king/zk/data/zk3
# 日志目录选项
dataLogDir=/king/zk/logs/zk3
# 客户端连接节点的端口号
clientPort=2183
# 集群中的所有节点信息,每个节点都需要知道整个集群是由哪些节点组成的
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
7. 启动zookeeper
server1/zookeeper363/bin/zkServer.sh start
server2/zookeeper363/bin/zkServer.sh start
server3/zookeeper363/bin/zkServer.sh start
8. 查看服务状态
jsp
zkServer.sh status
server1/zookeeper363/bin/zkServer.sh status
server2/zookeeper363/bin/zkServer.sh status
server3/zookeeper363/bin/zkServer.sh status
9. 使用
用 zkCli 连接上 ZooKeeper 服务:
server1/zookeeper363/bin/zkCli.sh -server 127.0.0.1:2181
10. 常用命令
# 服务器启动关闭
./zkServer.sh start # 启动Zookeeper服务
./zkServer.sh stop # 关闭Zookeeper服务
./zkServer.sh status # 查看Zookeeper状态信息
# 客户端连接服务器
./zkCli.sh -server <ip>:<port> # 指定连接某个Zookeeper服务器
# 客户端操作命令
ls <path> # 查看指定路径的节点
ls -w <path> # 监听指定节点子节点的数量变化(只监听一次)
create <path> [data] # 创建一个永久节点
create -s <path> [data] # 创建一个有序的永久节点
create -e <path> [data] # 创建一个临时节点
get <path> # 获取指定路径的data
get -w <path> # 监听指定节点data的变化(只监听一次)
delete <path> # 删除没有子节点的空节点
deleteall <path> # 删除一个节点以及其下面的所有子节点