Zookeeper概述
Zookkeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目,Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护,域名服务,分布式同步,组服务等。
特点
- Zookeeper:一个领导者(leader),多个跟随者(follower)组成的集群。
- Leader : 负责进行投票投票的发起和决议,更新系统状态。
- Follower:用于接收客户请求并向客户端返回结果,在选举Leader过程中参与投票。
- 集群奇数台服务器只要有半数以上节点存活,Zookeeper集群就能正常服务。
- 全局数据一致:每个server保存一份相同的数据副本,client无论连接到那个server,数据都是一致的。
- 更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次进行。
- 数据更新原子性,一次更新要么成功要么失败。
- 实时性,在一定时间范围内,client能读到最新数据。
数据结构
- Zookeeper数据模型的结构与Unix文件系统很类似,整体上可以看做一棵树,每个节点称作一个ZNode。每一个ZNode默认可以存储1MB的元数据,每个ZNode都可以通过其路径唯一识别。
应用场景
- 提供的服务包括:统一命名服务。统一配置管理,统一集群管理,服务器节点动态上下线管理,软负载均衡器等。
统一配置管理
- 一,分布式环境下,配置文件同步和管理是一个常见问题。
- 1,一个集群中,所有节点的配置信息是一致的,比如Hadoop集群。
- 2,对配置文件修改后,希望能快速同步到各个节点上。
- 二, 配置管理可交由ZK实现。
- 1,可配置信息写入ZK上的一个ZNode。
- 各个节点监听这个ZNode。
- 一旦ZNode上的数据被修改,ZK将通知各个节点。
统一集群管理
- 集群管理结构图如下所示。
- 一,分布式环境中,实时掌握每个节点的动态是必要的。
- 1,可根据节点实时做出一些调整。
- 可交由ZK实现
- 1,可将节点信息写入ZK上的一个ZNode。
- 2,监听这个ZNode可获取它的实时状态变化。
- 典型应用
- 1,HBase中Master状态监听与选举。
-
服务器节点动态上下线
软负载均衡
下载地址
安装Zookeeper
-[ ] 上传zookeeper到Linux系统下。
可通过WinSCP传到指定目录。
WinSCP中直接拖到指定文件夹,很方便。
百度云链接
提取码ro3j
- 第一步:解压压缩包。
- 在Linux中通过tar -zxvf zookeeper - 3.4.10.tar.gz -C
- 第二步进入conf修改zoo_sample.cfg 为 zoo.cfg
-
配置zoo.cfg
- 解读zoo.cfg文件中参数的含义
- 1,tick Time=2000:通信心跳数,Zookeeper服务器心跳时间,单位毫秒。
- Zookeeper使用的基本时间服务器之间或客户端和服务器之间维持心跳间隔,也就是没个tick TIme时间就会发送一个心跳,时间单位为毫秒。
- 它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的超时时间是2*tickTime)
- initLimit=10:Leader和Follower初始通信时限。
- 集群中Follower跟随者服务器和Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeepe服务器连接到Leader的时限。
- 投票选举Leader的初始化时间。
- Follower在启动过程中,会从Leader同步所有最新数据,然后确定能够对外服务的起始状态。
- Leader允许Follower在initLimit时间内完成这个工作。
- syncLimit=5:Leader和Follower同步通信时限。
- 集群中Leader和Follower之间最大响应时间单位,假如响应超时syncLimit*tickTime,Leader认为Follower死掉,从服务器列表删除Follower。
- 在运行过程中,Leader负责ZK集群中所有机器进行通信,列如通过一些心跳检测机制,来检查机器的存活状态。
- 如果Leader发出心跳包在syncLimit之后,还没有从Follower那收到响应,那么就认为这个Follower不在线了。
- dataDir:数据文件目录 + 数据持久化路径
- 保存内存数据库快照信息位置,如果没有其他说明,更新的事务日志也存到数据库
- clientPort=2181:客户端连接接口。监听客户端的端口
修改配置
进入zoo.cfg下修改dataDir
- 进入/etc/profile配置环境变量
- 记得source
-
- 启动Zookeeper
-
- 但是启动失败也会显示这些所以需要看一下Zookeeper的状态
- Mode:standlone 是单节点 临时使用
- 使用zkCli.sh进入客户端
-
- 当出现这个画面时你的Zookeeper就初步搭建成功了。