装修素材图片都从什么网站找,铁门关网站建设,沧州高端网站制作,在线培训课程1. 集群角色 zookeeper集群下#xff0c;有3种角色#xff0c;分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader)#xff1a; 事务请求#xff08;写操作#xff09;的唯一调度者和处理者#xff0c;保…1. 集群角色 zookeeper集群下有3种角色分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader) 事务请求写操作的唯一调度者和处理者保证集群事务处理的顺序性 集群内部各个服务器的调度者。对于create、setData、delete等有写操作的请求则要统一转发给leader处理leader需要决定编号、执行操作这个过程称为事务。 跟随着(Follower) 处理客户端非事务读操作请求可以直接响应。 转发事务请求给Leader。 参与集群Leader选举投票。 观察者(Observer) 对于非事务请求可以独立处理读操作。 对于事务性请求会转发给leader处理。 Observer节点接收来自leader的inform信息更新自己的本地存储不参与提交和选举投票。通常在不影响集群事务处理能力的前提下提升集群的非事务处理能力。 如何配置观察者 在配置文件zoo.cfg写集群配置时需要后面写observer #配置一个ID为1的观察者节点
server.1192.168.31.5:2888:3888:observer Observer应用场景 提升集群的读性能。因为Observer和不参与提交和选举的投票过程所以可以通过往集群里面添加observer节点来提高整个集群的读性能。 跨数据中心部署。 比如需要部署一个北京和香港两地都可以使用的zookeeper集群务并且要求北京和香港客户的读请求延迟都很低。解决方案就是把香港的节点都设置为observer。 2. 集群架构
leader节点可以处理读写请求
follower只可以处理读请求follower在接到写请求时会把写请求转发给leader来处理。 Zookeeper数据一致性保证 全局可线性化(Linearizable )写入∶先到达leader的写请求会被先处理leader决定写请求的执行顺序。客户端FIFO顺序∶来自给定客户端的请求按照发送顺序执行。 3. 集群搭建
本节介绍的一主两从的集群搭建。
3.1 准备工作
准备三台虚拟机 192.168.31.5 192.168.31.176 192.168.31.232 每台机器根据单机环境先进行单机环境的搭建
注意根据单机环境搭建集群的每个节点时先不要启动继续按照一下后续步3.2骤修改完文件以及3.3创建myid文件后再启动。否则启动集群节点时可能会出现状态是standalone的问题解决看3.4启动时遇到的问题进行解决。
单机环境搭建参考Zookeeper特性与节点数据类型详解-CSDN博客中的Zookeeper单机搭建。
3.2 修改配置文件 修改每台机器中zookeeper的zoo.cfg文件 vim zoo.cfg #修改数据存储目录
dataDir/app/zookeeper/data#文件末尾追加配置内容
server.1192.168.31.5:2888:3888
server.2192.168.31.176:2888:3888
server.3192.168.31.232:2888:3888 集群配置内容含义 server.NumberIP:port1:port2Number 是一个数字表示这个是第几号服务器 集群模式下配置一个文件 myid这个文件在 dataDir目录下这个文件里面有一个数据 就是 A 的值Zookeeper 启动时读取此文件拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个server。IP 是这个服务器的地址port1 是这个服务器Follower与集群中的Leader服务器交换信息的端口port2 是万一集群中的Leader服务器挂了需要一个端口来重新进行选举选出一个新的Leader而这个端口就是用来执行选举时服务器相互通信的端口。 3.3 创建myid文件配置服务器编号 在每台服务器zookeeper的dataDir对应目录下创建 myid 文件内容为对应ip的zookeeper服务器编号。 dataDir目录是你在zoo.cfg中配置的目录。内容是你在zoo.cfg中配置集群时server.后面的数字。 添加 myid 文件时一定要在 Linux 里面创建不要 notepad等工具里面创建后上传因为可能会乱码。并且内容上下不要有空行左右不要有空格。
vim myid 3.4 启动集群
启动前需要关闭防火墙(生产环境需要打开对应端口)
分别启动三个节点的zookeeper的server #启动节点
bin/zkServer.sh start
#查看节点状态
bin/zkServer.sh status 如列图所示我依次启动了192.168.31.5、192.168.31.176、192.168.31.232服务器中zk的节点每次都是启动后直接查看状态他们的状态都是follower。 待三台机器都启动完成后我再次差看个节点的状态192.168.31.5这台机器zk的节点变为了leader。 所以三个节点启动后状态是leader或者follower才表示集群启动成功了。 3.4 启动时遇到的问题
集群启动时有可能会失败一般情况就是zoo.cfg配置错误或者防火墙没有关闭生产环境端口没有开放
3.4.1关闭防火墙
#centos7
# 检查防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
3.4.2 启动后查看状态的Mode是standalone
解决
1. 检查zoo.cfg文件中有书写错误是否有误
2. 如果这台机器上有单机版的zookeeper启动关闭之前的zookeeper重新启动我的单机版的zk改配置变为集群节点时就遇到的是这个问题。
3.4.3 .sh权限不足 在启动zookeeper时报zkServer.sh权限不足当时没有截图记录但和下述截图中zkCli.sh权限不足一样明明有root权限但是就是提示权限不足。 接下来以解决zkCli.sh权限不足为例解决该问题如遇到zkServer.sh权限不足可参考这个解决方法 进去zookeeper的bin目录后执行以下指令 chmod axwr zkCli.sh 再次执行 ./zkCli.sh 客户端执行成功了 4. 集群下leader的选举原理