Zookeeper集群搭建和配置

首先要将搭载Zookeeper的电脑装好jdk。和Zookeeper。

配置zoo.cfg

配置说明:
1-ickTime=2000 心跳间隔周期 毫秒。

2-initLimit=10初始连接超时阈值=10*tickTime。指的是follower初始连接leader的超时时间。 如果网络环境不好,适当调大。

3-syncLimit=5连接超时阈值=syncLimit*tickTime。指的是follower和leader做数据交互的超 时时间。如果网络环境不好,适当调大。

4-dataDir=/usr/soft/zookeeper-3.4.7/tmp dataDir数据目录指的是zookeeper znode树的 持久化目录,

5-配置集群内的Ip地址
server.1=192.168.80.64:2888:3888
server.2=192.168.80.65:2888:3888
server.3=192.168.80.66:2888:3888
server后的数字是选举id,在选举过程中会用到。注意:数字一定要能比较出大小。
2888 端口原子广播端口,可以自定义
3888 端口选举端口,可以自定义
在zk安装目录下创建tmp文件,创建myid文件(名字固定),并编辑当前虚拟机的选举id
myid文件中只存server后面的数,比如第一台就存1

配置完毕以依次启动各机器的zookeeper就好拉。

在zookeeper/bin目录下运行: sh zkServer status 查看状态
Mode: follower或者为leader 说明搭建成功成功!

选举机制

那么,这个小弟和老大是怎么选出来的呢?
每一个写操作都是一个事务,每一个事务都用一个事务id来代表,叫:zxid
zxid 是全局唯一,并且全局递增的。作用就是可以根据最大事务id,找到最新的事务

首先:比较最大事务id,因为事务越大说明数据越是最新的。如果都一样的话,再比较前面配置的选举id,谁大谁当领导,选举的前提是满足过半同意。

选举分两个阶段

1.数据恢复阶段:
当zk服务器启动时,会先从本地磁盘找到本机的最大事务id。

2.选举阶段:
zk服务器会提交选举协议

1.Zxid(最大事务id)
2.本机的选举id(myid文件里的数字)
3.逻辑时钟值 记录当前的选举轮数,确保每个zk在同一轮选举中
4.当前zk服务器状态,分4种: Looking=>选举阶段 Following=>当小弟阶段 Leading=>当领导阶段 Observering=>观察者阶段(不参与投票也不参与选举,后面会说)

Leader选举出来之后

Leader身上肯定是有最新数据的(有最大事务id的),所以首先做的就是原子广播(通过原子 广播端口)。 原子广播的目的就是为了确保数据一致性(即客户端无论通过哪个zk服务器查看数据,数据都是一样的) 目的二就是为了防止leader挂掉之后,数据的丢失问题

对于事务更新,Leader会通过原子广播征询其他follower,只要满足过半同意机制,事务才能被更新

当现有的Leader挂掉之后,那么剩下的机器会选出新的leader,但是如果不满足过半原则,则整个集群就不能工作了。即,如果集群一共5台,那么挂掉3台后,就不能工作了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值