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集群搭建 & 数据同步性测试

相关推荐
SPC的存折3 分钟前
1、Redis数据库基础
linux·运维·服务器·数据库·redis·缓存
爱学习的小囧1 小时前
VMware ESXi 6.7U3v 新版特性、驱动集成教程和资源包、部署教程及高频问答详情
运维·服务器·虚拟化·esxi6.7·esxi蟹卡驱动
小疙瘩1 小时前
只是记录自己发布若依分离系统到linux过程中遇到的问题
linux·运维·服务器
dldw7772 小时前
IE无法正常登录windows2000server的FTP服务器
运维·服务器·网络
我是伪码农2 小时前
外卖餐具智能推荐
linux·服务器·前端
汤愈韬3 小时前
下一代防火墙通用原理
运维·服务器·网络·security
IMPYLH3 小时前
Linux 的 od 命令
linux·运维·服务器·bash
数据雕塑家5 小时前
Linux下大文件切割与合并实战:解决FAT32文件系统传输限制
linux·运维·服务器
IMPYLH5 小时前
Linux 的 nice 命令
linux·运维·服务器·bash
Rick19936 小时前
Redis 分布式锁:核心使用场景
数据库·redis·分布式