• Zookeeper



    title: “Zookeeper
    createTime: 2022-01-05T11:36:51+08:00
    updateTime: 2022-01-05T11:36:51+08:00
    draft: false
    author: “name”
    tags: [“zookeeper”]
    categories: [“install”]
    description: “测试的”

    zookeeper集群搭建

    一、下载zookeeper

    • 进入将要安装的目录
    • cd /home/htga/zookeeper
    • wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

    二、解压

    • tar -zxvf zookeeper-3.4.14.tar.gz

    三、复制配置文件名称

    • cd zookeeper-3.4.14/conf/
    • cp zoo_sample.cfg zoo.cfg

    四、修改配置文件

    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just
    # example sakes.
    dataDir=/zookeeper/data/ #修改数据存放位置
    # the port at which the clients will connect
    dataLogDir=/zookeeper/logs #修改日志存放位置
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    #增加集群信息
    server.1=192.168.200.128:2888:3888
    server.2=192.168.200.129:2888:3888
    server.3=192.168.200.130:2888:3888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    五、设置每个节点的id

    • 在zoo.cfg中对应的 dataDir 目录下执行
    • echo 1 > myid 注意myid要一摸一样 1这个对应 zoo.cfg 中 集群信息 server.1

    六、复制整个software目录到其他节点上

    • scp -r zookeeper/ 192.168.200.129:/home/htga/
    • scp -r zookeeper/ 192.168.200.130:/home/htga/
    • 依次修改129和130机器上的myid
    • echo 2 > myid
    • echo 3 > myid

    七、关闭防火墙

    • systemctl stop firewalld.service #停止firewall
    • systemctl disable firewalld.service #禁止firewall开机启动
    • firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

    八、把zookeeper目录添加到环境变量

    • export ZOOKEEPER_HOME=/zookeeper/zookeeper-3.4.14/
    • export PATH= Z O O K E E P E R H O M E / b i n : ZOOKEEPER_HOME/bin: ZOOKEEPERHOME/bin:PATH
    • export PATH

    九、启动zk集群

    • zookeeper-3.4.14至少启动3台节点,集群才能正常运行,一般zk集群搭建奇数节点数
    • ./bin/zkServer.sh start

    十、查看zookeeper运行状态

        [root@node2 zookeeper]# zkServer.sh status
        ZooKeeper JMX enabled by default
        Using config: //software/zookeeper-3.4.14/bin/../conf/zoo.cfg
        Mode: leader
    
    • 1
    • 2
    • 3
    • 4

    集群测试

    • 参考文章末尾的地址

    相关命令

    #启动ZK服务: 
    bin/zkServer.sh start
    #停止ZK服务: 
    bin/zkServer.sh stop
    #重启ZK服务: 
    bin/zkServer.sh restart
    #查看ZK服务状态: 
    bin/zkServer.sh status
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    zoo.cfg配置参数解读

    Server.1=192.168.200.128:2888:3888。
    
    1 是一个数字,表示这个是第几号服务器;
    
    192.168.200.128 是这个服务器的ip地址;
    
    2888 是这个服务器与集群中的Leader服务器交换信息的端口;
    
    3888 是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
    
    集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
    
    1)tickTime=2000:通信心跳数
    
    tickTime:通信心跳数,Zookeeper服务器心跳时间,单位毫秒
    
    Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
    
    它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)
    
    2)initLimit=10:LF初始通信时限
    
    集群中的follower跟随者服务器(F)与leader领导者服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。
    
    投票选举新leader的初始化时间
    
    Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。
    
    Leader允许F在initLimit时间内完成这个工作。
    
    3)syncLimit=5:LF同步通信时限
    
    集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,
    
    Leader认为Follwer死掉,从服务器列表中删除Follwer。
    
    在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。
    
    如果L发出心跳包在syncLimit之后,还没有从F那收到响应,那么就认为这个F已经不在线了。
    
    4)dataDir:数据文件目录+数据持久化路径
    
    保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。
    
    5)clientPort=2181:客户端连接端口
    
    监听客户端连接的端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    注意事项

    1. 启动第一台的时候如果查看状态显示报错,这是因为另外两台没有启动,启动第一台的时候一直在尝试连接另外两台的原因
    2. 三台都启动后查看状态,如果一台状态为 Mode: leader,另外两台为Mode: follower,说明集群搭建成功
    3. 如果查看状态为Error contacting service. It is probably not running
    4.请查看同目录下的日志文件zookeeper.out日志,根据具体原因去解决问题
    5.Caused by: java.lang.IllegalArgumentException: /zookeeper-3.4.14/data/myid file is missing
    6.Datadir路径配置错误
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参考网址

    zookeeper集群搭建

    zookeeper集群客户端测试

    zookeeper集群搭建 & 数据同步性测试

  • 相关阅读:
    Linux系统下如何使用NiMotionUSBCAN转换器?
    QT 自定义抽屉式窗口,上层覆盖下层界面,下层布局不改变
    【FLASH存储器系列六】SPI NOR FLASH芯片使用指导之二
    12. 转义字符及print函数的参数
    Mysql创建数据库索引
    数据结构第四课 -----线性表之栈
    工业交换机ERPS环网协议工作原理介绍
    基于Gradio/Stable Diffusion/Midjourney的AIGC自动图像绘画生成软件 - Fooocus
    IOday8
    新增公司管理页 分页设置 新增功能 删除功能
  • 原文地址:https://blog.csdn.net/ZHUXIUQINGIT/article/details/133501682