ZooKeeper 搭建详细步骤之一(单机模式)

ZooKeeper 搭建详细步骤之三(真集群)
ZooKeeper 搭建详细步骤之二(伪集群模式)
ZooKeeper 搭建详细步骤之一(单机模式)
ZooKeeper 及相关概念简介

搭建模式简述

ZooKeeper 的搭建模式包括单机模式、集群模式和伪集群模式,分别适用于不同的场景和需求,从简单的单节点测试环境到复杂的多节点高可用生产环境。在实际部署时,应根据系统的可用性要求、数据量、并发负载等因素选择合适的部署模式。

ZooKeeper 的搭建模式主要包括以下三种:

  1. 单机模式(Standalone Mode)
    在单机模式下,ZooKeeper 仅在一个单独的服务器节点上运行。这种模式主要用于开发测试环境,便于快速部署和调试。由于只有一个节点,没有数据冗余和故障转移机制,因此不具备高可用性。单节点故障会导致整个服务不可用,不适用于生产环境。

  2. 集群模式(Cluster Mode / Distributed Mode)
    集群模式是 ZooKeeper 在生产环境中推荐使用的部署模式。它由多个(通常为奇数个,如 3、5、7 等)独立的服务器节点组成一个 ZooKeeper 集群。每个节点既是服务提供者又是服务消费者,它们之间通过心跳机制保持通信,并通过 ZAB(ZooKeeper Atomic Broadcast)协议实现数据的复制、同步和一致性保证。集群模式提供了高可用性、容错性和可扩展性,即使部分节点发生故障,只要集群中存活节点的数量大于等于半数(即形成“多数派”),ZooKeeper 集群就能继续对外提供服务。

  3. 伪集群模式(Pseudo-Distributed Mode / Local Cluster Mode)
    伪集群模式是在单台物理或虚拟机上模拟多节点集群的部署方式。在同一台机器上启动多个 ZooKeeper 服务实例,每个实例配置不同的端口、数据目录和身份标识(如服务器ID)。尽管所有节点实际上运行在同一台机器上,但从逻辑上看,它们形成了一个小型的 ZooKeeper 集群,能够模拟集群模式的行为,包括数据复制、节点选举等。伪集群模式常用于本地开发和测试环境,便于在单机上模拟多节点集群环境,验证分布式协调逻辑。

Zookeeper 下载

官网: Apache ZooKeeper官网 ,选择最新稳定版本进行下载

在国内,从官网的下载速度较慢,也可以选择国内镜像站下载,比如阿里镜像站:

阿里镜像: https://mirrors.aliyun.com/apache/zookeeper/

单机模式搭建

ZooKeeper单机模式是指在一台服务器上独立运行一个ZooKeeper服务节点,用于满足小型项目或测试环境中的协调服务需求。

搭建步骤概述

以下是 ZooKeeper 单机模式的详细安装和配置步骤:

  1. 下载 ZooKeeper
  • 下载文件一般为一个.tar.gz.zip格式的压缩包,例如 apache-zookeeper-<version>-bin.tar.gz
    • 保存至 linux 的 /opt/ 目录下。
  1. 解压文件

    • 将下载好的压缩包上传到目标服务器,并解压。对于.tar.gz文件,可以使用以下命令:

      tar -xvzf apache-zookeeper-<version>-bin.tar.gz
      
    • 解压后,将会生成一个名为 apache-zookeeper-<version>-bin 的目录,该目录即为ZooKeeper的安装目录。

    • 为了方便配置,可以重命名 ZooKeeper 安装目录。

  2. 创建数据目录和日志目录

    • 根据ZooKeeper的配置要求,需要创建两个目录分别用于存放数据和日志:

      mkdir /path/to/zookeeper_data
      mkdir /path/to/zookeeper_logs
      
  • 示例中的 /path/to/ 应替换为你实际希望存储这些文件的路径,如 /home/<username>/zookeeper/data/home/<username>/zookeeper/logs

    • 如果不需要单独存放日志时,data 和 logs 可以共用一个目录
  1. 配置ZooKeeper

    • 进入ZooKeeper安装目录下的 conf 文件夹:

      cd apache-zookeeper-<version>-bin/conf
      
    • 复制或重命名示例配置文件 zoo_sample.cfgzoo.cfg

      cp zoo_sample.cfg zoo.cfg
      
  2. 编辑配置文件

    • 使用文本编辑器(如 vinanoemacs)打开 zoo.cfg 文件并进行如下配置:

      # 数据目录设置
      dataDir=/path/to/zookeeper_data# 日志目录设置(如果需要单独存放日志)
      dataLogDir=/path/to/zookeeper_logs# 客户端连接端口
      clientPort=2181
      

      /path/to/ 替换成你在第3步中创建的实际目录路径。

  3. 启动ZooKeeper

    • 返回到ZooKeeper的安装目录:

      cd ../..
      
    • 启动ZooKeeper服务:

      bin/zkServer.sh start
      
    • 如果一切正常,你应该能看到类似于 “ZooKeeper JMX enabled by default” 和 “Using config: /path/to/apache-zookeeper--bin/conf/zoo.cfg” 的输出,接着是 “Starting zookeeper … STARTED” 表明服务已成功启动。

连接和验证

验证单机模式运行状态可以通过查看日志或客户端连接的方式来验证

可以通过以下方法检查ZooKeeper服务是否正常运行:

  • 查看日志:检查在第3步中指定的 dataLogDir 中的ZooKeeper日志文件,确认是否有启动成功的消息和其他异常信息。

  • 使用命令行客户端

    • 在ZooKeeper安装目录下,执行命令行客户端以连接到本地ZooKeeper服务:

      bin/zkCli.sh -server localhost:2181
      
    • 如果连接成功,客户端将显示欢迎信息及提示符 [zkshell:0]。你可以尝试执行一些基本的命令,如 ls / 查看根节点下的子节点列表,验证ZooKeeper服务的响应。

通过以上步骤,您已经在单台服务器上成功安装并配置了 ZooKeeper 单机模式。此模式适用于不需要高可用性保证的小型应用场景或开发测试环境。在生产环境中,通常建议使用ZooKeeper集群模式以提供容错能力和数据一致性保障。

步骤举例演示

[zhang@node1 soft]$ pwd
/opt/soft
[zhang@node1 soft]$ ll
total 1042532
-rw-r--r--. 1 zhang zhang  14609453 Apr 20 15:37 apache-zookeeper-3.8.4-bin_.tar.gz
-rw-r--r--. 1 root  root  492368219 Mar 13 16:08 hadoop-3.2.4.tar.gz
-rw-r--r--. 1 root  root  143722924 Mar 13 16:08 jdk-8u281-linux-x64.tar.gz
# 解压到 /opt/apps 下
[zhang@node1 soft]$ tar -zxvf apache-zookeeper-3.8.4-bin_.tar.gz -C /opt/apps
#.......解压过程省略# 进入安装目录
[zhang@node1 soft]$ cd /opt/apps/
[zhang@node1 apps]$ ls
apache-zookeeper-3.8.4-bin  flume  hadoop-3.2.4  hive3.1  jdk  jdk1.8.0_281
# 重命名
[zhang@node1 apps]$ mv apache-zookeeper-3.8.4-bin/ zookeeper# 进入 zookeeper 的安装目录
[zhang@node1 apps]$ cd zookeeper/
[zhang@node1 zookeeper]$ ls
bin  conf  docs  lib  LICENSE.txt  NOTICE.txt  README.md  README_packaging.md
# 新建数据目录和日志目录
[zhang@node1 zookeeper]$ mkdir zk_data
[zhang@node1 zookeeper]$ mkdir zk_logs# 进入配置目录
[zhang@node1 zookeeper]$ cd conf
[zhang@node1 conf]$ ls
configuration.xsl  logback.xml  zoo_sample.cfg
# 使用已有的模板文件,复制命名为 zoo.cfg
[zhang@node1 conf]$ cp zoo_sample.cfg zoo.cfg
# 修改配置为 上面自定义的数据目录和日志目录
[zhang@node1 conf]$ vim zoo.cfg

修改配置文件 zoo.cfg :
在这里插入图片描述
启动 ZooKeeper 服务

zookeeper 安装目录下的 bin 目录

bin/zkServer.sh start # 启动
bin/zkServer.sh stop  # 停止

修改环境变量(可选)

如果想在任何目录下都可以方便调用 zkServer 来启动 zookeeper 服务,可以配置环境变量。

例如,当前用户下的环境变量文件 ~/.bashrc

新增 ZK_HOME 和 修改 PATH

[zhang@node1 conf]$ vim ~/.bashrc 
[zhang@node1 conf]$ 

修改内容如下图:

在这里插入图片描述

启动 ZooKeeper 服务

在安装目录的 bin 目录下

启动服务:bin/zkServer.sh start

停止服务:bin/zkServer.sh stop

重启服务:bin/zkServer.sh restart

[zhang@node1 zookeeper]$ pwd
/opt/apps/zookeeper
[zhang@node1 zookeeper]$ ls
bin  conf  docs  lib  LICENSE.txt  NOTICE.txt  README.md  README_packaging.md  zk_data  zk_logs
# 在启动前可以先看下数据目录和日志目录下是没有任何文件的
[zhang@node1 zookeeper]$ ls zk_data
[zhang@node1 zookeeper]$ ls zk_logs/# 启动服务 (因配置了环境变量,所以这里可以直接使用)
[zhang@node1 zookeeper]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED# 启动成功后,查看数据和日志目录
[zhang@node1 zookeeper]$ ls zk_data
version-2  zookeeper_server.pid
[zhang@node1 zookeeper]$ ls zk_logs/
version-2# 也可以查看进程  多出一个 QuorumPeerMain
[zhang@node1 zookeeper]$ jps
29028 Jps
16533 NodeManager
28888 QuorumPeerMain
2777 NameNode
2906 DataNode

客户端连接

bin 目录下

连接本机默认端口 2181:zkClient.sh

连接指定主机端口:zkCli.sh -server node1:2181

在成功连接 ZooKeeper 后,进程中会多出 ZooKeeperMain 。退出后进程就会终止。

# 客户端连接
[zhang@node1 zookeeper]$ zkCli.sh
Connecting to localhost:2181
2024-04-21 18:33:17,582 [myid:] - INFO  [main:o.a.z.Environment@98] - Client environment:zookeeper.version=3.8.4-9316c2a7a97e1666d8f4593f34dd6fc36ecc436c, built on 2024-02-12 22:16 UTC
2024-04-21 18:33:17,584 [myid:] - INFO  [main:o.a.z.Environment@98] - Client environment:host.name=node1
2024-04-21 18:33:17,584 [myid:] - INFO  [main:o.a.z.Environment@98] - Client environment:java.version=1.8.0_281
# .......省略启动过程
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] # 退出客户端 quit
[zk: node1:2181(CONNECTED) 0] quit
WATCHER::
WatchedEvent state:Closed type:None path:null
2024-04-21 19:53:51,030 [myid:] - INFO  [main:o.a.z.ZooKeeper@1232] - Session: 0x10004c5597e0000 closed
2024-04-21 19:53:51,031 [myid:] - INFO  [main:o.a.z.u.ServiceUtils@45] - Exiting JVM with code 0
2024-04-21 19:53:51,031 [myid:] - INFO  [main-EventThread:o.a.z.ClientCnxn$EventThread@569] - EventThread shut down for session: 0x10004c5597e0000
[zhang@node1 zookeeper]$ 

简单命名操作

# (CONNECTED) 表示当前是连接状态
# 创建节点  zk_test 并设置数据
[zk: node1:2181(CONNECTED) 5] create /zk_test Hello,World!
Created /zk_test
# 获取节点数据
[zk: node1:2181(CONNECTED) 6] get /zk_test
Hello,World!
# 获取节点数据及其他详细信息
[zk: node1:2181(CONNECTED) 8] get -s /zk_test
Hello,World!
cZxid = 0xc
ctime = Sun Apr 21 23:10:44 CST 2024
mZxid = 0xc
mtime = Sun Apr 21 23:10:44 CST 2024
pZxid = 0xc
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0
# 查看根节点
[zk: node1:2181(CONNECTED) 16] ls /
[zk_test, zookeeper]
# 关闭连接
[zk: node1:2181(CONNECTED) 17] close
WATCHER::
WatchedEvent state:Closed type:None path:null
2024-04-21 23:15:52,787 [myid:] - INFO  [main:o.a.z.ZooKeeper@1232] - Session: 0x10004c5597e0005 closed
2024-04-21 23:15:52,787 [myid:] - INFO  [main-EventThread:o.a.z.ClientCnxn$EventThread@569] - EventThread shut down for session: 0x10004c5597e0005
# 状态变为 (CLOSED)
[zk: node1:2181(CLOSED) 18] 
# 可以重新连接
[zk: node1:2181(CLOSED) 18] connect

注意:

quit 和 close 不同

quit 退出客户端命令窗口,同时也关闭连接

close 只是关闭连接,并不退出客户端

到此,单机模式的配置、ZooKeeper 启动、客户端登录等介绍到这里,由于篇幅较长,集群的搭建和使用放在下一篇来详细介绍!
ZooKeeper 搭建详细步骤之三(真集群)
ZooKeeper 搭建详细步骤之二(伪集群模式)
ZooKeeper 搭建详细步骤之一(单机模式)
ZooKeeper 及相关概念简介

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/830715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8核心原理深度解析

YOLOv8源码地址: https://github.com/ultralytics/ultralytics 一、简介: 根据官方描述,Yolov8是一个SOTA模型,它建立在Yolo系列历史版本的基础上,并引入了新的功能和改进点,以进一步提升性能和灵活性,使其成为实现目标检测、图像分割、姿态估计等任务的最佳选择。其具体…

AI图书推荐:将 ChatGPT和Excel融合倍增工作效率

《将 ChatGPT和Excel融合倍增工作效率》&#xff08; Hands-on ChatGPT in Excel. Enhance Your Excel Workbooks&#xff09;由Mitja Martini撰写&#xff0c;旨在教授读者如何将ChatGPT与Excel结合使用&#xff0c;以提升工作效率和创造AI增强的Excel工具。它还提供了Excel中…

AnomalyGPT——使用大型视觉语言模型进行工业异常检测的算法解析与应用

1.概述 工业缺陷检测是工业自动化和质量控制中的一个重要环节&#xff0c;其目的是在生产过程中识别和分类产品或组件中的缺陷&#xff0c;以确保最终产品的质量满足既定标准。这项技术的应用可以显著提高生产效率&#xff0c;降低成本&#xff0c;并减少由于缺陷产品导致的潜…

sgg_ssm学习--前端搭建遇到的问题

目录 问题1&#xff1a;由于我是解压缩软件nodejs&#xff0c;没有添加系统路径 解决&#xff1a;添加nodejs的路径 到系统 path中 问题2&#xff1a;vscode 终端输入npm命令 报错 解决(如图所示在vscode打开前端工程&#xff0c;终端修改如下配置)&#xff1a; 问题1&…

如何在iPhone上恢复出厂设置后恢复数据

你不想让这种情况发生&#xff0c;但它确实发生了。您必须将iPhone恢复出厂设置。当您的 iPhone 上出现软件问题且无法修复时&#xff0c;可能会发生这种情况。相反&#xff0c;在更新期间&#xff0c;或者您的iPhone遇到问题时&#xff0c;iPhone上的数据不再存在。 不过不用…

Spark SQL编程初级实践

参考链接 Spark编程: Spark SQL基本操作 2020.11.01_df.agg("age"->"avg")-CSDN博客 RDD编程初级实践-CSDN博客 Spark和Hadoop的安装-CSDN博客 1. Spark SQL基本操作 { "id":1 , "name":" Ella" , "age":…

使用多网络和Kubernetes转变您的通讯应用程序

传统的 Kubernetes 网络在基本的 Pod 到 Pod 连接方面表现出色&#xff0c;但在满足通讯工作负载的安全性、性能和合规性要求时可能存在不足。这限制了通讯提供商充分利用 Kubernetes 的可扩展性和敏捷性优势的能力。 Google Cloud 的多网络方法使通讯提供商能够克服这些限制&a…

笔记-PPT绘图导出高清无失真图片

问题描述&#xff1a;PPT绘图已经用了高清图&#xff08;jpg、tif格式&#xff09;&#xff0c;但论文图片还是不清晰&#xff0c;打印出来还是有点糊 以下是PPT导出高清不失真图片&#xff08;emf格式&#xff09;的具体描述。 目录 一、绘图工具二、操作步骤 一、绘图工具 …

数据挖掘之基于Lightgbm等多模型消融实验的信用欺诈检测实现

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在当前的金融环境中&#xff0c;信用欺诈行为日益增多&#xff0c;给金融机构和消费者带来了巨大的损…

【已解决】pandas读excel中长数字变成科学计数法的问题

pandas 读excel中的长数字时&#xff0c;即使excel中已经设置为文本&#xff0c;读进df后也会自动变成科学计数法。 在日常的数据分析和处理工作中&#xff0c;Excel和pandas是数据分析师们不可或缺的得力助手。然而&#xff0c;在使用pandas读取Excel文件时&#xff0c;我们有…

Spring Boot的热部署工具“AND”Swagger测试工具

Spring Boot的热部署&Swagger测试页面的使用 热部署指的是在项目无需重启的情况下&#xff0c;只需要刷新页面&#xff0c;即可获得已经修改的样式或功能。要注意该工具一般用于开发环境&#xff0c;在生产环境中最好不要添加这个工具。 对于无需重启便可刷新这么方便的工…

【linux-1-Ubuntu常用命令-vim编辑器-Vscode链接ubuntu远程开发】

目录 1. 安装虚拟机Vmare和在虚拟机上安装Ubuntu系统&#xff1a;2. 常用的Ubuntu常识和常用命令2.1 文件系统结构2.2 常用命令2.3 vim编辑器 3. Ubuntu能联网但是ping不通电脑&#xff1a;4. Windows上安装VScode链接ubuntu系统&#xff0c;进行远程开发&#xff1a; 1. 安装虚…

理解sourcemap:调试和部署的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

根据顶层的id递归查询出全部子节点

效果图 根据输入的id为2查询出所有的红色框起来的节点 mapper接口 TSystemOrg getOrgByorgId(String orgId); List<TSystemOrg> getOrgListByParentId(String parentId);mapper.xml <!--根据id查询org--> <select id"getOrgByorgId" resultType&…

【JVM】简述类加载器及双亲委派机制

双亲委派模型&#xff0c;是加载class文件的一种机制。在介绍双亲委派模型之前&#xff0c;我需要先介绍几种类加载器&#xff08;Class Loader&#xff09;。 1&#xff0c;类加载器 Bootstrap&#xff0c;加载lib/rt.jar&#xff0c;charset.jar等中的核心类&#xff0c;由…

【算法】【贪心算法】【leetcode】870. 优势洗牌

题目地址&#xff1a;https://leetcode.cn/problems/advantage-shuffle/description/ 题目描述&#xff1a; 给定两个长度相等的数组 nums1 和 nums2&#xff0c;nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。 返回 nums1 的任意排列&…

界面组件DevExpress中文教程 - 如何在Node.js应用中创建报表?

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 获取DevExpress Reporting最新正式版下载(Q技术…

【SQL Server】入门教程-基础篇(三)

目录 前言 SQL 常用函数学习 AVG – 平均值 COUNT – 汇总函数 ​编辑MAX – 最大值 ​编辑MIN – 最小值 ​编辑SUM – 求和 UCASE/UPPER – 大写 LCASE/LOWER – 小写 ROUND – 数值取舍 NOW/SYSDATE – 当前时间 前言 这一篇博客&#xff0c;是Sql Server函数学…

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例 文章目录 1.前言2.编译2.1版本说明2.2 seatunnel2.3.4-release分支配置2.3maven调优配置 3.web1.0.0适配3.1配置文件修改和新增文件3.2手动拷贝jar修改依赖3.3修改web不兼容的代码3.4 web编译打包 4.运行m…

什么是 Web3 的生成式 AI?

从 Web 1.0 的静态、单向通信到 Web 2.0 的动态、用户驱动的格局&#xff0c;互联网在二十年的时间里经历了一场显着的转变。现在&#xff0c;当我们站在 Web 3.0 时代的边缘时&#xff0c;我们正在见证更具颠覆性的事物的曙光&#xff1a;生成式人工智能 (AI) 融入我们的数字世…