zookeeper

1.zookeeper简介

定义:分布式服务框架,是Apache Hadoop的子项目,主要用来解决到分布式应用中常遇到的一些数据管理问题,如果:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

简单来说就是文件系统+监听通知机制。

文件系统:zookeeper是维护一个类似文件系统的数据结构,每个子目录都被称为znode(目录节点),和文件系统一样,可随意增加、删除znode,在一个znode下新建、删除znode,唯一不同在于znode是可以存储数据的。有四种类型的znode:

PERSISTENT-持久化目录节点,客户端与zookeeper断开连接后,节点依然存在

PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点,客户端与zookeeper断开连接后,节点依然存在,只是 Zookeeper 给该节点名称进行顺序编号

EPHEMERAL-临时目录节点,客户端与zookeeper断开连接后,删除节点

EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点,客户端与zookeeper断开连接后,删除节点,只是 Zookeeper给该节点名称进行顺序编号

监听通知机制:客户端注册监听它关心的目录节点,当目录发生变化时(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端

可做:实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能。以分布式应用配置管理为例来说明zookeeper可做的事情。

例如:应用部署在多台服务器上,如果改变应用配置文件,需要逐一修改,很繁琐,但是如果配置文件在zookeeper上的某个目录节点中,然后所有相关应用对这个目录节点进行解析,一旦配置信息发生变化,多个服务器就会收到zookeeper的通知,然后从zookeeper获取最新的的应用配置到系统中

2.zookeeper单机模式安装

step1:配置java环境,执行java -version检验环境

step2:下载并解压zookeeper

cd /usr/local

wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz

tar -zxvf zookeeper-3.4.12.tar.gz

cd zookeeper-3.4.12

step3:重命名配置文件 # cp conf/zoo_sample.cfg conf/zoo.cfg

step4:启动zookeeper # bin/zkServer.sh start

step5:检测是否启动成功,用zookeeper客户端连接服务器 # bin/zkCli.sh

3.zookeeper使用

使用zookeeper客户端操作

ls #ls命令查看zk中所有内容

create /zkPro myData #创建名称为zkPro的znode节点,并包含字符串为myData的内容

get /zkPro #获取名称为zkPro的znode节点包含的字符串内容

set /zkPro myData_update #通过set命令对zk关联的字符串进行设置

delete /zkPro #删除znode

使用java api操作

引入org.apache.zookeeper依赖包

create /username qingfeng #zk中增加目录节点,并将配置信息保存在其中

启动两个zookeeper客户端程序可读取到zk中username目录节点的数据,并且zk中username目录节点中的数据更新后,后台程序也及时收到了监听目录变更后的值

4.zookeeper集群模式安装

本地搭建伪集群,一台服务器启动三个zk实例组成集群,真正的集群无非是实例IP地址不同,搭建方法没有区别。

step1:配置java环境,执行java -version检验环境

step2:下载并解压zookeeper

step3:重命名配置文件 # cp conf/zoo_sample.cfg conf/zoo-1.cfg

step4:修改配置文件zoo-1.cfg,原配置文件里有的,修改成下面的值,没有的则加上

vim conf/zoo-1.cfg

dataDir=/tmp/zookeeper-1

clientPort=2181

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

step5:从zoo-1.cfg复制两个配置文件zoo-2.cfg和zoo-3.cfg,只需修改dataDir和clientPort即可

cp conf/zoo-1.cfg conf/zoo-2.cfg

cp conf/zoo-1.cfg conf/zoo-3.cfg

vim conf/zoo-2.cfg

dataDir=/tmp/zookeeper-2

clientPort=2182

vim conf/zoo-2.cfg

dataDir=/tmp/zookeeper-3

clientPort=2183

step6:标识serverId,创建三个文件夹/tmp/zookeeper-1,/tmp/zookeeper-2,/tmp/zookeeper-2,在每个目录中创建文件myid 文件,写入当前实例的server id,即1.2.3

cd /tmp/zookeeper-1

vim myid

1

cd /tmp/zookeeper-2

vim myid

2

cd /tmp/zookeeper-3

vim myid

3

step7:启动三个zk实例

bin/zkServer.sh start conf/zoo-1.cfg

bin/zkServer.sh start conf/zoo-2.cfg

bin/zkServer.sh start conf/zoo-3.cfg

step8:检测集群状态,也可以直接用命令"zkCli.sh -server IP:PORT"连接zookeeper服务端检测 或 bin/zkServer.sh status conf/zoo-1.cfg

相关推荐
开着拖拉机回家7 小时前
【HDP】zookeeper未授权漏洞修复
linux·zookeeper·kerberos·授权·zk-client
AllWe$2 天前
分布式框架 - ZooKeeper
分布式·zookeeper·云原生
问道飞鱼3 天前
分布式中间件-分布式协调服务zookeeper
分布式·zookeeper·中间件
Amor风信子3 天前
【小小的脑袋,大大的疑问?】如何在Zookeeper中配置集群?
分布式·zookeeper
確定饿的猫3 天前
zookeeper
linux·分布式·zookeeper
不喜欢就睡大觉4 天前
Zookeeper+消息队列(kafka)
分布式·zookeeper·kafka
YCyjs4 天前
Zookeeper
分布式·zookeeper·kafka
Amor风信子4 天前
【简单记录】Linux系统安装ZooKeeper
linux·运维·zookeeper
祈心无尘5 天前
zookeeper向管控平台上报状态
分布式·zookeeper·云原生