美文网首页
分布式协调服务中间件zookeeper,集群安装和配置

分布式协调服务中间件zookeeper,集群安装和配置

作者: singleZhang2010 | 来源:发表于2020-12-08 11:38 被阅读0次

    概述

    Zookeeper是一个分布式协调服务中间件,提供的功能包括:配置维护、名字服务、分布式同步、组服务、分布式锁、分布式的ID生成器等。主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成“脏数据”的后果。Zookeeper通过协调服务来对各个系统进行有序的管理,它的三大特性:一致性、可用性、容错性。

    安装和配置

    因为为实验环境,而不是生成环境,所以这里使用windows环境。下载zookeeper3.1.14,并解压

    image.png
    ZooKeeper节点数有以下要求
    • ZooKeeper集群节点数必须是奇数
      因为在ZooKeeper集群中,需要一个主节点,也称为Leader节点。
      主节点是集群通过选举的规则从所有节点中选举出来的。
      在选举的规则中很重要的一条是:要求可用节点数量>总节点数量/2
    • ZooKeeper集群要大于等于3个,至少是3个
      ZooKeeper可以通过一个节点,正常启动和提供服务。但是,一个节点的ZooKeeper服务不能叫作集群,达不到高可用,在正常情况下,搭建ZooKeeper集群,至少需要3个节点

    集群配置

    log日志目录
    在log目录下创建三个节点的日志目录zoo-1、zoo-2、zoo-3
    data数据目录
    在data目录下创建三个节点的数据目录zoo-1、zoo-2、zoo-3
    创建myid文件
    为每一个节点创建一个id文件,即myid文件(没有后缀名)

    • myid文件的唯一作用是记录(伪)节点的编号
    • myid文件是一个文本文件,文件名称为myid
    • myid文件内容为一个数字,表示节点的编号
    • 在myid文件中只能有一个数字,不能有其他的内容
    • myid文件的存放位置,默认处于数据目录下

    ※myid文件中id的值只能是一个数字,id的范围是1~255,表示集群最多的节点个数为255个。

    配置文件
    conf目录下复制三份,分别命名为zoo-1.cfg、zoo-2.cfg、zoo-3.cfg,参考内容如下

    #zoo-1.cfg
    tickTime=4000
    initLimit=10
    syncLimit=5
    dataDir=E:/zookeeper/zookeeper-3.4.14/data/zoo-1
    dataLogDir=E:/zookeeper/zookeeper-3.4.14/log/zoo-1
    clientPort=2181
    server.1=127.0.0.1:28881:38881
    server.2=127.0.0.1:28882:38882
    server.3=127.0.0.1:28883:38883
    #zoo-2.cfg
    tickTime=4000
    initLimit=10
    syncLimit=5
    dataDir=E:/zookeeper/zookeeper-3.4.14/data/zoo-2
    dataLogDir=E:/zookeeper/zookeeper-3.4.14/log/zoo-2
    clientPort=2182
    server.1=127.0.0.1:28881:38881
    server.2=127.0.0.1:28882:38882
    server.3=127.0.0.1:28883:38883
    #zoo-3.cfg
    tickTime=4000
    initLimit=10
    syncLimit=5
    dataDir=E:/zookeeper/zookeeper-3.4.14/data/zoo-3
    dataLogDir=E:/zookeeper/zookeeper-3.4.14/log/zoo-3
    clientPort=2183
    server.1=127.0.0.1:28881:38881
    server.2=127.0.0.1:28882:38882
    server.3=127.0.0.1:28883:38883
    

    ※参数说明:

    • dataDir:数据目录选项,配置为前面准备的数据目录。myid文件处于此目录下
    • dataLogDir:日志目录选项,配置为前面准备的日志目录。如果没有设置该参数,默认将使用和dataDir相同的设置
    • clientPort:表示客户端连接ZooKeeper集群中的节点的端口号,clientPort一般设置为2181(生产环境下clientPort基本都是相同的,实验环境中,因为在本地一台机器上,所以设置了不同端口)
    • 节点信息的配置
      节点信息需要配置集群中所有节点的(id)编号、IP地址和端口号。格式为:server.id=host:port:port
      (1)不能有相同id的节点,需要确保每个节点的myid文件中的id值不同
      (2)每一行“server.id=host:port:port”中的id值,需要与所对应节点的数据目录下的myid文件中的id值保持一致
      (3)每一个配置文件都需要配置全部的节点信息。不仅仅是配置自己的那份,还需要配置所有节点的id、ip、端口
      (4)在每一行“server.id=host:port:port”中,需要配置两个端口。前一个端口(如示例中的28881)用于节点之间的通信,后一个端口(如示例中的38881)用于选举主节点
      在实际的分布式集群模式下,由于不同节点的ip不同,每一行记录中可以配置相同的端口
    • tickTime
      配置单元时间。单元时间是ZooKeeper的时间计算单元,其他的时间间隔都是使用tickTime的倍数来表示
    • initLimit
      节点的初始化时间,该参数用于Follower(从节点)的启动,并完成与Leader(主节点)进行数据同步的时间。
      该参数默认值为10,表示是参数tickTime值的10倍,必须配置且为正整数
    • syncLimit
      心跳最大延迟周期。该参数用于配置Leader节点和Follower节点之间进行心跳检测的最大延时时间,Leader节点会通过心跳检测来确定Follower节点是否存活。
      该参数默认值为5,表示是参数tickTime值的5倍,必须配置且为正整数。

    依次启动zookeeper集群节点

    E:\zookeeper\zookeeper-3.4.14\bin>zkServer-1.cmd
    E:\zookeeper\zookeeper-3.4.14\bin>zkServer-2.cmd
    E:\zookeeper\zookeeper-3.4.14\bin>zkServer-2.cmd
    

    在zookeeper 安装目录bin文件夹下,使用 jps命令查看集群的节点进程数


    image.png

    使用客户端命令

    > zkCli.cmd -server 127.0.0.1:2181
    

    连接成功,信息如下:


    连接成功

    ※ZooKeeper集群需要有1/2以上的节点启动才能完成集群的启动,才能对外提供服务
    ※可以把启动命令做成服务,这样就可以变成后台服务来运行。

    拓展zkClient
    上面我们使用了zkClient命令,连接到服务端后,用help命令可以列出ZooKeeper的所有命令

    ZooKeeper的所有命令
    zk的客户端常用命令:
    zk的客户端常用命令
    使用 get命令获取ZNode节点信息
    > get /
    
    ZNode节点信息

    ZNode节点信息的主要属性介绍


    ZNode节点信息

    相关文章

      网友评论

          本文标题:分布式协调服务中间件zookeeper,集群安装和配置

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