单机模拟搭建 Zookeeper 集群

1. 准备

官网下载:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

注意:

  • zookeeper 从 3.5 版本以后,命名就发生了改变
  • apache-zookeeper-X.X.X.tar.gz 这样命名的,都是未编译的;如果我们下载的是未编译的包,那么在启动时会报错:找不到或无法加载主类
  • apache-zookeeper-X.X.X-bin.tar.gz 这样命名的,才是已编译的包,我们要下载的是这种已编译的

2. 文件结构

此次搭建的 zookeeper 集群,端口分别为:2181,2182,2183

在自己想要安装的目录中新建 2181,2182,2183 三个文件夹,将刚刚下载的压缩包分别解压在上述的3个目录下

然后在每个文件夹下新建用于存储数据的 data 目录和存储日志数据的 dataLog 目录,如下:
单机模拟搭建 Zookeeper 集群_第1张图片

3. 修改配置文件

进入 config 目录,拷贝 zoo_sample.cfg 文件,将其重命名为 zoo.cfg

修改配置:

  • 2181
# 配置数据存储的目录
dataDir=/home/zookeeper/2181/data

# 配置日志存储的目录
dataLogDir=/home/zookeeper/2181/dataLog

# 端口
clientPort=2181

# 集群配置
server.1=192.168.56.129:2888:3888
server.2=192.168.56.129:2788:3788
server.3=192.168.56.129:2688:3688
  • 2182
# 配置数据存储的目录
dataDir=/home/zookeeper/2182/data

# 配置日志存储的目录
dataLogDir=/home/zookeeper/2182/dataLog

# 端口
clientPort=2182

# 集群配置
server.1=192.168.56.129:2888:3888
server.2=192.168.56.129:2788:3788
server.3=192.168.56.129:2688:3688
  • 2183
# 配置数据存储的目录
dataDir=/home/zookeeper/2183/data

# 配置日志存储的目录
dataLogDir=/home/zookeeper/2183/dataLog

# 端口
clientPort=2183

# 集群配置
server.1=192.168.56.129:2888:3888
server.2=192.168.56.129:2788:3788
server.3=192.168.56.129:2688:3688

如果大家不想关闭防火墙的话,记得要开放集群配置中的6个端口

firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
...

4. 生成 myid 文件

分别进入 2181,2182,2183 中的 data 文件夹

新建名为 myid 的文件

2181 data 文件夹中的 myid 文件的值为 1
2182 data 文件夹中的 myid 文件的值为 2
2183 data 文件夹中的 myid 文件的值为 3

其实只要每个 myid 文件中的值不一样即可

5. 启动

进入放置 2181,2182,2183 的文件夹
分别输入(看自己具体的文件夹叫什么名字)

2181/zookeeper-3.6.3/bin/zkServer.sh start
2182/zookeeper-3.6.3/bin/zkServer.sh start
2183/zookeeper-3.6.3/bin/zkServer.sh start

启动效果并使用 jps 命令查看:

单机模拟搭建 Zookeeper 集群_第2张图片
当启动完上述三个节点,再输入 jps 命令,可以看到有三个 QuorumPeerMain


启动完上述的3个节点后,我们可以查看三个节点中的哪个成为了主节点
输入:

2181/zookeeper-3.6.3/bin/zkServer.sh status

单机模拟搭建 Zookeeper 集群_第3张图片

2182/zookeeper-3.6.3/bin/zkServer.sh status

单机模拟搭建 Zookeeper 集群_第4张图片

2183/zookeeper-3.6.3/bin/zkServer.sh status

单机模拟搭建 Zookeeper 集群_第5张图片

Mode 为 leader 的,就意味着被选举为主节点

6. 编写 shell 脚本

当完成上述步骤后,Zookeeeper 集群就已经搭建好了
但是,不知道大家有没有觉得,每一个节点启动都要输入一次命令,关闭也要一个个关闭,略显麻烦

我们可以编写个简单的 shell 脚本来一键启动和关闭集群

进入 /usr/bin 目录,新建 zookeeper.sh 文件
shell 脚本如下:

#!/bin/bash

case $1 in
"start"){
        /home/zookeeper/2181/zookeeper-3.6.3/bin/zkServer.sh start
	/home/zookeeper/2182/zookeeper-3.6.3/bin/zkServer.sh start
        /home/zookeeper/2183/zookeeper-3.6.3/bin/zkServer.sh start
}
;;
"stop"){
        /home/zookeeper/2181/zookeeper-3.6.3/bin/zkServer.sh stop
	/home/zookeeper/2182/zookeeper-3.6.3/bin/zkServer.sh stop
        /home/zookeeper/2183/zookeeper-3.6.3/bin/zkServer.sh stop
}
;;
"status"){
	/home/zookeeper/2181/zookeeper-3.6.3/bin/zkServer.sh status
	/home/zookeeper/2182/zookeeper-3.6.3/bin/zkServer.sh status
        /home/zookeeper/2183/zookeeper-3.6.3/bin/zkServer.sh status
}
;;
esac

然后赋予文件权限

chmod 777 zookeeper.sh

编写好脚本后,以后想一键启动集群,只需进入 /usr/bin/ 目录,输入如下命令:

./zookeeper.sh start

单机模拟搭建 Zookeeper 集群_第6张图片

# 查看状态
./zookeeper.sh status

# 关闭集群
./zookeeper.sh stop

你可能感兴趣的:(第三方,zookeeper,分布式,云原生)