ZooKeeper入门(五)配置集群和选举机制
一. 配置集群
1. 准备多台ZooKeeper服务器
2. 配置ZooKeeper服务器
在每台服务器的conf/zoo.cfg文件中添加如下内容:
server.20=192.168.4.20:2888:3888
server.21=192.168.4.21:2888:3888
server.22=192.168.4.22:2888:3888
格式: server.A=B:C:D
A表示这台服务器的编号ID,是一个数字
B表示服务器的IP地址或域名
C表示这台服务器与集群中的Leader交换信息时使用的端口
D表示执行选举Leader服务器时互相通信的端口
3. 创建myid配置文件
在集群环境下,需要在dataDir 目录中创建一个名为myid 的文件,文件内容是当前服务器的编号
ID,即上面配置的A
cd data
echo A的值 > myid
ZooKeeper启动时会读取这个文件,将里面的数字与zoo.cfg中配置的server.A进行比较,从而判断这台服务器是哪个
4.开启zookeeper
开启3台虚拟机的zookeeper程序
/usr/local/zookeeper/bin/zkServer.sh start
开启成功后查看zookeeper集群的状态
/usr/local/zookeeper/bin/zkServer.sh status
出现Mode:follower或是Mode:leader则代表成功
二:集群特性
- 一个ZooKeeper集群中,有一个领导者Leader和多个跟随者Follower
- Leader负责进行投票的发起和决议,更新系统状态
- Follower用于接收客户端的请求并向客户端返回结果,在选举Leader过程中参与投票
- 半数机制:可用节点数量>总节点数量/2
- 全局数据一致:集群中每台服务器保存一份相同的数据副本,不论客户端连接到哪个服务器,数据都是
一致的 - 更新请求顺序执行:来自同一个客户端的更新请求,按其发送顺序依次执行
- 数据更新的原子性:一次数据更新,要么成功,要么失败
- 实时性:在一定的时间范围内,客户端能读取到最新数据
三:选举机制
ZooKeeper在提供服务时会自动选举一个节点服务器作为Leader,其他都是Follower
选举流程:
- Server1启动,给自己投票,然后发送投票信息,由于其它服务器都还没启动,所以它发现的消息收不到任何反馈,此时Server1为Looking(竞选)状态
- Server2启动,给自己投票,同时与Server1通信交换选举结果,由于Server2的id值较大,所以Server2胜出,但由于投票数没有过半,此时Server1和Server2都为Looking状态
- Server3启动,给自己投票,同时与Server1和Server2通信交换选举结果,由于Server3的id值较大,所以Server3胜出,此时票数已经过半,所以Server3为Leader,Server1和Server2为Follower
- Server4启动,给自己投票,同时与Server1、Server2、Server3通信交换选举结果,尽管Server4的id较大,但由于集群中已经存在Leader,所以Server4只能为Follower
- Server5启动,同Server4类似,只能为Follower
总结:
- 每个服务器在启动时都会选择自己,然后将投票信息发送出去
- 服务器编号ID越大,在选择算法中的权重越大
- 投票数必须过半,才能选出Leader
- 谁是Leader:启动顺序的前集群数/2+1 个服务器中,id值最大的会成为Leader
ZooKeeper入门(五)配置集群和选举机制相关推荐
- zookeeper(五)集群角色epoch的选取
在zookeeper的第三篇有个流程图,不知道是否还有印象. 这个图在刚开始是非常抽象的.现在就可以对照这个图来说一下源码来的流程了. 因为上一篇已经讲解了zookeeper怎么选取leader的,所 ...
- 【Hadoop生态圈】1.Hadoop入门教程及集群环境搭建
文章目录 1.简介 2.环境准备 3.安装hadoop 3.修改Hadoop配置文件 3.1.hadoop-env.sh配置 3.2.core-site.xml配置 3.3.hdfs-site.xml ...
- zookeeper配置集群
zookeeper单点启动默认模式 Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg Mode: standalone 配置集群 ...
- Zookeeper源码之集群选举
前言 zookeeper算是一个流行的分布式协调框架,在大量java分布式中间件中广泛使用.在学习zookeeper的源码前建议先了解一下分布式一致性协议的概念,zookeeper自己实现了一套满足c ...
- zookeeper相关知识与集群搭建
Zookeeper Zookeeper相关概念 Zookeeper概述 Zookeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题. Zookeeper本质上是一个 ...
- Zookeeper知识要点与集群安装,欢迎纠错
Zookeeper 什么是zookeeper?原理? 分布式协调服务,底层基于ZAB协议(原子消息广播),保证各服务之间同步: 由Leader.Follower.Observer组成. 维护有层次的数 ...
- 猿创征文|ZooKeeper(伪)集群搭建
前言:zookeeper作为一款分布式协调中间件,其重要性不言而喻,因此需要保证其高可用性.所以一般都会搭建zookeeper集群,今天叶秋带领大家在一台服务器上搭建伪集群. 目录 1. 搭建要求 2 ...
- zookeeper客户端使用与集群特性
zookeeper客户端使用与集群特性 zookeeper Java客户端 项目构建 创建客户端实例 测试结果 创建zookeeper实例参数说明 演示java客户端增删查改zookeeper节点 A ...
- zookeeper的使用与集群搭建以及原理应用
1.zookeeper介绍 zookeeper是一个为分布式应用提供一致性服务的软件,它包含一个简单的原语集,分布式应用程序可以根据它实现同步服务, 配置维护和命名服务等. 基 ...
最新文章
- 比特币寒冬中,你更应该关注企业区块链!
- 能力差的程序员90%输在这点上!CTO:其实都是瞎努力!
- delphi self 的使用
- Firefox自带下载功能进行断点续传
- django-TDD
- 输入一批整数,输出最大最小值,输入0结束
- 初次接触 Lottie
- Android之传感器(三)方向传感器
- python中字符串前的 u, r/R, b的含义
- EDIUS中的图片该如何进行剪裁
- Linux shell:脚本判断进程是否正在运行
- tplink无线桥接WDS小结
- html中去除浮漂有什么作用,鱼漂吃铅量大、和吃铅量小都有啥优点?
- macOS中比较好的解压缩软件:The Unarchiver
- 2022全球与中国电子纸显示器(EPD)市场现状及未来发展趋势
- iphone和ipad设备分辨率
- 95后离职汇智动力,现在月薪9k,哭着说出经历!
- 安卓虚拟机_VMOS Pro 免费又好用的安卓虚拟机,
- 阻焊层和助焊层的区别
- python学习之 ---正则表达式规则与正则表达式在python的应用
热门文章
- 聊聊高并发(三十)解析java.util.concurrent各个组件(十二) 理解CyclicBarrier栅栏
- JSON 序列化与反序列化:使用TypeReference 构建类型安全的异构容器
- Elasticsearch5.X Mapping万能模板
- HBase的布隆过滤器详解
- JS和OC交互的简单应用
- LeetCode Longest Substring Without Repeating Characters
- linux 系统监控、诊断工具之 IO wait
- php执行系统外部命令的四种方法
- 让云×××—微软虚拟化远程直播
- 修正mysqlcc在MySQL 5.0上常报的 Table 'xxx' doesn't exist 错误