zookeeper 的安装配置及简单使用

===> Zookeeper 是什么?

=> ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

=> ZooKeeper包含一个简单的原语集,提供Java和C的接口。

=> ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本

===> Zookeeper应用场景(功能):

=> 它是一个为分布式应用提供一致性服务的软件,提供的功能包括:

配置维护、域名服务、分布式同步、组服务等。

=> ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

===> Zookeeper体系结构

===> Zookeeper 工作原理:

=> Zookeeper
的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。

=> Zab协议有两种模式: 恢复模式(选主)广播模式(同步)

当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和
leader的状态同步以后,恢复模式就结束了。

(★)状态同步保证了leader和Server具有相同的系统状态

=> 为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。

实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。

低32位用于递增计数。

(★)对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,so,你可以在任何一个结点上建立到服务集群的连接

 ===> Zookeeper 安装

=>搭建ZooKeeper的集群环境

1、三台:bigdata12  bigdata13  bigdata14

时间同步

2、在bigdata12上进行安装

(*) 解压 tar -zxvf zookeeper-3.4.10.tar.gz -C ~/training/

(*) 设置环境变量:每台机器上

ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10

export ZOOKEEPER_HOME

PATH=$ZOOKEEPER_HOME/bin:$PATH

export PATH

(*)核心的配置文件: conf/zoo.cfg

mkdir /root/training/zookeeper-3.4.10/tmp

编辑 zoo.cfg

dataDir=/root/training/zookeeper-3.4.10/tmp

server.1=bigdata12:2888:3888

server.2=bigdata13:2888:3888

server.3=bigdata14:2888:3888

在/root/training/zookeeper-3.4.10/tmp目录创建文件: myid

输入  1

3、把bigdata12的ZK复制到其他的节点

scp -r zookeeper-3.4.10/ [email protected]:/root/training

scp -r zookeeper-3.4.10/ [email protected]:/root/training

4、修改bigdata13和bigdata14上的myid文件

5、在每台机器上,启动ZK:  zkServer.sh  start

===> 配置文件

=> zookeeper-3.3.3/conf文件夹下面(可以把默认的zoosample.cfg复制一份到zoo.cfg),配置文件zoo.cfg需要在每台服务器中都要编写,以下是一个配置文件的样本:

# Filename zoo.cfg

tickTime=2000

dataDir=/home/zookeeper/data

clientPort=2181

initLimit=5

syncLimit=2

server.1=202.115.36.251:2888:3888

server.2=202.115.36.241:2888:3888

server.3=202.115.36.242:2888:3888

initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的                 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,

那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒。

syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒

server.A=B:C:D

A 是一个数字,表示这个是第几号服务器;

B 是这个服务器的 ip 地址;

C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;

D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

=> 创建myid文件

除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就只有一个数据就是 A 的值,Zookeeper 启动时会读取这个文

件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。这个myid的值要和配置文件中的server.x=ip:port:port中的x一致。

echo 1 > myid

===> Zookeeper 操作

=> 查看zookeeper  的状态: zkServer.sh  status

=> 通过 zookeeper 客户端连接:

zkCli.sh  -server  192.168.10.221:2181

=> 查看znode节点:

ls  /

=> 创建znode节点(数据):

create  /test  "hello"

=> 获取znode节点数据:

get  /test

=> 修改znode节点数据:

set  /test  "word"

=> 删除znode 节点:

delete  /test

===> 清除zk状态

当在zk上已经做了很多事情,配置已经比较杂乱,现在想重新初始化一下,也就是把所有状态删除,步骤是:

=> 关闭所有zk节点,用zkServer.sh status查看是否关闭

=> 删除zoo.cfg定义的数据文件夹下的所有文件,除了myid文件外

=> 启动zk节点

现在配置就重置了

===> 常见问题

在用zkCli.sh启动客户端时,Will not attempt to authenticate using SASL (无法定位登录配置)

这是由于没有启用用户验证导致的,不影响使用,但影响安全性。SASL 即:Simple Authentication and Security Layer

原文地址:http://blog.51cto.com/songqinglong/2062909

时间: 2024-10-09 15:02:55

zookeeper 的安装配置及简单使用的相关文章

Zookeeper分布式安装配置

Zookeeper分布式安装配置 Zookeeper介绍 概述 1.ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. 2.ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户. 3.ZooKeeper包含一个简单的原语集,提供Java和C的接

asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

原文:asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionless的学习做下笔记! Exceptionless是什么?能做什么呢? “Exceptionless”这个词的定义是:没有异常.Exceptionless可以为您的ASP.NET.We

Zookeeper的安装配置及基本开发

一.简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户. ZooKeeper包含一个简单的原语集,[1]提供Java和C的接口. ZooKeeper代码版本中,提供了分布式独享锁.选举.队列的接口,代码在zookeeper-3.4.3\src\recipes.其中分布锁和

安卓安装配置以及简单的输出Helloworld

一.安装配置 1.软件下载: (1)打开网页,搜索http://pan.baidu.com进入百度云,登录百度账号(账号:15567067134 密码:qs19941025).进入之后有个安卓应用的文件夹,双击进入,有个安卓工具和jdk,再分别双击进入这两个文件夹,将里面的所有东西都下载下来.(最好都下载到同一个文件夹里,方便以后使用) 2.安装: (2)将eclipse解压缩,进入eclipse文件夹,打开eclipse.保存到开放盘里即可(最好和之前下载的文件放在一起,便于以后使用).打开后

InteliiJ IDEA的安装配置与简单使用

小Alan前段时间一直在家里搬砖,已经很久没有接触技术了,从今天开始重拾技术,工欲善其事,必先利其器,以前在做Java开发的时候最常用的IDE就是Eclipse莫属了,不过随着岁月的流逝,在2016年的时候有一款IDE,InteliiJ IDEA实现了对Eclipse的反超,其实大概从12年开始InteliiJ IDEA就开始慢慢流行了,那时候小Alan都还没有参加工作呢,那时候貌似小Alan在读计算机专业,还学过C语言,不过后来还是选择了走Java开发路线,所以如今最主流,甚至以后主流的IDE

Redis的安装配置及简单集群部署

最近针对中铁一局项目,跟事业部讨论之后需要我们的KF平台能够接入一些开源的数据库,于是这两天研究了一下Redis的原理. 1. Redis的数据存储原理及简述 1.1Redis简述 Redis是一个基于内存且支持持久化的key-value的NoSQL数据库,其中每个key和value都是使用对象表示的,具有以以下特征:多样数据类型.持久化.主从同步.它支持存储的value类型包括string(字符串).list(链表).hash(哈希).set(集合)和zset(有序集合).这些数据类型都支持p

【Mac + Appium + Java1.8学习(三)】之IOS自动化环境安装配置以及简单测试用例编写(模拟器、真机)

前提条件: =========================================== 1.Xcode版本为Xcode10及以上2.Appium版本必须为1.9及以上,因为Xcode为10.0 3.appium-desktop4.安装所需依赖库,包括: a.Homebrew b.Git c.node (brew install node) d.npm (brew install npm)e.carthage (brew install carthage)f.libimobiledev

Zookeeper 及其安装配置和启动

Zookeeper 为分布式系统提供一次性的服务,管理和协调分布式系统的工作,保证系统的高有效性.为什么需要它?因为分布式系统很容易出错,特别是在处理竞争和死锁的过程中. 提供的功能包括:配置维护.名字服务.分布式同步.组服务等. Client就是分布式系统中的节点,他们可以在ZooKeeper中设置监控,如果ZooKeeper中的目录节点存储的数据修改了,就会通知client. 设计目标: 简单 可复制 为什么叫做zookeeper?因为分布式系统就像一个动物园... 例子: 搜索引擎服务器集

ansible安装配置与简单使用

前言: AnsibleWorks成立于2012年,由自动化工具Cobbler及Func的开发者Michael DeHaan创建.其Ansible平台是一个开源的配置及计算机管理平台.可实现多节点的软件部署,执行特定任务并进行配置管理. Ansible 跟其他IT自动化技术的区别在于其关注点并非配置管理.应用部署或IT流程工作流,而是提供一个统一的界面来协调所有的IT自动化功能,因此 Ansible的系统更加易用,部署更快.受管理的节点无需安装额外的远程控制软件,由平台通过SSH(Secure S