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

二、解压

  • 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

五、设置每个节点的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

集群测试

  • 参考文章末尾的地址

相关命令

复制代码
#启动ZK服务: 
bin/zkServer.sh start
#停止ZK服务: 
bin/zkServer.sh stop
#重启ZK服务: 
bin/zkServer.sh restart
#查看ZK服务状态: 
bin/zkServer.sh status

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. 三台都启动后查看状态,如果一台状态为 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路径配置错误

参考网址

zookeeper集群搭建

zookeeper集群客户端测试

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

相关推荐
天诰9 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
陈希12310 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
女神下凡11 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
@兽血沸腾12 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
讯捷蓝达17 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
数字新视界19 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落19 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng20 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
山甫aa20 小时前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web
Android系统攻城狮21 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频