【ZooKeeper】第三章 集群搭建
文章目录
- 【ZooKeeper】第三章 集群搭建
- 一、ZooKeeper 集群介绍
- 1.Leader 选举
- 2.集群角色
- 二、搭建 ZooKeeper 集群
- 1.安装
- 2.配置集群
- 3.启动集群
- 三、故障模拟
一、ZooKeeper 集群介绍
1.Leader 选举
- Serviceid:服务器 ID
比如有三台服务器,编号分别是 1、2、3,编号越大在选举算法中的权重越大 - Zxid:数据 ID
服务器中存放的最大数据 ID,值越大说明数据越新,在选举算法中的权重越大 - 在 Leader 选举的过程中,如果某台 ZooKeeper 获得了超过半数的选票,则此 ZooKeeper 就可以成为 Leader
2.集群角色
在 ZooKeeper 集群服务中有三个角色
- Leader 领导者
处理事务请求
集群内部各服务器的调度 - Follower 跟随者
处理客户端非事务请求,转发事务请求给 Leader 服务器
参与 Leader 选举投票 - Observer 观察者
处理客户端非事务请求,转发事务请求给 Leader 服务器
二、搭建 ZooKeeper 集群
1.安装
准备三台服务器,将 ZooKeeper 安装上去,具体安装方法参考【ZooKeeper】第一章 快速入门
2.配置集群
在每台服务器的 ZooKeeper 的 data 目录下创建一个 myid 文件,内容分别是1、2、3,这个文件记录的是每台服务器的 ID
echo 1 >/opt/ZooKeeper/zkdata/myid
echo 2 >/opt/ZooKeeper/zkdata/myid
echo 3 >/opt/ZooKeeper/zkdata/myid
在每一个 ZooKeeper 的 zoo.cfg 中添加集群服务器 IP 列表
#server.服务器ID=服务器IP:服务器之间通信端口:服务器之间投票选举端口
server.1=xxx.xxx.xxx.1:2881:3881
server.2=xxx.xxx.xxx.2:2881:3881
server.3=xxx.xxx.xxx.3:2881:3881
3.启动集群
按照 123 的顺序启动三台服务器
zkServer.sh start
查询服务器 1,跟随者 follwer
查询服务器 2,领导者 leader
查询服务器 3,跟随者 follwer
三、故障模拟
停掉 3 号服务器,1 号和 2 号服务器状态不会变化
再停掉 1 号服务器,2 号服务器停止运行
启动 1 号服务器,2 号服务器开始正常工作,依然是领导者
启动 3 号服务器,停掉 2 号服务器,3 号服务器成为领导者
启动 2 号服务器,3 号服务器依然是领导者,2 号服务器成为跟随者
结论
- 3 个节点的集群,1 个从服务器宕机,集群正常
- 3 个节点的集群,2 个从服务器宕机,主服务器无法运行,因为可运行的机器没有超过集群总数的一半
- 当集群中的主服务器宕机,其他从服务器会自动进行选举,然后产生新的领导者
- 当领导者产生后,再有新的服务器加入集群,不会进行重新选举,新服务器自动成为跟随者