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

ZooKeeper集群环境部署

1. ZooKeeper安装部署

1.1 系统要求

1.1.1 支持的平台

ZooKeeper 由多个组件组成。一些组件得到广泛支持,而另一些组件仅在较小的一组平台上得到支持。

  • 客户端是 Java 客户端库,由应用程序用于连接到 ZooKeeper 集群。

  • 服务器是在 ZooKeeper 集群节点上运行的 Java 服务器。

  • 本机客户端是用 C 实现的客户端,类似于 Java 客户端,由应用程序用于连接到 ZooKeeper 集群。

  • Contrib 指多个可选的附加组件。

下表描述了在不同操作系统平台上运行每个组件的承诺支持级别。

1.1.2 支持矩阵

操作系统客户端服务器本机客户端Contrib
GNU/Linux开发和生产开发和生产开发和生产开发和生产
Solaris开发和生产开发和生产不支持不支持
FreeBSD开发和生产开发和生产不支持不支持
Windows开发和生产开发和生产不支持不支持
Mac OS X仅限开发仅限开发不支持不支持
  • 对于矩阵中未明确提及为受支持的任何操作系统,组件可能可以工作,也可能无法工作。ZooKeeper 社区将修复针对其他平台报告的明显错误,但不会提供全面支持。

1.1.3 必需的软件

属性描述或推荐配置
运行环境Java 1.8 或更高版本(支持 JDK 8 LTS、JDK 11 LTS、JDK 12)
部署方式作为 ZooKeeper 服务器的集群运行
最小推荐集群大小三个 ZooKeeper 服务器
部署建议建议在不同的机器上运行不同的 ZooKeeper 服务器
Yahoo! 部署示例专用的 RHEL 机箱,配备以下配置:
处理器双核处理器
内存2GB RAM
存储80GB IDE 硬盘
支持的 Java 版本不支持 Java 9 和 10

1.2 部署ZooKeeper集群

主机服务/程序备注
191.168.110.21(4C/4G)JDK、ZooKeeperZK 集群
191.168.110.32(4C/4G)JDK、ZooKeeper-
191.168.110.33(4C/4G)JDK、ZooKeeper-

1.1.1 配置HOSTS解析

# 三台机器均操作
[root@zk-server-all ~]# cat >> /etc/hosts <<EOF
191.168.110.31 zk-server-01
191.168.110.32 zk-server-02
191.168.110.33 zk-server-03
EOF

1.1.2 安装JDK环境

  • 二进制包下载连接:Index of java-local/jdk

# 三台机器均要安装,只在zk-server-01上操作
# ZK 依赖于 JDK,所以部署 ZK 之前确保 JDK 环境正常。
​
[root@zk-server-01 ~]# wget -c https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
[root@zk-server-01 ~]# rsync -avz jdk-8u202-linux-x64.tar.gz zk-server-02:/root/
[root@zk-server-01 ~]# rsync -avz jdk-8u202-linux-x64.tar.gz zk-server-03:/root/

1.1.3 解压

[root@zk-server-all ~]# mkdir -p /home/data
[root@zk-server-all ~]# tar xzf jdk-8u202-linux-x64.tar.gz -C /home/data/
[root@zk-server-all ~]# mv /home/data/jdk1.8.0_202/ /home/data/jdk
[root@zk-server-all ~]# ln -s /home/data/jdk/bin/* /usr/bin/
[root@zk-server-all ~]# java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

1.1.4 下载稳定版本的ZK

下载地址:https://zookeeper.net.cn/releases.html

image-20240806144720100

1.1.5 安装

[root@zk-server-all ~]# wget -c https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
[root@zk-server-all ~]# tar xzf apache-zookeeper-3.8.4-bin.tar.gz -C /usr/local/
[root@zk-server-all ~]# mv /usr/local/apache-zookeeper-3.8.4-bin/ /usr/local/zookeeper
[root@zk-server-all ~]# ll /usr/local/zookeeper/
total 36
drwxr-xr-x 2 1000 1000  4096 Feb 13 06:15 bin
drwxr-xr-x 2 1000 1000    72 Feb 13 06:15 conf
drwxr-xr-x 5 1000 1000  4096 Feb 13 06:16 docs
drwxr-xr-x 2 root root  4096 Aug  7 14:37 lib
-rw-r--r-- 1 1000 1000 11358 Feb 13 06:15 LICENSE.txt
-rw-r--r-- 1 1000 1000  2084 Feb 13 06:15 NOTICE.txt
-rw-r--r-- 1 1000 1000  2335 Feb 13 06:15 README.md
-rw-r--r-- 1 1000 1000  3570 Feb 13 06:15 README_packaging.md

1.1.6 修改配置

[root@zk-server-all ~]# cd /usr/local/zookeeper/conf/
[root@zk-server-all conf]# mv zoo_sample.cfg zoo.cfg
[root@zk-server-all conf]# cd ..
​
# 首先 zookeeper 目录下创建 zookeeper 数据和日志的存放目录,并且添加文件读写权限
[root@zk-server-all zookeeper]# mkdir {data,logs}
[root@zk-server-all zookeeper]# cd conf/
[root@zk-server-all conf]# vim zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1= zk-server-01:2888:3888
server.2= zk-server-02:2888:3888
server.3= zk-server-03:2888:3888

[!IMPORTANT]

  • tickTime=2000: 这个参数设置了基本的时间单元(tick),它是 Zookeeper 会话超时和选举超时等操作的时间基础。这里设置为 2000 毫秒。

  • initLimit=10: 这个参数定义了 Zookeeper 服务在初始化时,允许的最小服务器连接数(服务器间)。这个值应该是 2 * tickTime 的倍数,这里设置为 10 个 tickTime。

  • syncLimit=5: 这个参数定义了 Zookeeper 服务在进行数据同步时,允许的最大服务器连接数(服务器间)。这个值应该是 2 * tickTime 的倍数,这里设置为 5 个 tickTime。

  • dataDir=/usr/local/zookeeper/data: 这个参数指定了 Zookeeper 存储数据的目录。所有的数据和快照都会存储在这个目录下。

  • dataLogDir=/usr/local/zookeeper/logs: 这个参数指定了 Zookeeper 存储事务日志的目录。事务日志用于确保数据的一致性。

  • clientPort=2181: 这个参数定义了 Zookeeper 服务监听客户端连接的端口号。客户端通过这个端口与 Zookeeper 服务进行通信。

  • autopurge.snapRetainCount=500: 这个参数设置了 Zookeeper 服务自动清理时保留的快照数量。这里设置为保留 500 个快照。

  • autopurge.purgeInterval=24: 这个参数设置了 Zookeeper 服务自动清理的间隔时间,单位是小时。这里设置为每 24 小时清理一次。

  • server.1=zk-server-01:2888:3888: 这个参数定义了 Zookeeper 集群中的服务器 1 的信息。zk-server-01 是服务器的主机名,2888 是用于集群通信的端口,3888 是用于领导者选举的端口。

  • server.2=zk-server-02:2888:3888: 类似于 server.1,这是集群中服务器 2 的配置。

  • server.3=zk-server-03:2888:3888: 这是集群中服务器 3 的配置,与 server.1server.2 类似。

1.1.7 创建 ServerID 标识

[root@zk-server-01 ~]# echo "1" > /usr/local/zookeeper/data/myid
​
[root@zk-server-02 ~]# echo "2" > /usr/local/zookeeper/data/myid
​
[root@zk-server-03 ~]# echo "3" > /usr/local/zookeeper/data/myid

1.1.8 集群启动测试

[root@zk-server-01 ~]# /usr/local/zookeeper/bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@zk-server-01 ~]# /usr/local/zookeeper/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
​
​
[root@zk-server-02 ~]# /usr/local/zookeeper/bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@zk-server-02 ~]# /usr/local/zookeeper/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
​
[root@zk-server-03 ~]# /usr/local/zookeeper/bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@zk-server-03 ~]# /usr/local/zookeeper/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

相关文章:

ZooKeeper集群环境部署

1. ZooKeeper安装部署 1.1 系统要求 1.1.1 支持的平台 ZooKeeper 由多个组件组成。一些组件得到广泛支持&#xff0c;而另一些组件仅在较小的一组平台上得到支持。 客户端是 Java 客户端库&#xff0c;由应用程序用于连接到 ZooKeeper 集群。 服务器是在 ZooKeeper 集群节点…...

10 个 C# 关键字和功能

在 Stack Overflow 调查中&#xff0c;C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序&#xff0c;范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能&#xff0c;对于开发人员来说&#xff0c;要跟上新功能发布的最新信息将是一项艰巨的任务。本…...

贪心算法之重叠区间问题

以下四个题都是重叠区间问题 452. 用最少数量的箭引爆气球 为了让气球尽可能重叠&#xff0c;先按照气球起始位置由大到小排序tips&#xff1a;sort默认就可以实现以上排序&#xff0c;不需要写cmp重点&#xff1a;当下一个气球的左边界不小于上一个气球的右边界时(即有重叠的…...

Python爬虫入门教程(非常详细)适合零基础小白

一、什么是爬虫&#xff1f; 1.简单介绍爬虫 爬虫的全称为网络爬虫&#xff0c;简称爬虫&#xff0c;别名有网络机器人&#xff0c;网络蜘蛛等等。 网络爬虫是一种自动获取网页内容的程序&#xff0c;为搜索引擎提供了重要的数据支撑。搜索引擎通过网络爬虫技术&#xff0c;将…...

ArcGIS Pro基础:软件的常用设置:中文语言、自动保存、默认底图

上图所示&#xff0c;在【选项】&#xff08;Options&#xff09;里找到【语言】设置&#xff0c;将语言切换为中文选项&#xff0c;记得在安装软件时&#xff0c;需要提前安装好ArcGIS语言包。 上图所示&#xff0c;在【选项】里找到【编辑】设置&#xff0c;可以更改软件默认…...

依赖注入+中央事件总线:Vue 3组件通信新玩法

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-依赖注入-中央事件总线 目录 中央事件总线使用 依赖注入使用 总结 中央事件总线 依赖注入…...

EasyCVR视频汇聚平台构建远程安防监控:5大亮点解析,助力安防无死角

随着科技的飞速发展&#xff0c;远程安防监控系统已经成为现代社会中不可或缺的一部分&#xff0c;无论是在小区、公共场所还是工业领域&#xff0c;安防监控都发挥着至关重要的作用。而EasyCVR作为一款功能强大的视频监控综合管理平台&#xff0c;其在构建远程安防监控系统方面…...

fastadmin安装插件报500的错误

项目场景&#xff1a; 项目新建后&#xff0c;想在本地项目中安装相关的插件&#xff0c;但是在插件管理页面点击安装的时候一直报500的错误。 问题描述 我们将项目中的调试打开&#xff0c;在application/config.php里修改 app_debug&#xff0c;将false改为true&#xff0c…...

速盾:为什么需要服务器和cdn?

在互联网时代&#xff0c;服务器和CDN&#xff08;内容分发网络&#xff09;起着非常重要的作用。它们是实现高效、稳定和可靠网络服务的关键组成部分。下面我将详细阐述为什么需要服务器和CDN。 首先&#xff0c;服务器是互联网上存储、处理和传输数据的中心枢纽。当我们在浏…...

十四、模拟实现 list 类

Ⅰ . list 基本框架的实现 01 结点的建立 为了实现链表&#xff0c;我们首先要做的应该是建立结点 为了和真正的 list 进行区分&#xff0c;我们仍然在自己的命名空间内实现 代码实现&#xff1a; namespace yxt {// 建立结点template<class T>struct ListNode{T _d…...

JavaScript简介之引入方式

JavaScript 引入方式 提问&#xff1a;CSS的引入方式&#xff1f;在学习 JavaScript 语法之前&#xff0c;我们首先要知道在哪里写 JavaScript 才行。想要在 HTML 中引入 JavaScript&#xff0c;一般有 3 种方式。 外部 JavaScript 内部 JavaScript 元素事件 JavaScript&#…...

同一台电脑上安装不同版本的nodejs(搭配VSCode)

今天拉取了一个前后端分离的项目&#xff0c;运行前端的时候&#xff0c;出现node版本不匹配的情况。 本文章将从安装node.js开始到VSCode使用进行讲解 1、去官网下载node版本 以16版本为例&#xff0c;需要哪个版本&#xff0c;就在网址上把版本号替换即可 https://nodejs.o…...

python小游戏之摇骰子猜大小

最近学习Python的随机数&#xff0c;逻辑判断&#xff0c;循环的用法&#xff0c;就想找一些练习题&#xff0c;比如小游戏猜大小&#xff0c;程序思路如下&#xff1a; 附上源代码如下&#xff1a; 摇骰子的函数&#xff0c;这个函数其实并不需要传任何参数&#xff0c;调用后…...

C++入门——12继承

1.继承 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结构&#xff0c;体现了由简…...

Python做统计图之美

Python数据分析可视化 案例效果图 import pandas as pd import matplotlib.pyplot as plt import matplotlib# 数据 data {"房型": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],"住宅类型": ["普通宅", "普通宅", "普通宅", &q…...

激光雷达点云投影到图像平面

将激光雷达点云投影到图像平面涉及几何变换和相机模型的应用。以下是该过程的基本原理&#xff1a; 1. 坐标系转换 激光雷达生成的点云通常位于激光雷达的坐标系中&#xff0c;而图像则在相机坐标系中。为了将点云投影到图像上&#xff0c;首先需要将点云从激光雷达坐标系转换…...

[python]将anaconda默认创建环境python版本设置为32位的

首先看看gpt怎么回答的 装了Anaconda。如果尚未安装&#xff0c;可以从Anaconda官网下载适合你的操作系统的安装程序&#xff0c;并按照安装向导进行安装。 二、创建32位Python环境 在Anaconda中&#xff0c;你可以通过修改环境变量来尝试切换到32位模式&#xff08;尽管这并…...

Jmeter+Influxdb+Grafana平台监控性能测试过程(三种方式)

一、Jmeter自带插件监控 下载地址&#xff1a;Install :: JMeter-Plugins.org 安装&#xff1a;下载后文件为jmeter-plugins-manager-1.3.jar&#xff0c;将其放入jmeter安装目录下的lib/ext目录&#xff0c;然后重启jmeter&#xff0c;即可。 启动Jmeter&#xff0c;测试计…...

[创业之路-135] :ERP、PDM、EDM、Git各种的用途和区别,硬件型初创公司需要哪些管理工具?

目录 前言&#xff1a; 一、ERP&#xff08;企业资源计划&#xff09; 二、PDM&#xff08;产品数据管理系统&#xff09; 三、EDM&#xff08;文档管理系统&#xff0c;有时也指电子邮件营销&#xff09; 四、Git 总结 五、硬件研发、生产型企业需要哪些管理工具&#…...

通过剪枝与知识蒸馏优化大型语言模型:NVIDIA在Llama 3.1模型上的实践与创新

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

别再死记硬背期望公式了!用Python模拟骰子游戏,5分钟搞懂数学期望的底层逻辑

用Python玩转骰子游戏&#xff1a;5分钟可视化理解数学期望 当第一次接触概率论中的"数学期望"概念时&#xff0c;很多人会被公式中的求和符号和概率权重搞得晕头转向。但如果我们换一种方式——用Python代码模拟掷骰子游戏&#xff0c;这个抽象概念立刻会变得生动起…...

量子同态加密:理论与实践的突破

1. 量子同态加密&#xff1a;理论与实践的桥梁量子同态加密&#xff08;Quantum Homomorphic Encryption, QHE&#xff09;是密码学领域的一项突破性技术&#xff0c;它允许在加密的量子数据上直接执行任意量子计算&#xff0c;而无需事先解密。这项技术对于构建真正隐私保护的…...

War3地图制作入门:不用写代码,用触发器和变量也能做出有趣玩法

War3地图制作入门&#xff1a;用触发器和变量打造专属游戏玩法 魔兽争霸3&#xff08;War3&#xff09;地图编辑器是游戏史上最强大的玩家创作工具之一&#xff0c;即使没有任何编程基础&#xff0c;也能通过触发器和变量系统创造出令人惊叹的游戏玩法。本文将带你从零开始&…...

LeetCode 每日一题笔记 日期:2026.05.16 题目:154. 寻找旋转排序数组中的最小值 II

LeetCode 每日一题笔记 0. 前言 日期&#xff1a;2026.05.16题目&#xff1a;154. 寻找旋转排序数组中的最小值 II难度&#xff1a;困难标签&#xff1a;数组、二分查找 1. 题目理解 问题描述&#xff1a; 给定一个可能存在重复元素的升序数组&#xff0c;经过1~n次旋转后&…...

零基础也能学!收藏这份AI大模型入门指南,开启你的高薪之路

本文介绍了AI大模型在当前科技趋势中的核心地位&#xff0c;以及各行各业对AI人才的迫切需求。文章指出&#xff0c;即使没有技术基础&#xff0c;普通人也能通过学习应用开发路线掌握AI技能&#xff0c;并提供了循序渐进的学习步骤&#xff0c;包括打好Python编程基础、学习提…...

3个高效方法解决抖音素材管理难题:从零散文件到有序素材库

3个高效方法解决抖音素材管理难题&#xff1a;从零散文件到有序素材库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

银河麒麟系统下Qt5.9.9编译fcitx-qt5的版本适配与源码修改实战

1. 银河麒麟系统下Qt中文输入问题的根源 在银河麒麟系统上开发Qt应用程序时&#xff0c;中文输入法无法正常切换是个常见痛点。这个问题本质上源于Qt输入法插件与Qt版本之间的兼容性断裂。我曾在多个项目中遇到这种情况&#xff1a;明明系统自带输入法可以正常工作&#xff0c;…...

Crontab实战指南:从基础配置到高级调试技巧

1. Crontab入门&#xff1a;从零开始掌握定时任务 第一次接触Crontab时&#xff0c;我被这个看似简单却功能强大的工具深深吸引。作为Linux系统中最经典的定时任务工具&#xff0c;它就像一位不知疲倦的助手&#xff0c;能够精确地在指定时间执行你交代的任何任务。记得刚开始使…...

fastAPI的依赖注入 与 .net Core的依赖注入区别

...

告别环境配置烦恼:用PHPStudy+VSCode搭建PHP调试环境(含XDebug配置避坑指南)

告别环境配置烦恼&#xff1a;用PHPStudyVSCode搭建PHP调试环境&#xff08;含XDebug配置避坑指南&#xff09; 刚接触PHP开发时&#xff0c;最令人头疼的莫过于环境配置。明明跟着教程一步步操作&#xff0c;却总是卡在某个环节无法继续。特别是XDebug调试器的配置&#xff0c…...