Zookeeper实战之单机集群模式

2023-05-13,,

前一篇文章介绍了Zookeeper的单机模式的安装及应用,但是Zookeeper是为了解决分布式应用场景的,所以通常都会运行在集群模式下。今天由于手头机器不足,所以今天打算在一台机器上部署三个Zookeeper服务来组成一个Zookeeper集群。这里解压Zookeeper的安装包到/opt目录下,这里用三个目录来代表三个Zookeeper实例,分别是/opt/zookeeper1,/opt/zookeeper2和/opt/zookeeper3.

1. 首先编辑每个Zookeeper目录下的conf/zoo.cfg文件。三个配置配置文件的内容分别如下

    $ cat /opt/zookeeper1/conf/zoo.cfg
    tickTime=2000
    dataDir=/opt/zookeeper1/data
    clientPort=2181
    initLimit=10
    syncLimit=5
    server.1=127.0.0.1:2881:3881
    server.2=127.0.0.1:2882:3882
    server.3=127.0.0.1:2883:3883
    $ cat /opt/zookeeper2/conf/zoo.cfg
    tickTime=2000
    dataDir=/opt/zookeeper2/data
    clientPort=2182
    initLimit=10
    syncLimit=5
    server.1=127.0.0.1:2881:3881
    server.2=127.0.0.1:2882:3882
    server.3=127.0.0.1:2883:3883
    $ cat /opt/zookeeper3/conf/zoo.cfg
    tickTime=2000
    dataDir=/opt/zookeeper3/data
    clientPort=2183
    initLimit=10
    syncLimit=5
    server.1=127.0.0.1:2881:3881
    server.2=127.0.0.1:2882:3882
    server.3=127.0.0.1:2883:3883

其中有几点需要注意
* dataDir: 三个Zookeeper实例的dataDir目录要区别开,这里分别指定到各个Zookeeper实例目录下的data目录。
* clientPort: 定义Zookeeper客户端连接Zookeeper服务端时使用的端口,这里因为是在一台机器上做的集群,所以三个实例的端口要区分开。
* server.: 定义Zookeeper集群的各个实例的的ip和端口,这里因为是在一台机器上做的集群,所以IP都定义的是127.0.0.1,但是后面的端口要区分开。

2. 创建data目录和实例id文件

    mkdir /opt/zookeeper1/data
    mkdir /opt/zookeeper2/data
    mkdir /opt/zookeeper3/data
    echo 1 > /opt/zookeeper1/data/myid
    echo 2 > /opt/zookeeper2/data/myid
    echo 3 > /opt/zookeeper3/data/myid

这里要注意需要在每个Zookeeper的dataDir目录下创建myid文件,内容是记录各个Zookeeper的实例ID。

3. 启动Zookeeper服务
分别进入各个Zookeeper的bin目录,然后运行“./zkServer.sh start”来启动一个Zookeeper服务。

4. 客户端连接
随便进入一个Zookeeper的bin目录,然后运行下面的命令来分别连接Zookeeper服务。

    ./zkCli.sh -server 127.0.0.1:2181
    ./zkCli.sh -server 127.0.0.1:2182
    ./zkCli.sh -server 127.0.0.1:2183

在其中的一个client上创建一个znode节点

    create /mykey myvalue

然后在别的client上查看新创建zonde节点

    get /mykey

5. 查看Zookeeper状态
启动Zookeeper之后,由于Zookeeper自己会有一套leader的选举算法,所以此时如果想知道那个Zookeeper是leader可以在各个Zookeeper的bin目录运行“./zkServer.sh status”命令来查看。

如果是Leader

    $ ./zkServer.sh status
    JMX enabled by default
    Using config: /opt/zookeeper1/bin/../conf/zoo.cfg
    Mode: leader

如果不是Leader

    $ ./zkServer.sh status
    JMX enabled by default
    Using config: /opt/zookeeper3/bin/../conf/zoo.cfg
    Mode: follower

此时可以把leader的那个节点停了,然后再看查看其它两个Zookeeper实例,此时剩下的两个Zookeeper实例就会再选举出一个leader。

Zookeeper实战之单机集群模式的相关教程结束。

《Zookeeper实战之单机集群模式.doc》

下载本文的Word格式文档,以方便收藏与打印。