在Linux上安装Zookeeper集群(zookeeper-3.5.9)

news2025/1/14 1:01:29

记录:455

场景:在CentOS 7.9操作系统上,使用zookeeper-3.5.9版本,在三台机器上,安装Zookeeper集群。

版本:zookeeper-3.5.9,CentOS 7.9,Linux kernel-5.4.218。

1.主机规划

目标:使用三台主机部署Zookeeper集群。

主机app161;IP:192.168.19.161;端口:22181,28001,28501。

主机app162;IP:192.168.19.162;端口:22181,28001,28501。

主机app163;IP:192.168.19.163;端口:22181,28001,28501。

2.下载zookeeper-3.5.9安装包

下载版本:apache-zookeeper-3.5.9-bin.tar.gz

下载地址:https://archive.apache.org/dist/zookeeper/

下载命令:wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz

解析:下载完成后,apache-zookeeper-3.5.9.tar.gz包在当前目录。

3.解压zookeeper包到指定目录

3.1解压

命令:tar -zxvf /home/apps/software/apache-zookeeper-3.5.9-bin.tar.gz -C /home/opt/zk

解析:解压到指定目录:/home/opt/zk/apache-zookeeper-3.5.9-bin。

3.2重命名

命令:mv /home/opt/zk/apache-zookeeper-3.5.9-bin /home/opt/zk/zookeeper-3.5.9

解析:把apache-zookeeper-3.5.9重命名为zookeeper-3.5.9。

4.创建zookeeper的数据和日志目录

数据和日志目录可以放在/home/opt/zk/zookeeper-3.5.9内,也可以独立放置。

数据目录命令:mkdir -p /home/opt/zk/data

日志目录命令:mkdir -p /home/opt/zk/log

解析:data目录是存放zookeeper运行数据。log目录存放zookeeper运行日志。

5.修改zookeeper的配置

5.1把zoo_sample.cfg复制并重命名为zoo.cfg

命令:cp -r /home/opt/zk/zookeeper-3.5.9/conf/zoo_sample.cfg  /home/opt/zk/zookeeper-3.5.9/conf/zoo.cfg

解析:zoo_sample.cfg是官方提供的模板配置,用户按需配置就行。

(1)把zoo_sample.cfg复制并重命名为zoo.cfg

5.2修改zoo.cfg配置文件

修改命令:vi /home/opt/zk/zookeeper-3.5.9/conf/zoo.cfg

修改内容:

#修改数据目录和日志目录
dataDir=/home/opt/zk/data
dataLogDir=/home/opt/zk/log
#修改端口号,默认是2181
clientPort=22181
#zookeeper集群配置
server.1=192.168.19.161:28001:28501
server.2=192.168.19.162:28001:28501
server.3=192.168.19.163:28001:28501

5.3解析集群配置格式

在zoo.cfg文件中的zookeeper集群配置格式说明。

格式: server.A = B:C:D

A: 是一个数字,集群中表示第几号服务器。

B: 服务器IP地址。

C: 是一个端口号,用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口。

D: 是一个端口号,是在leader挂掉是专门用来进行选举leader所用的端口。

6.把主机app161配置的zookeeper拷贝到其它主机

6.1远程创建目录

脚本名称:mkdir_script.sh

脚本内容:

#!/bin/bash
for host_name in app162 app163
do
  ssh -t root@${host_name} 'mkdir -p /home/opt/zk/zookeeper-3.5.9/ ;\
   mkdir -p /home/opt/zk/data/ ;\
   mkdir -p /home/opt/zk/log/'
done

执行脚本:bash mkdir_script.sh

6.2远程拷贝zookeeper到其它主机

脚本名称:scp_script.sh

脚本内容:

#!/bin/bash
for host_name in app162 app163
do
  scp -r /home/opt/zk/zookeeper-3.5.9/* root@${host_name}:/home/opt/zk/zookeeper-3.5.9
  scp -r /home/opt/zk/data/* root@${host_name}:/home/opt/zk/data
  scp -r /home/opt/zk/log* root@${host_name}:/home/opt/zk/log
done

执行脚本:bash scp_script.sh

7.创建myid文件和写入编号

命令:echo '1' > /home/opt/zk/data/myid

解析:如果同一台主机部署zookeeper集群多个节点,那么myid的值需不一样。

脚本名称:create_myid_script.sh

脚本内容:

#!/bin/bash

for host_name in app161 app162 app163
do
  if [[ ${host_name} = 'app161' ]] ;then
    ssh -t root@${host_name} " echo '1' > /home/opt/zk/data/myid "
  elif [[ ${host_name} = 'app162' ]] ;then
    ssh -t root@${host_name} " echo '2' > /home/opt/zk/data/myid "
  elif [[ ${host_name} = 'app163' ]] ;then
    ssh -t root@${host_name} " echo '3' > /home/opt/zk/data/myid "
  fi
done

执行脚本:bash create_myid_script.sh

解析:每台主机的myid编号是不一样的。检测两个字符串是否相等使用“=”,同时“=”两边有空格。

8.修改zookeeper目录所有权

在此步骤前,zookeeper相关操作使用root用户操作。生产环境一般运行zookeeper使用普通用户,修改目录所有权。

脚本名称:chown_script.sh

脚本内容:

#!/bin/bash
for host_name in app161 app162 app163
do
   ssh -t root@${host_name} 'chown -R learn:learn /home/opt/zk/'
done

执行脚本:bash chown_script.sh

解析:把/home/opt/zk/目录所有权赋给learn用户。如下:

zookeeper主目录:/home/opt/zk/zookeeper-3.5.9。

zookeeper数据目录:/home/opt/zk/data。

zookeeper日志目录:/home/opt/zk/log。

9.启动zookeeper集群

操作用户切换为learn用户:su learn

启动zookeeper集群,只需启动每个节点,zookeeper会自动组成集群。

9.1启动zookeeper集群(逐台启动)

使用启动名到每台主机启动zookeeper就行。

使用用户:su learn

操作目录:/home/opt/zk/zookeeper-3.5.9/bin

启动命令:sh zkServer.sh start

解析:每次都登录集群主机,挺麻烦,可以考虑使用脚本启动。

9.2启动zookeeper集群(使用脚本启动)

脚本名称:zk-start_script.sh

脚本内容:

#!/bin/bash
for host_name in app161 app162 app163
do
   ssh -t learn@${host_name} 'cd /home/opt/zk/zookeeper-3.5.9/bin/ ;  sh zkServer.sh start '
done

执行脚本:sh zk-start_script.sh

日志信息:

9.3使用脚本启动zookeeper需修改zkEnv.sh文件

本例中,当使用脚本启动zookeeper集群需修改zkEnv.sh文件。

(1)修改主机app161的zkEnv.sh

文件全路径:/home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh

修改内容:

JAVA_HOME=/home/apps/module/jdk1.8.0_281

解析:在使用脚本远程启动时,报错:Error: JAVA_HOME is not set and java could not be found in PATH.因此,在zkEnv.sh文件指定环境变量。

(2)把修改zkEnv.sh同步到其它主机

脚本名称:scp_zkEnv.sh

脚本内容:

for host_name in app162 app163
do
  scp -r /home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh root@${host_name}:/home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh
done

执行脚本:bash scp_zkEnv.sh

10.查看zookeeper集群启动状态

脚本名称:zk-status_script.sh

脚本内容:

#!/bin/bash

for host_name in app161 app162 app163
do
   echo "查看主机 ${host_name} 启动端口:"
   ssh -t learn@${host_name} ' netstat -tlnp | grep java '
done

执行脚本:bash zk-status_script.sh

日志信息:

11.使用客户端登录集群

客户端:/home/opt/zk/zookeeper-3.5.9/bin/zkCli.sh

连接命令:

sh zkCli.sh -timeout 5000 -server 192.168.19.161:22181

sh zkCli.sh -timeout 5000 -server 192.168.19.162:22181

sh zkCli.sh -timeout 5000 -server 192.168.19.163:22181

12.查看zookeeper集群信息

脚本名称:zk-cluster.sh

脚本内容:

#!/bin/bash
for host_name in app161 app162 app163
do
   echo "查看主机 ${host_name} 在集群角色:"
   ssh -t learn@${host_name} 'cd /home/opt/zk/zookeeper-3.5.9/bin/ ;  sh zkServer.sh status '
done

执行脚本:bash zk-cluster.sh

日志信息:

以上,感谢。

2023年6月11日

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

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

相关文章

接口自动化测试新玩法!Python构建mock服务让你的测试更加高效!

目录 引言 Flask mock接口开发示例 引言 Mock 即模拟,就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,其最大的优势就是降级前后端耦合度, 使前端工程师可以不…

Alloy Tutorial(1)Alloy 基本使用

文章目录 构造一个 graph谓词undirected 无向图undirected2 无向图的第二种写法assertFact扩展 构造一个 graph In this workshop we are going to use Alloy to model graphs. Mathematically, recall that a graph is just a pair ⟨V, E⟩ where V is a set of vertices (a…

参数估计和假设检验的区别与联系

1.参数估计和假设检验的区别与联系 笔记来源: 参数估计与假设检验 参数估计和假设检验有什么区别? 1.1 联系 参数估计和假设检验是推断统计的两个组成部分,它们都是根据样本信息对总体的数量特征进行推断 下图来自《统计学图鉴》 参数估计…

详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)

实战项目演练 1.问题描述2.实验操作步骤2.1 CentOS 7-1客户端配置2.2 CentOS 7-2网关服务器配置2.3 CentOS 7-8 (Web1:Tomcat服务器)2.3.1 安装Tomcat服务器2.3.2 提供四层反向代理的动态页面 2.4 CentOS 7-9 (Nginx服务器)2.4.1 安装Nginx服务2.4.2 安装MySQL服务2.4.3 安装配…

基于Python的接口自动化-读写配置文件

目录 引言 configparser模块功能介绍 引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值。为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这…

如何在电脑上使用wink一键高清短视频

如何在电脑上使用wink一键高清优化短视频画质 文章目录 如何在电脑上使用wink一键高清优化短视频画质1.软件简介1.1痛点1.2解决方案 2.实际操作2.1准备工作2.1.1下载雷电模拟器2.1.2下载wink 2.2.安装软件2.2.1安装雷电模拟器2.2.2安装wink2.2.2.1在雷电模拟器中安装wink2.2.2.…

LeetCode 双周赛 106(2023/06/10)两道思维题

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 加入知识星球提问。 往期回顾:LeetCode 单周赛第 348 场 数位 DP 模版学会了吗? 双周赛 106 概览 T1. 判断一个数是否迷人(Easy) 标…

如何做企业发布会直播/企业发布会直播流程

1 .企业发布会直播流程图 2 .发布会解决方案 A .发布会直播前 B .发布会直播中 C .发布会直播后 如何做一场企业新品、产品发布会直播?流程图: 01 发布会直播前 专业全案策划 全面深入挖掘客户直播需求,拆解需求,制定全流程落地方…

Selenium 必了解—如何测试REST API

目录 前言: Web UI测试存在的问题: REST API测试: 依赖包 程序示例: 1-获取联系人 2-GET Request: 3-POST Request: 4- 编辑请求 5- 删除请求 前言: Selenium WebDriver 可以用于测试 Web 应用的…

深度学习框架(Pytorch)学习第1步:包管理系统Anaconda的安装

PyTorch是一种开源的深度学习框架,以出色的灵活性和易用性著称。 并且与机器学习开发者和数据科学家喜欢的Python高级编程语言兼容。 什么是PyTorch PyTorch是一种构建深度模型功能完备的框架。通常用于图像识别和语言处理等。 使用Python编写,学习和…

UI自动化测试之Airtest让你的测试工作如虎添翼!

本文我们讲解下Airtest的使用,主要学习目标有以下几点: (1)认识Airtest (2)了解Airtest能做什么 (3)Airtest安装及环境搭建 (4)掌握Airtest图形化api使用 &am…

【MySQL】记录的基本操作

文章目录 插入数据为表中所有字段插入数据为表中指定字段插入数据同时插入多条数据 更新数据删除数据TRUNCATE和DETELE的区别 查询数据 插入数据 为表中所有字段插入数据 基本语法 INSERT INTO 表名(字段名1,字段名2,…) VALUES (值 1,值 2,…); 示例 # 准备一张表…

算法模板(4):动态规划(4) 做题积累(2)

动态规划 9. 单调队列优化DP 1. 1088. 旅行问题 John 打算驾驶一辆汽车周游一个环形公路。 公路上总共有 n 个车站,每站都有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。 John 必须从某个车站出发&#xff…

接口自动化-让你了解数据库相关知识

目录 python接口自动化实战 数据库 写一个对数据库操作的类 python接口自动化实战 目标 学习数据库相关,用例增加对数据库校验 利用数据库完成对数据查询 如何校验数据库数据,怎样添加校验让程序自己校验(充值、提现、投资接口对金额的…

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs)

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs) ESXi 7.0 U3m Standard (标准版) ESXi 7.0 U3m Dell (戴尔) 定制版 OEM Custom Installer CD ESXi 7.0 U3m HPE (慧与) 定制版 OEM Custom Installer CD ESXi 7.0 U3m Lenovo (联想) 定…

分布式项目17 订单order,用dubbo来实现

说明:只要当一个订单生成时,处理订单的信息之外,还有订单中包含的订单商品数据以及订单物流信息,而订单的信息封装在“tb_order”表中,关于tb_order表结构如下图所示: 订单商品数据封装在“tb_order_item”…

STM32使用PWM实现led亮度变化

原理及代码讲解 1.序言2.频率3.占空比4.控制led亮度变化原理5.代码实例5.1 初始化引脚5.2 配置定时器15.3配置输出PWM 6.结语 1.序言 这里我以stm32F103c8te为例,讲解一下pwm如何输出, pwm又是如何控制led灯的亮度变化,以及具体代码又是 如何…

53、基于51单片机蓄电池充电器过充过放保护LCD液晶屏显示系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&…

STL之Stack与queue的模拟实现与duque的底层结构(3千字长文详解)

STL之Stack与queue的模拟实现与duque的底层结构 文章目录 STL之Stack与queue的模拟实现与duque的底层结构设计模式的概念适配器模式 stack的实现queue的实现双端队列——dequedeque的底层结构 设计模式的概念 设计模式像是古代的兵法,是以前的人总结出来的一些在特定…

TClientDataSet 模拟 EXCEL表

日常处理数据时,经常需要,从EXCEL表格中,批量导入数据,通过 XLSReadWriteII编程,会很快导入。 但是,客户提供的EXCEL表的字段,数据格式,字段的排序,有很大的区别。因此&a…