基于3.4.x 版本进行zookeeper 集群搭建

发布时间 2023-04-02 19:40:25作者: 延续-YX

搭建一主二从 三个节点 zookeeper 集群环境

*** 使用 zk 的 3.4.13 的版本 ***
注意:对于 zk , 3.4 版本和3.5 版本集群环境是有一些区别的。
3.5 版本以后使用的是动态集群模式,支持集群的动态扩缩容。(可以在不重启的情况下,实现集群的扩容,缩容)
本集群搭建使用的是3.4 的 版本,后面后根据3.5 版本再次进行集群环境的搭建动态扩缩容。

解压安装包

# 依次在三台centos7 中进行zookeeper 安装包的解压
tar -zxvf zookeeper-3.4.13.tar.gz -C  /usr/local
# 192.168.1.41
drwxr-xr-x. 10  501 games 4096 6月  30 2018 zookeeper3.4

# 192.168.1.42
drwxr-xr-x. 10  501 games 4096 6月  30 2018 zookeeper3.4

# 192.168.1.43
drwxr-xr-x. 10  501 games 4096 6月  30 2018 zookeeper3.4

ZK 目录结构

zk 的目录结构

  • bin 目录:该目录中包含启动脚本,客户端连接的脚本等等。
  • conf 目录:主要是一些配置文件
drwxr-xr-x.  2 501 games     223 4月   1 12:04 bin
-rw-r--r--.  1 501 games   91400 6月  29 2018 build.xml
drwxr-xr-x.  2 501 games      92 4月   2 03:45 conf
drwxr-xr-x. 10 501 games     130 4月   1 12:02 contrib
drwxr-xr-x.  2 501 games    4096 4月   1 12:02 dist-maven
drwxr-xr-x.  6 501 games    4096 4月   1 12:02 docs
-rw-r--r--.  1 501 games    1709 6月  29 2018 ivysettings.xml
-rw-r--r--.  1 501 games    8502 6月  29 2018 ivy.xml
drwxr-xr-x.  4 501 games    4096 4月   1 12:02 lib
-rw-r--r--.  1 501 games   11938 6月  29 2018 LICENSE.txt
-rw-r--r--.  1 501 games    3132 6月  29 2018 NOTICE.txt
-rw-r--r--.  1 501 games    1585 6月  29 2018 README.md
-rw-r--r--.  1 501 games    1770 6月  29 2018 README_packaging.txt
drwxr-xr-x.  5 501 games      47 4月   1 12:02 recipes
drwxr-xr-x.  8 501 games     211 6月  29 2018 src
-rw-r--r--.  1 501 games 1508639 6月  29 2018 zookeeper-3.4.13.jar
-rw-r--r--.  1 501 games     833 6月  30 2018 zookeeper-3.4.13.jar.asc
-rw-r--r--.  1 501 games      33 6月  29 2018 zookeeper-3.4.13.jar.md5
-rw-r--r--.  1 501 games      41 6月  29 2018 zookeeper-3.4.13.jar.sha
# bin 目录中主要的脚本文件
-rwxr-xr-x 1 502 games  232 5月   4 2018 README.txt
-rwxr-xr-x 1 502 games 2067 2月   7 2020 zkCleanup.sh
-rwxr-xr-x 1 502 games 1158 2月  10 2020 zkCli.cmd
-rwxr-xr-x 1 502 games 1621 2月   7 2020 zkCli.sh
-rwxr-xr-x 1 502 games 1766 2月   7 2020 zkEnv.cmd
-rwxr-xr-x 1 502 games 3690 1月  31 2020 zkEnv.sh
-rwxr-xr-x 1 502 games 1286 1月  31 2020 zkServer.cmd
-rwxr-xr-x 1 502 games 4573 2月   7 2020 zkServer-initialize.sh
-rwxr-xr-x 1 502 games 9386 2月   7 2020 zkServer.sh
-rwxr-xr-x 1 502 games  996 10月  3 2019 zkTxnLogToolkit.cmd
-rwxr-xr-x 1 502 games 1385 2月   7 2020 zkTxnLogToolkit.sh

# conf 目录中包含的配置文件
-rw-r--r--. 1  501 games  535 6月  29 2018 configuration.xsl
-rw-r--r--. 1  501 games 2161 6月  29 2018 log4j.properties
-rw-r--r--. 1  501 games  922 6月  29 2018 zoo_sample.cfg

ZK 常用的命令

# zk 服务启动
./zkServer.sh start

# zk 服务重启
./zkServer.sh restart

# zk 服务停止
./zkServer.sh stop

# zk 的状态
./zkServer.sh status

进行集群环境的配置

以 192.168.1.41 zk 节点为例子。

后面的其他节点直接重复下面的步骤即可。

基于 zoo_sample.cfg 配置文件进行修改。

zoo_sample.cfg 配置文件是 zk 提供给我们的一个样例文件。
但是 zk 启动运行需要使用的文件是 zoo.cfg。因此,我们一般是直接复制 zoo_sample.cfg 该文件并重命名为zoo.cfg 。

cp zoo_sample.cfg zoo.cfg

修改 zoo.cfg 文件

# 配置一些超时时间参数
tickTime=2000
initLimit=10
syncLimit=5

# 配置data 数据文件的目录
dataDir=/zk/zookeeper

# 配置客户端连接的端口
clientPort=2181

# 配置集群环境中的节点
server.1=192.168.1.41:2888:3888
server.2=192.168.1.42:2888:3888
server.3=192.168.1.43:2888:3888

在上面的配置中,集群和单机 环境的配置主要是 集群环境中多了三行配置。

server.1=192.168.1.41:2888:3888
server.2=192.168.1.42:2888:3888
server.3=192.168.1.43:2888:3888

这几行的配置,主要描述了集群中的节点信息,以及服务端各个节点之间互相通信的端口号。

创建 数据目录,并创建 myid 文件

在 zoo.cfg 文件中,我们定义了:

dataDir=/zk/zookeeper

该配置主要是zk 的数据存放的位置。我们需要将该目录结构手动创建出来。

  • 该目录中会存放zk 的数据。
  • 该目录中还会存放zk 启动后的进程ID pid 文件。
  • 该目录中需要将myid 文件进行创建。我们需要在该目录中手动创建 myid 文件。
mkdir /zk/zookeeper -p
cd /zk/zookeeper
echo 1 >myid

至此,我们就完成了 192.168.1.41 节点的全部配置。

后面,我们重复上面的步骤,依次进行 192.168.1.42、192.168.1.43 节点的配置即可。

注意:在进行其他节点的配置的时候,所有步骤基本相同。但是注意 myid 文件中的内容。

# 192.168.1.42 节点内容
echo 2 >myid
# 192.168.1.43 节点内容
echo 3 >myid

集群环境启动

zk 集群环境启动和 单机版本的 启动基本没有区别。只需要指定 zkServer.sh 脚本即可。

# 启动192.168.1.41 zk
./zkServer.sh start

# 启动192.168.1.42 zk
./zkServer.sh start

# 启动192.168.1.43 zk
./zkServer.sh start

至此,我们就完成了 3.4.x 版本 zk 集群环境的搭建。

# 192.168.1.41 查看zk的状态,当前节点为 follower 的状态
[root@bogon bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper3.4/bin/../conf/zoo.cfg
Mode: follower


# 192.168.1.42 查看zk的状态,当前节点为 leader 的状态
[root@bogon bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4/bin/../conf/zoo.cfg
Mode: leader


# 192.168.1.43 查看zk的状态,当前节点为 follower 的状态
[root@bogon bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4/bin/../conf/zoo.cfg
Mode: follower