openEuler24.03 LTS下安装ZooKeeper集群

目录

前提条件

ZooKeeper集群规划

下载ZooKeeper

解压

配置环境变量

配置ZooKeeper

配置zoo.cfg

配置myid

分发到其他机器

修改其他机器myid

启动集群

关闭集群

集群启停脚本


前提条件

准备3台Linux机器,并安装好Java8

ZooKeeper集群规划

node2node3node4
zookeeperzookeeperzookeeper

安装的ZooKeeper版本为3.7.1,首先在node2安装ZooKeeper,然后分发到node3、node4。

下载ZooKeeper

下载ZooKeeper安装包并上传到node2 /opt/software目录

https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz

解压

解压

[liang@node2 software]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/module

重命名

[liang@node2 software]$ cd /opt/module/
[liang@node2 module]$ ls | grep zookeeper
apache-zookeeper-3.7.1-bin
[liang@node2 module]$ mv apache-zookeeper-3.7.1-bin zookeeper-3.7.1

配置环境变量

[liang@node2 module]$ sudo vim /etc/profile.d/my_env.sh

添加如下内容

#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.7.1
export PATH=$PATH:$ZOOKEEPER_HOME/bin

让环境变量生效

[liang@node2 module]$ source /etc/profile

配置ZooKeeper

配置zoo.cfg

[liang@node2 module]$ cd $ZOOKEEPER_HOME/conf/
[liang@node2 conf]$ ls
configuration.xsl  log4j.properties  zoo_sample.cfg
[liang@node2 conf]$ cp zoo_sample.cfg zoo.cfg
[liang@node2 conf]$ ls
configuration.xsl  log4j.properties  zoo.cfg  zoo_sample.cfg
[liang@node2 conf]$ vim zoo.cfg

修改内容

dataDir=/opt/module/zookeeper-3.7.1/zkData

同时,文件末尾添加如下配置

server.2=node2:2888:3888
server.3=node3:2888:3888
server.4=node4:2888:3888

配置myid

在dataDir配置目录(zoo.cfg中配置了dataDir)下创建myid,在myid中配置服务器编号

cd $ZOOKEEPER_HOME
mkdir zkData
cd zkData

创建myid

vim myid

内容如下:

2

分发到其他机器

分发ZooKeeper安装目录到node3、node4

xsync /opt/module/zookeeper-3.7.1

分发环境变量

sudo /home/liang/bin/xsync /etc/profile.d/my_env.sh

根据提示输入node2机器root账户的登录密码

分别让node3及node4的环境变量生效

[liang@node3 ~]$ source /etc/profile
[liang@node4 ~]$ source /etc/profile

修改其他机器myid

分别修改node3、node4的myid,myid的内容改为机器对应的服务器编号。

node3机器

[liang@node3 ~]$ vim $ZOOKEEPER_HOME/zkData/myid

内容修改为

3

node4机器

[liang@node4 ~]$ vim $ZOOKEEPER_HOME/zkData/myid

内容修改为

4

启动集群

分别在集群各个机器启动ZooKeeper服务

[liang@node2 conf]$ zkServer.sh start
[liang@node3 conf]$ zkServer.sh start
[liang@node4 conf]$ zkServer.sh start

分别查看集群各个机器ZooKeeper状态

[liang@node2 conf]$ zkServer.sh status
[liang@node3 conf]$ zkServer.sh status
[liang@node4 conf]$ zkServer.sh status

可以看到三台有一台机器为leader状态,另外两台机器为follower状态。

查看进程

[liang@node2 conf]$ jps
[liang@node3 conf]$ jps
[liang@node4 conf]$ jps

关闭集群

分别在集群各个机器关闭ZooKeeper服务

[liang@node2 conf]$ zkServer.sh stop
[liang@node3 conf]$ zkServer.sh stop
[liang@node4 conf]$ zkServer.sh stop

查看进程

[liang@node2 conf]$ jps
[liang@node3 conf]$ jps
[liang@node4 conf]$ jps

集群启停脚本

在node2机器执行

zk.sh

vim ~/bin/zk.sh

内容如下:

#!/bin/bashcase $1 in
"start"){for i in node2 node3 node4doecho ---------- zookeeper $i 启动 ------------ssh $i "/opt/module/zookeeper-3.7.1/bin/zkServer.sh start"done
};;
"stop"){for i in node2 node3 node4doecho ---------- zookeeper $i 停止 ------------    ssh $i "/opt/module/zookeeper-3.7.1/bin/zkServer.sh stop"done
};;
"status"){for i in node2 node3 node4doecho ---------- zookeeper $i 状态 ------------    ssh $i "/opt/module/zookeeper-3.7.1/bin/zkServer.sh status"done
};;
esac

添加权限

chmod +x ~/bin/zk.sh

测试

zk.sh start
zk.sh status
zk.sh stop

如有需要,可点击查看:配套视频教程

完成!enjoy it!

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

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

相关文章

Python 实现机器学习小项目实战教程*

markdown 复制 Python 实现机器学习小项目实战教程 本教程将通过一个完整的机器学习项目案例,从数据预处理到模型部署,帮助初学者快速掌握机器学习核心流程。项目以经典的鸢尾花分类为例,使用 Scikit-learn 库实现。 1. 项目概述 目标 构…

rust学习笔记21-闭包

在 Rust 中,闭包(Closures) 是一种可以捕获其环境中的变量的匿名函数。它们非常灵活,既可以作为普通函数使用,也可以捕获和操作定义它们的作用域中的变量。闭包是 Rust 中处理短小逻辑代码块的强大工具,特别…

linux实现rsync+sersync实时数据备份

1.概述 rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具 2.端口和运行模式 tcp/873 采用C/S模式(客户端/服务器模式) 3.特点 可以镜像保存整个目录和文件第一次全量备份(备份全部的文件),之后是增量备份(只备份变化的文件) 4. 数…

【第30节】MFC编程:ListCtrl控件和TreeCtrl控件

目录 引言 一、高级控件ListCtrl 二、高级控件TreeCtrl 三、Shell控件 四、CImageList 五、综合代码示例 引言 在MFC编程里,高级控件能大幅提升应用程序的交互性与功能性。接下来,咱们会详细讲讲ListCtrl和TreeCtrl这两个高级控件。不仅会介绍它们…

为什么 ThreadLocalMap 的 key 是弱引用 value是强引用

问题一:为什么 ThreadLocalMap 的 key 是弱引用? 【假设 Entry 的 key 是对 ThreadLocal 对象的强引用】:这个 Entry 又持有 ThreadLocal 对象和 value 对象的强引用。如果在其他地方都没有对这个 ThreadLocla 对象的引用了、然后在使用 Thr…

DeepSeek本地部署(linux)

一、下载并安装Ollama 1.下载Ollama Ollama官网:Ollama 点击"Download",会跳转至下载页面。 1.1在线下载安装 可复制此命令到Linux服务器进行在线下载,如下载速度过慢,可选择离线下载安装。 curl -fsSL https://ollama.com/install.sh | sh1.2离线下载安装 …

基于Halcon仿VM流程列表的执行效果

Halcon本身应用需要一定的门槛,但是也可以封装成类似VM简单易操作的样子 上期文章分享的是连线功能,本期分享数据传参 1,定义通用属性和方法 public class BaseModel {public HObject HInput { get; set; }//图像输入public HObject HOutpu…

打车APP订单系统逻辑梳理与实现

一、逻辑分析 打车 APP 订单系统是整个打车业务的核心,负责处理从乘客下单到行程结束的一系列流程,涉及乘客、司机和平台三方的交互。 乘客端 下单:乘客打开 APP,输入上车地点、目的地,选择车型等信息后提交订单。此时…

杂草YOLO系列数据集4000张

一份开源数据集——杂草YOLO数据集,该数据集适用于农业智能化、植物识别等计算机视觉应用场景。 数据集详情 ​训练集:3,664张高清标注图像​测试集:180张多样性场景样本​验证集:359张严格筛选数据 下载链接 杂草YOLO数据集分…

算法 | 河马优化算法原理,公式,应用,算法改进及研究综述,matlab代码

以下是关于河马优化算法(Hippopotamus Optimization Algorithm, HO)的完整综述,包含原理、公式、应用场景、改进方向及可直接运行的 Matlab 完整代码。一、算法原理 河马优化算法(HO)由Amiri等人于2024年提出,是受河马群体行为启发的元启发式算法,其核心基于以下三阶段行…

知识就是力量——HELLO GAME WORD!

你好!游戏世界! 简介环境配置前期准备好文章介绍创建头像小功能组件安装本地中文字库HSV颜色空间音频生成空白的音频 游戏UI开发加载动画注册登录界面UI界面第一版第二版 第一个游戏(贪吃蛇)第二个游戏(俄罗斯方块&…

Android Activity 的 launchMode 与 Task Stack 管理

Android 中的 android:launchMode 决定了 Activity 在启动时如何在任务栏中管理它的存在方式。下面我们来结合 Task Stack 管理详细解释。 1. android:launchMode 的四种模式 1.1 standard (标准模式, 默认) 启动方式:每次启动都会创建一个新实例并压入栏任务堆中…

2025选择手机之我见

自从开店之后,没当有手机召开发布会,我就得去大概看看,了解一下屏幕,充电之类的东西。毕竟跟我的生意息息相关,而且还得研究要不要上新,从我目前卖货的情况来看,折叠屏不是大众的选择&#xff0…

【区块链安全 | 第九篇】基于Heimdall设计的智能合约反编译项目

文章目录 背景目的安装1、安装 Rust2、克隆 heimdall-dec3、编译 heimdall-dec4、运行 heimdall-dec 使用说明1、访问 Web 界面2、输入合约信息3、查看反编译结果 实战演示1、解析普通合约2、解析代理合约 背景 在区块链安全研究中,智能合约的审计和分析至关重要。…

利用 PCI-Express 交换机实现面向未来的推理服务器

在数据中心系统的历史上,没有比被 Nvidia 选为其 AI 系统的组件供应商更高的赞誉了。 这就是为什么新兴的互连芯片制造商 Astera Labs 感到十分高兴,因为该公司正在 PCI-Express 交换机、PCI-Express 重定时器和 CXL 内存控制器方面与 Broadcom 和 Marv…

智能交通预警杆:守护道路安全的科技先锋

在城市化进程加速以及机动车保有量持续增长的背景下,道路交通安全与拥堵问题渐趋严峻。智能交通预警杆应时而生,其集成多种高科技功能,正逐步成为现代城市交通管理中至关重要的智能装备,对于提升交通效率、保障出行安全发挥着关键…

flink 基站与服务器长连接,每次连接和断开都会上报数据,统计过去一小时每个基站断开次数和时长

模拟生成数据 CREATE TABLE ods_station_log (base_station_id int, -- 基站IDevent_type int, -- 事件类型: connect/disconnectevent_time TIMESTAMP_LTZ(3), -- 事件时间WATERMARK FOR event_time AS event_time - INTERVAL 5 SECOND -- 允许5秒乱序 ) WITH …

自定义一些C语言的字符串函数

一、代码如下 (一)十六进制字符串转十进制整数 #include<stdio.h> // 把一个十六进制字符转成十进制整数 int hexToInt(char hexs[]){ int index; int k 0; for(k 0; ; k) { if(hexs[k] \0) { index k; break; …

核函数(机器学习深度学习)

一、核函数的基本概念 核函数&#xff08;Kernel Function&#xff09; 是机器学习中处理非线性问题的核心工具&#xff0c;通过隐式映射将数据从原始空间转换到高维特征空间&#xff0c;从而在高维空间中实现线性可分或线性建模。其数学本质是计算两个样本在高维空间中的内积…

微服务架构中的精妙设计:服务注册/服务发现-Eureka

一.使用注册中心背景 1.1服务远程调用问题 服务之间远程调⽤时, 我们的URL是写死的 String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 缺点&#xff1a; 当更换机器, 或者新增机器时, 这个URL就需要跟着变更, 就需要去通知所有的相关服…