0


Zookeeper(3)

*ZAB***协议 **

**崩溃恢复 **

  1. 所谓崩溃恢复,指的是当Zookeeper集群中leader产生宕机或者丢失的时候,整个集群不会停止服务而是会选举出一个新的leader继续对外提供服务

  2. 崩溃恢复,可以很好的避免集群中出现单点故障(因为一个节点故障而导致整个集群崩溃),实现集群的高可用

  3. 在Zookeeper集群中,当leader产生丢失的时候,Zookeeper集群会重新选举出一个新的leader, 同时会给新leader产生一个编号(Epochid)。新leader产生编号之后,会将自己的Epochid发送给每一个follower。follower在接收到Epochid之后,会存放在本地文件 acceptedEpoch 中

  4. 事务id:在Zookeeper集群中,事务id由64位二进制数字(16位十六进制)组成,前32位表示的是

Epochid,后32位表示实际的事务id。例如: 0x200000003 表示第二任leader执行的第3个写操作

  1. 每更换一个leader,都会产生一个新的log文件

**其他 **

**observer **

  1. observer(观察者)既不参与选举也参与原子广播,但是会监听选举和投票结果,根据结果执行对应的操作

  2. 在集群规模庞大或者网络不稳定的时候,选举或者原子广播的效率都会比较低,所以在实际过程

中,会尽量减少参与选举或者原子广播的节点数量,因此在实际过程中,会将一个集群的

90%~97%的节点设置为observer。例如,如果一个集群中有100台节点,那么此时observer的数

量大约是89或者91台

  1. 在Zookeeper中,计算过半是计算的有决策权(选举/原子广播)的节点数量,observer没有决策

权,所以不影响过半。例如:一个集群由21个节点组成,1个leader+6个follower+14个

observer,即使observer全部宕机,Zookeeper集群也正常提供服务;即使observer全部存活,

只要有4个follower宕机,那么Zookeeper集群也会停止服务

  1. 设置observer

配置信息**(zoo.cfg) **

先停掉当前节点上的Zookeeper

zkServer.sh stop

修改zoo.cfg文件

vim /opt/software/zookeeper-3.9.1/conf/zoo.cfg

修改属性

pureType=observer

server.1=10.16.2.191:2888:3888:observer

启动这个节点的Zookeeper

zkServer.sh start

查看状态

zkServer.sh status

**参数 ****默认值 ****解释 **

clientPort 2181 客户端的连接端口号

dataDir /tmp/zookeeper 数据目录,实际上是快照文件 (snapshot.xxx)的存 储目录

dataLogDir 日志目录实际上是log.xxx的存储路径。如果不指定,那么和dataDir的值一 样

tickTime 2000 时间单元,默认单位是毫秒。在 Zookeeper中,时间 都是以这个时间单元来计算

initLimit 10 follower在加入Zookeeper集群之后,需要从leader处获 取欠缺的事务并补齐,initLimit就是补齐时间:

10*tickTime。 即默认要求在20s内补齐事务,如果欠缺事务比较多,那么需要适当的调大这个值

syncLimit 5 原子广播中的规定时间,即follower需要在5*tickTime 给leader进行相应

minSessionTimeout 2tickTime 最短会话超时时间以及最长会话超时 时间 maxSessionTimeout 20tickTime 如果指定的会话超时时间小于了min或者大于 了max,那么就按照 min或者max执行

server.x=hostname:port1:port2 配置集群中的节点:

                                                                                         1. x是选举编号,即myid 

                                                                                         2. hostname就是主机名或者IP 

                                                                                         3. port1是原子广播的端口号 

                                                                                         4. port2是选举的端口号 

jute.maxbuffer 1M 控制每一个节点能够携带的数据量

globalOutstandingLimit 1000 最大请求堆积数。当请求过多导致 leader暂时处理不了 的时候,那么此时leader会先将这些请求到队列中临时 存储,这个过程就是请求堆积

preAllocSize 64M 预先开辟的磁盘空间,用于写入日志文件

leaderServers yes 是否允许leader节点对外接收请求

maxClientCnxns 60 客户端最大连接数,就是每一个节点同时最多允许被多 少个客户端连接

**特性 **

  1. 过半性:过半选举(一个节点胜过一半及以上的节点才能成为leader),过半服务(集群中要存活一半及以上的节点才能提供服务),过半执行(请求需要一半及以上的follower同意才能执行)2. 数据一致性:从客户端角度而言,无论连接到哪一个节点上都能获取到相同的数据;从服务器角度而言,Zookeeper中每一个节点上存储的数据都一样

  2. 原子性:一个请求,要么所有节点都执行,要么所有节点都不执行

  3. 可靠性:Zookeeper集群不会因为一个节点宕机而导致整个集群停止服务

  4. 顺序性:所有节点执行请求的顺序是完全一致的 - 队列

  5. 实时性:在网络条件较好的情况下,可以实时监控Zookeeper的变化

**集群操作 **

  1. 可以在一个节点上来查看其他节点的属性信息 - 集群操作

  2. 通过 nc 工具来实现的。 nc 工具用于发送TCP请求,此时可以将需要执行的命令以TCP请求的方式发送到对应的节点上,等待对应节点响应结果即可

  3. 安装nc(netcat)

    1. 卸载nmap

    2. 进入软件安装目录,上传nc安装包

    3. 安装

    4. 步骤

      1. 将Zookeeper先停掉

      2. 编辑文件 在文件中添加

      3. 分发给其他的节点

      4. 启动Zookeeper

rpm -qa | grep -i nmap | xargs rpm -ev --nodeps

cd /opt/presoftware/

rz

rpm -ivh nc-1.84-22.el6.x86_64.rpm

zkServer.sh stop

vim /opt/software/zookeeper-3.9.1/conf/zoo.cfg

4lw.commands.whitelist=*

scp /opt/software/zookeeper-3.9.1/conf/zoo.cfg

root@10.16.2.194:/opt/software/zookeeper-3.9.1/conf/

scp /opt/software/zookeeper-3.9.1/conf/zoo.cfg

root@10.16.2.193:/opt/software/zookeeper-3.9.1/conf/

zkServer.sh start

**命令 ****解释 **

echo conf | nc 10.16.2.194 2181 查看10.16.2.194的配置信息

echo cons | nc 10.16.2.193 2181 查看10.16.2.193连接的客户端信息

echo crst | nc 10.16.2.193 2181 重置10.16.2.193的客户端连接

echo dump | nc 10.16.2.193 2181 获取当前集群的所有的会话信息,包含会话id,这些 会话创建的临时节点数量等

echo envi | nc 10.16.2.193 2181 查看指定节点的环境信息

echo ruok | nc 10.16.2.193 2181 查看指定节点上的Zookeeper是否还存活。如果存 活,则返 回imok

echo stat | nc 10.16.2.193 2181 查看指定节点的状态

echo srvr | nc 10.16.2.193 2181 查看指定节点的状态,不同于stat的地方在于,srvr不 打印客户端信息

标签: zookeeper debian php

本文转载自: https://blog.csdn.net/m0_51388399/article/details/136540491
版权归原作者 程序员小郭同学 所有, 如有侵权,请联系我们删除。

“Zookeeper(3)”的评论:

还没有评论