zookeeper

发布于:2024-09-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到