资讯详情

Zookeeper - 入门教程

📅 2026/11/3 9:10:09 | 华诺云谱 👁 阅读
Zookeeper - 入门教程
学习地址https://www.bilibili.com/video/BV1to4y1C7gw/?fromsearchseid3274963114541821848vd_source461545ff50a35eaeaa8218ecdc5f7152时长5小时52分钟1.Zookeeper介绍Zookeeper 是一个开源的分布式的为分布式框架提供协调服务的Apache 项目。ZooKeeper 和 Nacos 是同一类东西都是微服务架构里的 “注册中心 配置中心”ZooKeeper老牌、稳定、强一致性偏底层协调服务注册 / 配置只是它的一部分能力。Nacos阿里开源专门为微服务设计注册 配置一体易用性更强。关键区别对比ZooKeeperNacos定位分布式协调服务通用微服务注册配置中心专用一致性强一致CP可切换 CP/AP易用性复杂要自己封装开箱即用界面友好生态Hadoop、Kafka、Dubbo 老项目Spring Cloud Alibaba、Dubbo 现代微服务功能核心是节点、锁、队列专职服务发现配置管理你该怎么选老项目、Dubbo 老版本、大数据生态 → 用ZooKeeper新项目、Spring Cloud Alibaba、要简单好用 → 用Nacos2.工作机制Zookeeper从设计模式角度来理解是一个基于观察者模式设计的分布式服务管理框架它负责存储和管理大家都关心的数据然后接受观察者的注册一旦这些数据的状态发生变化Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。3.入门-特点Zookeeper一个领导者Leader多个跟随者Follower组成的集群。集群中只要有半数以上节点存活Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。全局数据一致每个Server保存一份相同的数据副本Client客户端无论连接到哪个Server数据都是一致的。更新请求顺序执行来自同一个Client客户端的更新请求按其发送顺序依次执行。数据更新原子性一次数据更新要么成功要么失败。实时性在一定时间范围内Client客户端能读到最新数据。4.入门-数据结构ZooKeeper 数据模型的结构与Unix文件系统很类似整体上可以看作是一棵树每个节点称做一个ZNode。每一个ZNode 默认能够存储1MB的数据每个ZNode 都可以通过其路径唯一标识。5.入门-应用场景提供的服务包括统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。统一命名服务在分布式环境下经常需要对应用/服务进行统一命名便于识别。例如IP不容易记住而域名容易记住统一配置管理分布式环境下配置文件同步非常常见1.一般要求一个集群中所有节点的配置信息是一致的比如Kafka集群。2.对配置文件修改后希望能够快速同步到各个节点上。配置管理可交由ZooKeeper实现1.可将配置信息写入ZooKeeper上的一个Znode。2.各个客户端服务器监听这个Znode。3.一旦Znode中的数据被修改ZooKeeper将通知各个客户端服务器。统一集群管理分布式环境中实时掌握每个节点的状态是必要的。可根据节点实时状态做出一些调整。ZooKeeper可以实现实时监控节点状态变化1.可将节点信息写入ZooKeeper上的一个ZNode。2.监听这个ZNode可获取它的实时状态变化。服务器动态上下线软负载均衡在Zookeeper中记录每台服务器的访问数让访问数最少的服务器去处理最新的客户端请求6.入门-下载地址1.官网地址https://zookeeper.apache.org/2.下载截图3.下载 Linux环境安装的环境安装的tar包7.本地-安装1.安装前准备1安装JDK2拷贝apache-zookeeper-3.5.7-bin.tar.gz安装包到Linux系统下3解压到指定目录[atguiguhadoop102 software]$ tar -zxvf apache-zookeeper-3.5.7- bin.tar.gz -C /opt/module/4修改名称[atguiguhadoop102 module]$ mv apache-zookeeper-3.5.7 -bin/ zookeeper-3.5.72.配置修改1将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg[atguiguhadoop102 conf]$ mv zoo_sample.cfg zoo.cfg2打开 zoo.cfg 文件修改 dataDir 路径[atguiguhadoop102 zookeeper-3.5.7]$ vim zoo.cfg修改如下内容dataDir/opt/module/zookeeper-3.5.7/zkData3在/opt/module/zookeeper-3.5.7/这个目录上创建 zkData 文件夹[atguiguhadoop102 zookeeper-3.5.7]$ mkdir zkData3.操作 Zookeeper1启动 Zookeeper[atguiguhadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start2查看进程是否启动[atguiguhadoop102 zookeeper-3.5.7]$ jps4020 Jps4001 QuorumPeerMain3查看状态[atguiguhadoop102 zookeeper-3.5.7]$ bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /opt/module/zookeeper-3.5.7/bin/…/conf/zoo.cfgMode: standalone4启动客户端[atguiguhadoop102 zookeeper-3.5.7]$ bin/zkCli.sh5退出客户端[zk: localhost:2181(CONNECTED) 0] quit6停止 Zookeeper[atguiguhadoop102 zookeeper-3.5.7]$ bin/zkServer.sh stop8.本地-配置参数解读Zookeeper中的配置文件zoo.cfg中参数含义解读如下1.tickTime 2000通信心跳时间Zookeeper服务器与客户端心跳时间单位毫秒2.initLimit 10LF初始通信时限Leader和Follower初始连接时能容忍的最多心跳数tickTime的数量3.syncLimit 5LF同步通信时限Leader和Follower之间通信时间如果超过syncLimit * tickTimeLeader认为Follwer死掉从服务器列表中删除Follwer。4.dataDir保存Zookeeper中的数据注意默认的tmp目录容易被Linux系统定期删除所以一般不用默认的tmp目录。5.clientPort 2181客户端连接端口通常不做修改。9.本地-集群安装1.集群规划在 hadoop102、hadoop103 和 hadoop104 三个节点上都部署 Zookeeper。思考如果是10台服务器需要部署多少台Zookeeper?2.解压安装1在 hadoop102 解压 Zookeeper 安装包到/opt/module/目录下[atguiguhadoop102 software]$ tar -zxvf apache-zookeeper-3.5.7- bin.tar.gz -C /opt/module/2修改 apache-zookeeper-3.5.7-bin 名称为 zookeeper-3.5.7[atguiguhadoop102 module]$ mv apache-zookeeper-3.5.7-bin/zookeeper-3.5.73.配置服务器编号1在/opt/module/zookeeper-3.5.7/这个目录下创建 zkData[atguiguhadoop102 zookeeper-3.5.7]$ mkdir zkData2在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个 myid 的文件[atguiguhadoop102 zkData]$ vi myid在文件中添加与 server 对应的编号注意上下不要有空行左右不要有空格2注意添加 myid 文件一定要在 Linux 里面创建在notepad里面很可能乱码3拷贝配置好的 zookeeper 到其他机器上[atguiguhadoop102 module ]$ xsync zookeeper-3.5.7并分别在 hadoop103、hadoop104 上修改 myid 文件中内容为 3、44.配置zoo.cfg文件1重命名/opt/module/zookeeper-3.5.7/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg[atguiguhadoop102 conf]$ mv zoo_sample.cfg zoo.cfg2打开 zoo.cfg 文件[atguiguhadoop102 conf]$ vim zoo.cfg#修改数据存储路径配置dataDir/opt/module/zookeeper-3.5.7/zkData#增加如下配置#######################cluster##########################server.2hadoop102:2888:3888server.3hadoop103:2888:3888server.4hadoop104:2888:38883配置参数解读server.AB:C:D。A 是一个数字表示这个是第几号服务器集群模式下配置一个文件 myid这个文件在 dataDir 目录下这个文件里面有一个数据就是 A 的值Zookeeper 启动时读取此文件拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。B 是这个服务器的地址C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口D 是万一集群中的 Leader 服务器挂了需要一个端口来重新进行选举选出一个新的Leader而这个端口就是用来执行选举时服务器相互通信的端口。4同步 zoo.cfg 配置文件[atguiguhadoop102 conf]$ xsync zoo.cfg5.集群操作1分别启动 Zookeeper[atguiguhadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start[atguiguhadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start[atguiguhadoop104 zookeeper-3.5.7]$ bin/zkServer.sh start2查看状态[atguiguhadoop102 zookeeper-3.5.7]# bin/zkServer.sh status JMX enabled by defaultUsing config: /opt/module/zookeeper-3.5.7/bin/…/conf/zoo.cfg Mode:follower[atguiguhadoop103 zookeeper-3.5.7]# bin/zkServer.sh status JMX enabled by defaultUsing config: /opt/module/zookeeper-3.5.7/bin/…/conf/zoo.cfg Mode:leader[atguiguhadoop104 zookeeper-3.4.5]# bin/zkServer.sh status JMX enabled by defaultUsing config: /opt/module/zookeeper-3.5.7/bin/…/conf/zoo.cfg Mode:follower
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑