当前位置: 首页 > news >正文

实战:ZooKeeper 操作命令和集群部署

ZooKeeper 操作命令

ZooKeeper的操作命令主要用于对ZooKeeper服务中的节点进行创建、查看、修改和删除等操作。以下是一些常用的ZooKeeper操作命令及其说明:

一、启动与连接

  1. 启动ZooKeeper服务器:

    ./zkServer.sh start
    

    这个命令用于启动ZooKeeper服务器。

  2. 连接ZooKeeper客户端:

    ./zkCli.sh
    

    或者,指定服务器地址和端口号进行连接:

    ./zkCli.sh -server <ip>:<port>
    
  3. 退出ZooKeeper客户端:

    quit
    
  4. 关闭ZooKeeper服务器:

    ./zkServer.sh stop
    
  5. 查看ZooKeeper服务器状态:

    ./zkServer.sh status
    

二、节点操作

1. 查看节点
  • ls命令:用于列出指定节点下的所有子节点。

    ls <path> [watch]
    

    其中,<path>是节点的路径,[watch]是可选参数,用于监听该节点的变化。 

    图片

  • ls2命令:与ls命令类似,但会同时列出子节点和节点的状态信息。

    ls2 <path> [watch]
    

    图片

  • get命令:用于获取指定节点的数据内容和属性信息。

    get <path> [watch]
    

    图片

2. 创建节点
  • create命令:用于创建一个新的节点。

    create <path> <data> [acl]
    

    其中,<path>是节点的路径,<data>是节点存储的数据,[acl]是可选的访问控制列表。 

    图片

    create -s <path> <data>
    

    顺序节点会在节点名后自动添加一个递增的序列号。

    create -e <path> <data>
    

    临时节点在客户端会话结束后会自动删除。

    • 创建临时节点:使用-e选项。

    • 创建顺序节点:使用-s选项。

3. 修改节点
  • set命令:用于修改指定节点的数据内容。 bash set <path> <data> [version] 其中,<path>是节点的路径,<data>是新的数据内容,[version]是可选的数据版本号,用于控制更新的条件。

4. 删除节点
  • delete命令:用于删除指定节点。

    delete <path> [version]
    

    其中,<path>是节点的路径,[version]是可选的数据版本号。注意,delete命令只能删除空节点(即没有子节点的节点)。 

    图片

    • 删除非空节点:一些ZooKeeper版本或扩展可能提供了deleteall命令来删除非空节点,但这不是ZooKeeper核心功能的标准部分。在实际使用中,需要先删除非空节点的所有子节点,然后再删除该节点。 

      图片

三、其他命令

  • stat命令:用于获取指定节点的状态信息。

    stat <path> [watch]
    

    图片

  • help命令:在ZooKeeper客户端中,可以使用help命令来查看所有可用的命令及其说明。

    help
    

这些命令是ZooKeeper操作中常用的基本命令,它们涵盖了节点的创建、查看、修改和删除等核心功能。在实际使用中,可以根据需要选择合适的命令进行操作。

ZooKeeper 集群部署

ZooKeeper集群部署是一个涉及多个步骤和配置的过程,主要包括环境准备、ZooKeeper安装、配置文件修改、启动和验证集群等关键步骤。以下是一个以3台服务器详细的部署指南:

一、环境准备

  1. 硬件资源:

    • 通常建议使用3台或更多(推荐为2n+1台,n为大于1的整数)的服务器来部署ZooKeeper集群,以确保高可用性和容错性。

    • 每台服务器应具有足够的CPU、内存和存储空间来支持ZooKeeper的运行。

    • 三个节点, 修改操作系统的/etc/hosts文件,添加IP与主机名映射:

10.109.142.53 zk-001
10.109.190.32 zk-002
10.109.165.20 zk-003
  1. 操作系统:

    • 选择支持ZooKeeper的操作系统,如Linux(推荐CentOS、Ubuntu等)。

  2. 网络配置:

    • 确保所有服务器都能相互通信,且网络延迟和丢包率保持在较低水平。

    • 配置好服务器的IP地址和主机名,并确保它们能在集群中正确解析。

  3. 软件依赖:

    • 安装Java环境,因为ZooKeeper是用Java编写的。推荐使用Java 8或更高版本。

    • 安装必要的工具和库,如tar、wget等,以便下载和解压ZooKeeper安装包。

二、ZooKeeper安装

  1. 下载ZooKeeper安装包:

    • 访问Apache ZooKeeper的官方网站(https://zookeeper.apache.org/)或镜像站点,下载最新版本的ZooKeeper安装包。

    • 可以使用wget命令或浏览器下载到本地,然后上传到服务器。

  2. 解压安装包:

    • 将下载的ZooKeeper安装包解压到指定的目录,如/usr/local/

    • 重命名解压后的文件夹,以便更容易识别,如zookeeper-3.x.x

三、配置文件修改

1. 复制配置文件:
  • 进入ZooKeeper的conf目录,复制zoo_sample.cfg文件为zoo.cfg

2. 编辑zoo.cfg文件:

配置如下:

# 服务器之间或客户端与服务器之间维持心跳的时间间隔
# tickTime以毫秒为单位。tickTime=2000# 集群中的follower服务器(F)与leader服务器(L)之间的初始连接心跳数initLimit=10# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数syncLimit=5# 快照保存目录# 不要设置为/tmp,该目录重新启动后会被自动清除dataDir=/data/zookeeper/zk1/data# 日志保存目录dataLogDir=/data/zookeeper/zk1/logs# 客户端连接端口clientPort=2181# 客户端最大连接数。# 根据自己实际情况设置,默认为60个# maxClientCnxns=60# 三个接点配置,格式为:# server.服务编号=服务地址、通信端口、选举端口server.1=zk-001:2888:3888server.2=zk-002:2888:3888server.3=zk-003:2888:3888

说明:

  • 修改dataDir参数,指定ZooKeeper存储快照的目录。

  • 如果需要,还可以设置dataLogDir参数,指定ZooKeeper存储事务日志的目录。

  • 修改clientPort参数,设置ZooKeeper服务监听的端口号(默认为2181)。

  • 在配置文件末尾添加集群配置,格式为server.n=host:peerPort:electionPort,其中n是服务器的唯一标识(与myid文件中的值对应);host是服务器的IP地址或主机名;peerPort是用作leader与follwer之间的通信端口号(数据同步),默认为2888;electionPort是用于选举Leader投票的端口号(默认为3888)。

这一步主要是配图中的框出来的内容:

3. 创建myid文件:
  • 在每台服务器的dataDir指定的目录下,创建一个名为myid的文件,内容为该服务器的唯一标识(与zoo.cfg中配置的server.n中的n相对应)。

以第一台为例 vim myid:

按照以上步骤,三台服务器做同样的操作。

四、启动ZooKeeper集群

  1. 启动ZooKeeper服务:

    • 在每台服务器上,进入ZooKeeper的bin目录,执行./zkServer.sh start命令分别启动ZooKeeper服务。

  2. 验证集群状态:

    • 在每台服务器上执行./zkServer.sh status命令,查看ZooKeeper服务的状态。

    • 正常情况下,集群中应该有一个Leader和多个Follower。可以通过查看日志或使用ZooKeeper客户端工具(如zkCli.sh)来进一步验证集群的运行状态。

如第三台服务器: 

图片

五、注意事项

  1. 防火墙和安全组配置:

    • 确保ZooKeeper服务监听的端口(默认为2181)在服务器的防火墙和安全组中已开放。

  2. 数据备份和恢复:

    • 定期备份ZooKeeper的数据目录和日志目录,以便在数据丢失或损坏时能够恢复。

  3. 监控和日志:

    • 配置监控工具来监控ZooKeeper集群的性能和健康状况。

    • 定期查看ZooKeeper的日志文件,以便及时发现并解决问题。

  4. 版本兼容性:

    • 确保集群中所有服务器上的ZooKeeper版本相同,以避免版本不兼容导致的问题。

通过以上步骤,您可以成功部署一个ZooKeeper集群,并确保其能够稳定运行。

相关文章:

实战:ZooKeeper 操作命令和集群部署

ZooKeeper 操作命令 ZooKeeper的操作命令主要用于对ZooKeeper服务中的节点进行创建、查看、修改和删除等操作。以下是一些常用的ZooKeeper操作命令及其说明&#xff1a; 一、启动与连接 启动ZooKeeper服务器&#xff1a; ./zkServer.sh start这个命令用于启动ZooKeeper服务器…...

linux运维一天一个shell命令之 top详解

概念&#xff1a; top 命令是 Unix 和类 Unix 操作系统&#xff08;如 Linux、macOS&#xff09;中一个常用的系统监控工具&#xff0c;它提供了一个动态的实时视图&#xff0c;显示系统的整体性能信息&#xff0c;如 CPU 使用率、内存使用情况、进程列表等。 基本用法 root…...

大模型微调:参数高效微调(PEFT)方法总结

PEFT (Parameter-Efficient Fine-Tuning) 参数高效微调是一种针对大模型微调的技术&#xff0c;旨在减少微调过程中需要调整的参数量&#xff0c;同时保持或提高模型的性能。 以LORA、Adapter Tuning 和 Prompt Tuning 为主的PEFT方法总结如下 LORA 论文题目&#xff1a;LORA:…...

Spark+实例解读

第一部分 Spark入门 学习教程&#xff1a;Spark 教程 | Spark 教程 Spark 集成了许多大数据工具&#xff0c;例如 Spark 可以处理任何 Hadoop 数据源&#xff0c;也能在 Hadoop 集群上执行。大数据业内有个共识认为&#xff0c;Spark 只是Hadoop MapReduce 的扩展&#xff08…...

WPF多语言国际化,中英文切换

通过切换资源文件的形式实现中英文一键切换 在项目中新建Language文件夹&#xff0c;添加资源字典&#xff08;xaml文件&#xff09;&#xff0c;中文英文各一个。 在资源字典中写上想中英文切换的字符串&#xff0c;需要注意&#xff0c;必须指定key值&#xff0c;并且中英文…...

Halcon深度学习分类模型

1.Halcon20之后深度学习支持CPU训练模型&#xff0c;没有money买显卡的小伙伴有福了。但是缺点也很明显&#xff0c;就是训练速度超级慢&#xff0c;推理效果也没有GPU好&#xff0c;不过学习用足够。 2.分类模型是Halcon深度学习最简单的模型&#xff0c;可以用在物品分类&…...

洗地机哪种牌子好?洗地机排行榜前十名公布

洗地机市场上品牌琳琅满目&#xff0c;每个品牌都有其独特的魅力和优势。消费者在选择时&#xff0c;往往会根据自己的实际需求、预算以及对产品性能的期望来做出决策。因此&#xff0c;无论是哪个品牌的洗地机&#xff0c;只要能够满足用户的清洁需求&#xff0c;提供便捷的操…...

C++中的虚函数与多态机制如何工作?

在C中&#xff0c;虚函数和多态机制是实现面向对象编程的重要概念。 虚函数是在基类中声明的函数&#xff0c;可以在派生类中进行重写。当基类的指针或引用指向派生类的对象时&#xff0c;通过调用虚函数可以实现动态绑定&#xff0c;即在运行时确定要调用的函数。 多态是指通…...

《LeetCode热题100》---<哈希三道>

本篇博客讲解 LeetCode热题100道中的哈希篇中的三道题。分别是 1.第一道&#xff1a;两数之和&#xff08;简单&#xff09; 2.第二道&#xff1a;字母异位词分组&#xff08;中等&#xff09; 3.第三道&#xff1a;最长连续序列&#xff08;中等&#xff09; 第一道&#xff1…...

秒懂C++之string类(下)

目录 一.接口说明 1.1 erase 1.2 replace&#xff08;最好别用&#xff09; 1.3 find 1.4 substr 1.5 rfind 1.6 find_first_of 1.7 find_last_of 二.string类的模拟实现 2.1 构造 2.2 无参构造 2.3 析构 2.4.【】运算符 2.5 迭代器 2.6 打印 2.7 reserve扩容 …...

github简单地操作

1.调节字体大小 选择options 选择text 选择select 选择你需要的参数就可以了。 2.配置用户名和邮箱 桌面右键&#xff0c;选择git Bash Here git config --global user.name 用户名 git config --global user.email 邮箱名 3.用git实现代码管理的过程 下载别人的项目 git …...

模型改进-损失函数合集

模版 第一步在哪些地方做出修改&#xff1a; 228行 self.use_wiseiouTrue 230行 self.wiou_loss WiseIouLoss(ltypeMPDIoU, monotonousFalse, inner_iouTrue, focaler_iouFalse) 238行 wiou self.wiou_loss(pred_bboxes[fg_mask], target_bboxes[fg_mask], ret_iouFalse…...

C++模板(初阶)

1.引入 在之前的笔记中有提到&#xff1a;函数重载&#xff08;特别是交换函数&#xff08;Swap&#xff09;的实现&#xff09; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right) {do…...

下面关于Date类的描述错误的一项是?

下面关于Date类的描述错误的一项是&#xff1f; A. java.util.Date类下有三个子类&#xff1a;java.sql.Date、java.sql.Timestamp、java.sql.Time&#xff1b; B. 利用SimpleDateFormat类可以对java.util.Date类进行格式化显示&#xff1b; C. 直接输出Date类对象就可以取得日…...

【Python面试题收录】Python编程基础练习题①(数据类型+函数+文件操作)

本文所有代码打包在Gitee仓库中https://gitee.com/wx114/Python-Interview-Questions 一、数据类型 第一题&#xff08;str&#xff09; 请编写一个Python程序&#xff0c;完成以下任务&#xff1a; 去除字符串开头和结尾的空格。使用逗号&#xff08;","&#…...

C# Nmodbus,EasyModbusTCP读写操作

Nmodbus读写 两个Button控件分别为 读取和写入 分别使用控件的点击方法 ①引用第三方《NModbus4》2.1.0版本 全局 public SerialPort port new SerialPort("COM2", 9600, Parity.None, 8, (StopBits)1); ModbusSerialMaster master; public Form1() port.Open();…...

spark常用参数调优

目录 1.set spark.grouping.sets.reference.hivetrue;2.set spark.locality.wait.rack0s3.set spark.locality.wait0s;4.set spark.executor.memoryOverhead 2G;5.set spark.sql.shuffle.partitions 1000;6.set spark.shuffle.file.buffer 256k7. set spark.reducer.maxSizeInF…...

C#/WinFrom TCP通信+ 网线插拔检测+客服端异常掉线检测

Winfor Tcp通信(服务端) 今天给大家讲一下C# 关于Tcp 通信部分&#xff0c;这一块的教程网上一大堆&#xff0c;不过关于掉网&#xff0c;异常断开连接的这部分到是到是没有多少说明&#xff0c;有方法 不过基本上最多的两种方式&#xff08;1.设置一个超时时间&#xff0c;2.…...

一篇文章掌握Python爬虫的80%

转载&#xff1a;一篇文章掌握Python爬虫的80% Python爬虫 Python 爬虫技术在数据采集和信息获取中有着广泛的应用。本文将带你掌握Python爬虫的核心知识&#xff0c;帮助你迅速成为一名爬虫高手。以下内容将涵盖爬虫的基本概念、常用库、核心技术和实战案例。 一、Python 爬虫…...

【用户会话信息在异步事件/线程池的传递】

用户会话信息在异步事件/线程池的传递 author:shengfq date:2024-07-29 version:1.0 背景: 同事写的一个代码功能,是在一个主线程中通过如下代码进行异步任务的执行,结果遇到了问题. 1.ThreadPool.execute(Runnable)启动一个子线程执行异步任务 2.applicationContext.publis…...

PCap04电容测量实战:从传感器连接到串口通信的完整指南

PCap04电容测量实战&#xff1a;从传感器连接到串口通信的完整指南 当工程师面对高精度电容测量需求时&#xff0c;PCap04芯片往往成为解决复杂问题的关键。这款集成了数字信号处理能力的电容数字转换器(CDC)&#xff0c;能够将皮法级电容变化转化为精确的数字信号。不同于传统…...

Realtek RTL8125 2.5GbE网卡驱动技术指南

Realtek RTL8125 2.5GbE网卡驱动技术指南 【免费下载链接】realtek-r8125-dkms A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE. 项目地址: https://gitcode.com/gh_mirrors/re/realtek-r8125-dkms 1. 问题诊断&#xff1a;网络设备识别…...

别再让AI失忆了!手把手教你用Mem0为ChatGPT添加长期记忆(附Next.js实战代码)

为Next.js聊天应用注入长期记忆&#xff1a;Mem0集成实战指南 当你的AI助手开始记住用户的咖啡偏好和生日祝福时&#xff0c;整个交互体验会发生质的变化。本文将带你从零开始&#xff0c;在Next.js应用中实现这种"记忆魔法"。 1. 环境准备与Mem0初始化 首先创建一个…...

老旧Mac设备焕新:使用开源工具OpenCore Legacy Patcher实现系统升级全攻略

老旧Mac设备焕新&#xff1a;使用开源工具OpenCore Legacy Patcher实现系统升级全攻略 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 一、问题诊断&#xff1a;评估老旧M…...

从XMind到禅道:定制化脚本实现测试用例高效导入

1. 为什么需要从XMind导入测试用例到禅道&#xff1f; 在日常测试工作中&#xff0c;XMind思维导图因其直观的结构和高效的编辑方式&#xff0c;成为很多测试工程师编写测试用例的首选工具。我自己也深有体会&#xff0c;用XMind梳理测试点特别顺手&#xff0c;一个下午就能完成…...

【生产环境实录】Mojo嵌入Python解释器时core dump突增300%:我们如何通过LLVM IR层Hook定位并修复内存所有权越界

第一章&#xff1a;【生产环境实录】Mojo嵌入Python解释器时core dump突增300%&#xff1a;我们如何通过LLVM IR层Hook定位并修复内存所有权越界问题现象与紧急响应 上线后72小时内&#xff0c;Mojo服务在调用 PyRun_String 执行动态Python代码片段时&#xff0c;core dump率从…...

告别Finalshell内存焦虑:实测Xshell 8与MobaXterm,哪款才是低资源占用的SSH神器?

深度评测&#xff1a;Xshell 8与MobaXterm如何解决SSH工具的资源占用难题&#xff1f; 当你的开发工作流被频繁的内存告警打断时&#xff0c;选择一款轻量高效的SSH工具就成为了提升生产力的关键。作为每天需要连接多台服务器的开发者&#xff0c;我深刻理解那种看着任务管理器…...

手把手教你用modf()和fmod()解决C语言浮点数计算中的常见坑

深入解析C语言浮点数计算&#xff1a;modf()与fmod()的实战应用 浮点数计算在C语言开发中无处不在&#xff0c;从游戏物理引擎到嵌入式传感器数据处理&#xff0c;精确的浮点运算直接关系到程序行为的正确性。然而&#xff0c;许多开发者第一次遭遇浮点数计算误差时&#xff0c…...

Connect to Oracle Database with JDBC Driver

1. Overview The Oracle Database is one of the most popular relational databases. In this tutorial, we’ll learn how to connect to an Oracle Database using a JDBC Driver. 2. The Database To get us started, we need a database. If we don’t have access to …...

Windows Defender Remover:彻底移除Windows安全组件的终极解决方案

Windows Defender Remover&#xff1a;彻底移除Windows安全组件的终极解决方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh…...