Contents

Zookeeper集群搭建(伪集群)

Zookeeper分布式协调组件

本文将介绍zookeeper伪集群的搭建。

环境说明
  • Ubuntu-64bit-20.04.2
  • java-11.0.10
  • zookeeper-3.7.0

下载zookeeper

zookeeper官方下载

以安装路径/home/micro/zookeeper为例

1
2
$ cd /home/micro/zookeeper
$ wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

解压

1
tar -xzvf apache-zookeeper-3.7.0-bin.tar.gz

创建zookeeper独立目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ # 复制zk
$ cp apache-zookeeper-3.7.0-bin zookeeper01 -rf
$ cp apache-zookeeper-3.7.0-bin zookeeper02 -rf
$ cp apache-zookeeper-3.7.0-bin zookeeper03 -rf
$ # 创建数据文件夹
$ mkdir zookeeper01/data
$ mkdir zookeeper02/data
$ mkdir zookeeper03/data
$ # 依次进入zk目录创建zoo.cfg
$ cp zookeeper01/conf/zoo_sample.cfg zookeeper01/conf/zoo.cfg
$ cp zookeeper02/conf/zoo_sample.cfg zookeeper02/conf/zoo.cfg
$ cp zookeeper03/conf/zoo_sample.cfg zookeeper03/conf/zoo.cfg

指定id

zookeeper启动的时候,会在它的数据目录下寻找id文件,以便知道它自己在集群中的编号。

1
2
3
$ echo 1 > zookeeper01/data/myid
$ echo 2 > zookeeper02/data/myid
$ echo 3 > zookeeper03/data/myid

修改zookeeper配置

以zookeeper01为例

进入配置文件后,需要额外重点关注以下几个配置:

1
2
3
4
5
6
dataDir=/home/micro/zookeeper/zookeeper01/data
# zk服务端口 3个节点分别是2181、2182、2183
clientPort=2181
server.1=IP:1111:2221
server.2=IP:1112:2222
server.3=IP:1113:2223

其他节点的配置文件类似,保证每个zk服务器的数据目录和端口不一致(伪集群需要),集群配置需一致。

zk集群配置格式: server.A=B:C:D[:observer]

  • A 是一个数字,表示这个是第几个zk服务器,这个数字后面集群选举leader的时候会用到
  • B 是这个zk服务器的IP地址,也可以设置为主机名
  • C 是端口号,用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口
  • D 是在leader挂掉时专门用来进行选举leader所用的端口
  • observer 代表这台zk节点只作为观察者存在,不参与leader选举,非必需

启动zookeeper

1
2
3
$ ./zookeeper01/bin/zkServer.sh start ./zookeeper01/conf/zoo.cfg
$ ./zookeeper02/bin/zkServer.sh start ./zookeeper02/conf/zoo.cfg
$ ./zookeeper03/bin/zkServer.sh start ./zookeeper03/conf/zoo.cfg

验证

验证是否启动成功及集群是否生效。

  • 连接其中一个zk节点,并创建数据节点
  • 连接其他zk节点,看数据是否同步到了其他节点。若同步成功,则集群搭建成功

以下是验证集群是否生效用到命令:

  • 启动客户端连接其中一个节点:

    1
    
    $ ./zookeeper01/bin/zkCli.sh -server 127.0.0.1:2181
    
  • ls path 查看节点

    1
    
    $ ls /
    
  • create [-s] [-e] path data acl创建节点

    1
    2
    3
    
    $ # -s 顺序节点
    $ # -e 临时节点
    $ create -e /test 'ceshi'
    
  • get path获取节点数据和更新信息

    1
    
    $ get /test
    
  • delete path删除节点

    1
    
    $ delete /test
    
  • 停止zk节点服务

    1
    
    $ ./zookeeper03/bin/zkServer.sh stop
    

结语

以上是搭建zookeeper伪集群的全过程,真正集群的搭建也均类似。