zookeeper 介绍与环境搭建

1、什么是 zookeeper?

zookeeper 是一个开放源码的分布式应用程序协调服务,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

zookeeper 不适合存储大量数据,通常存储一些配置信息,动态的监听服务器的变更并且反馈给服务器。

zookeeper 集群最少需要 3 个节点。官方推荐奇数个,偶数会影响选举的结果。

2、zookeeper 的特点

  • 最终一致性:无论 client 端连接到哪一个 server,展示给他的都是同一个视图。
  • 可靠性:具有简单、健壮、良好的性能。如果消息 m 被一台服务器接收,那么该消息将被所有服务器接收。
  • 实时性:zookeeper 保证客户端在一个时间间隔范围内获取服务器的信息。网络延迟的原因,zookeeper 不能保证两个客户端同时获得服务端刚更新的数据。
  • 原子性:更新只能成功或失败,没有中间状态。也就是所有事务请求的结果在整个集群中所有机器上的应用情况是一致的。即要么整个集群都应用了一个事务,要么都没有应用,不会出现一部分应用,一部分没有应用的情况。
  • 顺序一致性:从一个客户端发起的应用请求,最终将会严格的按照其发起的顺序应用到 zookeeper 中。

3、zookeeper 的设计目标

  • 简单的数据结构:zookeeper 就是按照属性结构来进行互相协调。
  • 可以构建集群。
  • 顺序访问:对于每个客户端的每一个请求,都会分配一个全局唯一的递增编号。这个编号决定了访问顺序。
  • 高性能: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 的集群节点

  • zookeeper 节点部署越多,可靠性就越高。建议部署奇数个节点,zookeeper 是整个集群宕机半数以上才会集群宕机的。
  • 需要给每个 zookeeper 1G 以上的内存。如果可能的话最好有独立的磁盘,这样可以确保 zookeeper 的高性能。如果集群负载很重,不要把 zookeeper 和 regionserver 运行在同一台机器上。

 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 为 2181clientPort=2181# 并写入如下内容:server.1=127.0.0.1:2888:3888server.2=127.0.0.1:2899:3899server.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

时间: 2024-08-05 17:18:43

zookeeper 介绍与环境搭建的相关文章

ZooKeeper介绍与环境搭建

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等.由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法:配置维护.组服务.分布式消息队列.分布式通知/协调等. ZooKeeper是可以集群复制的,通过Zab(Zookeeper Atomic Broadcas

zookeeper集群环境搭建详细图文教程

zookeeper集群环境搭建详细图文教程 zhoubang @ 2018-01-02 [文档大纲] 友情介绍 软件环境 注意点 环境安装 1. 新建用于存储安装包以及软件安装的目录 2. 下载安装zookeeper 3. 解压zookeeper压缩包 单节点zookeeper配置 1. 配置zoo.cfg文件 2. 配置zookeeper的数据存储目录 3. 新建myid文件 4. 配置zookeeper集群节点 5. 启动zookeeper服务 6. 检查zookeeper服务是否成功启动

使用WIF实现单点登录Part I——Windows Identity Foundation介绍及环境搭建

首先先说一下什么是WIF(Windows Identity Foundation).由于各种历史原因,身份验证和标识的管理一般都比较无规律可循.在软件里加入"身份验证"功能意味着要在你的代码里混进处理底层任务(如验证用户名和密码,与X509证书或类似的证书打交道等)的代码.这样一来就得对基础架构相当依赖,程序很难移植,除非大范围重写.要改变这种情况,使用基于声明的标识(claims-based identity)可以很好的解决这个问题.这个"基于声明的标识"是神马东

[转]ZooKeeper 集群环境搭建 (本机3个节点)

ZooKeeper 集群环境搭建 (本机3个节点) 是一个简单的分布式同步数据库(或者是小文件系统) --------------------------------------------------------1.建立目录server1server1/dataDirserver1/dataLogDirserver1/logsserver1/zookeeper3.4.6 server2server2/dataDirserver2/dataLogDirserver2/logsserver2/zo

【美妙的Python之中的一个】Python简单介绍及环境搭建

美妙的Python之Python简单介绍及安装         简而言之: Python 是能你无限惊喜的语言,与众不同.             1.Python:          Python英文意思为蟒蛇,故又称为蟒蛇语言,在图标设计上有所体现,贵铎·范·罗萨姆(Guido van Rossum)于1989年创立.Python的特质,简单,优雅,健壮,继承传统编程语言的强大性与通用性,同一时候兼具简单脚本的简单性.         Python的哲学:仅仅用一种方法,最好是仅仅有一种方法

[springboot 开发单体web shop] 1. 前言介绍和环境搭建

前言介绍和环境搭建 简述 springboot 本身是为了做服务化用的,我们为什么要反其道使用它来开发一份单体web应用呢? 在我们现实的开发工作中,还有大量的业务系统使用的是单体应用,特别是对于中小型团队来说,在项目开发之初选择服务化开发是得不偿失的,因为对于此类团队,势必所有的工作都是需要我们开发人员来做的,例如: 技术选型 业务需求分析 业务需求设计 大量的测试 运行部署 运营健康监控 ... 小团队或小公司如果开发人员把大规模的精力放在除业务之外的工作中,那么我们的开发效率势必会特别低下

App自动化测试-1.App自动化介绍和环境搭建

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD

Hadoop HA + HBase环境搭建(一)————zookeeper和hadoop环境搭建

版本信息: Hadoop 2.6.3 HBase 1.0.3 JDK 1.8 Zookeeper 3.4.9 集群信息: RDFMaster 192.168.0.41 (Hadoop主节点,zk节点,HBase主节点) RDFSlave01 192.168.0.42 (Hadoop备份主节点,从节点,zk节点,HBase的RegionServer) RDFSlave02 192.168.0.43 (从节点,zk节点,HBase的RegionServer) RDFSlave03 192.168.0

Hadoop集群之 ZooKeeper和Hbase环境搭建

前面讲解了Hadoop完全分布式的搭建,本章主要讲解一下在Hadoop完全分布式已经搭建成功的情况下搭建ZooKeeper和Hbase环境 所有软件下载百度云 密码:uup8 讲在开头:对于笔者的完全分布式环境请见该文:Hadoop完全分布式安装 1.ZooKeeper和Hbase的简答介绍: ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包