标签:客户 超过 宕机 目标 属性 场景 命名 发送消息 时间
1、什么是 zookeeper?
zookeeper 是一个开放源码的分布式应用程序协调服务,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。
zookeeper 不适合存储大量数据,通常存储一些配置信息,动态的监听服务器的变更并且反馈给服务器。
zookeeper 集群最少需要 3 个节点。官方推荐奇数个,偶数会影响选举的结果。
2、zookeeper 的特点
3、zookeeper 的设计目标
4、zookeeper 的工作原理
在 zookeeper 的集群中,各个节点共有 3 种角色、4 种状态
角色:Leader、Follower、Observer。Follower 和 Observer 又统称为 Learner
Leader:负责服务器 writer 类型请求。
Follower:负责客户端的 reader 类型请求。参与 leader 选举。
Observer:特殊的 Follower。可以接受客户端的 reader 请求,但不参与选举。
zookeeper 的核心是原子广播,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 ZAB 协议(Zookeeper Atomic Broadcast p‘rotocol)。
ZAB 协议有两种模式:恢复模式和广播模式。当服务启动或 leader 崩溃后就进入恢复模式。当 leader 被选举出来,且大多数 server 完成了和 leader 的状态同步后,恢复模式就结束了。状态同步保证了 leader 和 server 具有相同的系统状态。
每个 server 在工作过程中有 4 种工作状态:
LOOKING:未选出 leader,正在搜寻
LEADING:当前 server 为选出的 Leader
FOLLOWING:leader 已被选出,当前 server 与之同步
OBSERVING:与 Follwer 基本一致,但不参加选举和投票,仅接受选举和投票的结果。
5、zookeeper 的集群节点
6、zookeeper 的集群安装与配置
1)需要先安装好 jdk,这里就不写了。
2)下载 zookeeper http://zookeeper.apache.org/
3)解压并复制
tar -xvf zookeeper-3.4.10.tar -C /usr/local/bin/zk #解压到 /usr/local/bin/zk 目录下 cd /usr/local/bin/zk mv zookeeper-3.4.10 zk1 #重命名 cp -p zk1/ zk2 #复制 cp -p zk1/ zk3 #复制
4)修改配置文件
cd zk1/conf cp zoo_sample.cfg zoo.cfg vi zoo.cfg
# 修改 dataDir 为 zk1 下 data 的目录
dataDir=/usr/local/bin/zk/zk1/data
# 修改 clientPort 为 2181
clientPort=2181
# 并写入如下内容:
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2899:3899
server.3=127.0.0.1:2877:3877
按照以上步骤,修改 zk2、zk3 的配置文件。
配置参数说明:
tickTime:zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔。单位是毫秒。 initLimit: zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数。(这里的客户端是指 leader 的 follower 服务器) 如果 initLimit 设置为 10,当超过 10 个心跳的时间长度后,如果 zookeeper 服务器没收到客户端返回的信息,那么连接失败。 syncLimit:标识 leader 与 follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度。syncLimit 为 5,那么最长是 5*tickTime dataDir:保存数据的目录,默认情况下日志文件也保存在这个目录里。 clientPort:zookeeper 服务端口号 server.A = B:C:D : A 是一个数字,表示第几个 zookeeper 服务;B 是服务 IP 地址,C 是端口号,用来做数据同步,进行集群间的信息交换; D 也是一个端口号,用来做选举,主要是在 leader 挂掉后专门用来做选举 leader 的端口。
5)创建 myid 文件
需要在zk1、zk2、zk3 的 dataDir 目录下创建 myid 文件,并在文件中写入 server.A = B:C:D 中的 A
echo 1 > /usr/local/bin/zk/zk1/data/myid echo 2 > /usr/local/bin/zk/zk2/data/myid echo 3 > /usr/local/bin/zk/zk3/data/myid
配置完成。
6)启动各个节点
cd /usr/local/bin/zk zk1/bin/zkServer.sh start zk2/bin/zkServer.sh start zk3/bin/zkServer.sh start
7)查看各个节点的状态
cd /usr/local/bin/zk zk1/bin/zkServer.sh status zk2/bin/zkServer.sh status zk3/bin/zkServer.sh status
8) 集群连接
标签:客户 超过 宕机 目标 属性 场景 命名 发送消息 时间
原文地址:https://www.cnblogs.com/mayytest1202/p/10891098.html