• 第2关:伪分布式体验及分布式安装配置


    服务器leader选举

    为进一步了解ZooKeeperleader选举过程,本节实训利用服务器的关闭启动,观察服务器的leader产生过程。利用以下命令查看当前服务器节点的状态(/xxx为安装目录):

    ./xxx/bin/zkServer.sh status

    当仅启动1个服务器节点,服务器状态如下:

     

    服务器通信报错,集群未运行(3个节点,法定人数至少为2)。

    当启动第2个节点后,分别查看第1个和第2个服务器状态:

     

    可以发现,第1个服务器转换为follower,第2个服务器转换为leader(可对比上一关启动时leader选举过程)。

    当启动第3个节点后,由于已经存在了leader,那么第3个节点应该为follower,查看状态如下:

     

    此时,关闭第2个节点,即模拟leader崩溃。那么按照上一关所述,myid较大的节点成为leader,即第3个节点成为leader,关闭第2个节点并查看第3个节点状态:

     

    客户端连接服务器

    客户端连接多个服务器与连接单个服务器命令相同,使用以下命令连接:

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

    其中,每1个逗号为1个服务器(IP + clientPort)。

    可以通过启动命令行,看到当前客户端具体连接到哪一个服务器。如下图所示:

     

    如果连接的127.0.0.1:2181服务器节点(即第1个服务器节点)崩溃,是否会拒绝连接。关闭第1个服务器节点,观察客户端行为:

     

     

    可以发现,当前连接的服务器崩溃或失去连接时,客户端会自动连接及其中其他服务器,从而保证ZooKeeper服务可用。

    当继续关闭第127.0.0.1:2182服务器节点(即第2个服务器节点),是否会拒绝连接。关闭第2个服务器节点,观察客户端行为:

     

    当存活服务器小于法定人数时,服务器会拒绝连接,即使当前第3个节点仍然存活。

    分布式配置

    分布式配置与伪分布式配置,主要有以下区别,其余配置均相同:

    • 伪分布式所使用的端口必须不同,分布式端口可以相同。

    • 伪分布式统一使用一个IP,分布式需要根据当前网络IP配置。

    以下为分布式与伪分布式配置对比(以3个服务器节点为例):

    配置伪分布式分布式
    clienPort2181;2182;21832181;2181;2181
    server.1127.0.0.1:2888:3888xxx.xxx.xxx.xxx:2888:3888
    server.2127.0.0.1:2889:3889xxx.xxx.xxx.xxx:2888:3888
    server.3127.0.0.1:2890:3890xxx.xxx.xxx.xxx:2888:3888

    编程要求

    本关任务是使用命令行,按顺序完成以下操作:

    • 在前一关的基础上,将客户端连接服务器(IP:127.0.0.1,端口分别为218121822183)。

    • 观察当前客户端连接的服务器。

    • 创建/quorum_test节点,节点数据为quorum_test

    • 断开客户端与服务器连接(quit命令)。

    第一关操作成功基础上操作

    启动节点

    1. /opt/zookeeper-3.4.12/bin/zkServer.sh start
    2. /opt/zookeeper-3.4.12-01/bin/zkServer.sh start
    3. /opt/zookeeper-3.4.12-02/bin/zkServer.sh start
    4. /opt/zookeeper-3.4.12-03/bin/zkServer.sh start

     

    1. 客户端连接服务器
    2. zkCli.sh -server 127.0.0.1:2181
    3. 创建节点
    4. create /quorum_test "quorum_test"
    5. 关闭节点
    6. quit
    7. zkCli.sh -server 127.0.0.1:2182
    8. create /quorum_test "quorum_test"
    9. quit
    10. zkCli.sh -server 127.0.0.1:2183
    11. create /quorum_test "quorum_test"
    12. quit

     

     

  • 相关阅读:
    如何提高UDP传输的可靠性(三大方式RUDP、RTP、UDT)
    Matlab绘制散点的95%置信区间图
    vue2中使用ueditor百度富文本,并支持插入公式
    wsl安装gpu版mindspore(二)
    docker安装RabbitMQ及安装延迟插件
    进程和线程的区别
    女鹅冬天的第一件羽绒服,当然要时尚经典的
    Redhat(9)-磁盘分区-parted-swap-lvm-stratis-vdo-tuned
    python面试常考题
    408 | 【2017年】计算机统考真题 自用回顾知识点整理
  • 原文地址:https://blog.csdn.net/qq_61604164/article/details/127886191