美文网首页zookeeper
[ZooKeeper之四] 集群的搭建和使用

[ZooKeeper之四] 集群的搭建和使用

作者: 小胡_鸭 | 来源:发表于2020-05-22 00:53 被阅读0次

    一、ZooKeeper 的两种运行模式

      ZooKeeper 服务端有两种运行模式:一种是独立模式,即只有一台服务器,一旦宕机,就无法提供服务;另一种是仲裁模式,即由多个互相通信的服务器组成的服务集群,这样可以避免单点故障,一台服务器挂了,客户端可以连接集群中另一台服务器,提高了可靠性。


    Q1:使用 ZooKeeper 集群有什么优点?

    (1)可靠的 ZooKeeper 服务

      避免单点故障,在不影响对外提供协调服务的前提下可以容忍集群中部分机器出故障。

    (2)只要集群中大多数机器准备好了,就可以使用服务

      通过前面 [ZooKeeper之二] ZooKeeper 基础和架构 的介绍可以知道,为了避免脑裂和保障全局一致性,ZooKeeper 对外提供服务前需要先选出一个 Leader,而 Leader 需要有一半以上数量的服务器支持,这是个限制但也带来了好处,一方面允许部分机器故障,另一方面在机器不故障的情况下,也加快对写操作事务的处理,即只要有一半以上的机器同意了事务,那么 Leader 就会发出提交事务的指令,最终整个集群中的机器都能达到一致性。

    Q2:要搭建一个 ZooKeeper 集群,服务器数量上有什么建议?

      一般搭建一个集群,都是3台机器,如果有再多的机器,那么建议用奇数个服务器,因为这样可以容忍更多的服务器故障,提高集群的可用性。比如,一个4台服务器的集群,选举 Leader 的法定数量是3,意味着最多容忍一台服务器故障;如果集群机器数量是5,选举 Leader 的法定数量还是3,但是可以容忍2台服务器故障。

      除此之外,虽然可以在同一台服务器上通过使用不同端口来达到搭建集群中多个节点的目的,但是假如服务器发生了故障,集群就团灭了,这样就失去了搭建集群的意义了,所以还是每个集群节点都部署在单独的物理机上。

    二、ZooKeeper 集群搭建

      在 [ZooKeeper之三] 使用 ZooKeeper 入门 的第二小节中,简单介绍了 ZooKeeper 的基本配置,同样集群也是通过配置文件来配置的,配置格式如下:

    server.id=host:port1:port2
    

    id:通过在各自的 dataDir 目录下创建一个名为 myid 的文件来为每台机器赋予一个服务器id
      myid 文件中只有一行只包含机器id的文本,id在集群中必须是唯一的,其值应该在1~255之间。
    port1:仲裁通信端口,即跟 Leader 通信的端口,主要发生在处理集群事务时用到。
    port2:选举通信端口,即选举时跟集群中的其他所有节点通信的端口,因为选举时需要互相发提案并互
       相反馈投票结果。

    1、在conf目录下创建多个 cfg 文件


    zoo1.cfg
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=D:/soft/zookeeper-3.4.14/data/z1
    clientPort=2181
    server.1=127.0.0.1:2881:3881
    server.2=127.0.0.1:2882:3882
    server.3=127.0.0.1:2883:3883
    

    zoo2.cfg

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=D:/soft/zookeeper-3.4.14/data/z2
    clientPort=2182
    server.1=127.0.0.1:2881:3881
    server.2=127.0.0.1:2882:3882
    server.3=127.0.0.1:2883:3883
    

    zoo3.cfg

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=D:/soft/zookeeper-3.4.14/data/z3
    clientPort=2183
    server.1=127.0.0.1:2881:3881
    server.2=127.0.0.1:2882:3882
    server.3=127.0.0.1:2883:3883
    

    2、创建 myid 文件


    myid(D:\soft\zookeeper-3.4.14\data\z1\myid)
    1
    

    3、启动各个节点

      当第一个节点启动起来之后,可以看到尝试连接集群中的其他节点会报错,并会不断尝试


      当集群中的其他节点启动起来时,前面已经启动起来的节点会收到一个通知,如果此时集群中已启动的节点数量超过一半,则会触发选举,选举前节点为 LOOKING 状态,选举后主节点为 LEADING 状态,其他节点为 FOLLOWING 状态,选举结束后,该集群就可以对外提供服务了,启动中或者还没启动的节点会在启动之后从主节点同步数据。




    三、客户端使用集群服务

      对于客户端来说,连接的 ZooKeeper 集群用的是一个连接串,如上面三个节点构成的集群的连接串为 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183,客户端连接集群建立会话时,会随机找一台节点,如果该节点不可用或使用过程中没有响应超时,就会尝试连接集群中的另外一个节点,如果成功连接,就会将之前的会话转移到新的节点上。

    相关文章

      网友评论

        本文标题:[ZooKeeper之四] 集群的搭建和使用

        本文链接:https://www.haomeiwen.com/subject/udsxahtx.html