搭建zookeeper高可用集群详细步骤
目录
一、虚拟机设置
1.新建一台虚拟机并克隆三台,配置自定义
2.修改四台虚拟机的主机名并立即生效
3.修改四台虚拟机的网络信息
4.重启四台虚拟机的网络服务并测试网络连接
5.重启四台虚拟机,启动后关闭四台虚拟机的防火墙
6.在第一台虚拟机的/etc/hosts下面配置这四台主机映射
7.将/etc/hosts安全分发到另外三台虚拟机
8.配置四台虚拟机免密登录
9.设置四台虚拟机时间同步
二、自动安装JDK和zookeeper
1.在第一台虚拟机的/opt/目录下新建install、soft和shell三个文件
2.上传jdk、zoookeeper压缩包到第一台虚拟机/opt/install/目录下
3.编写自动安装jdk和zookeeper脚本并赋予执行权限
4.执行/opt/shell/autoinstall.sh脚本
5.重启环境变量查看是否安装成功
6.来到/opt/soft/zk345/conf目录下,修改zoo.cfg文件,添加下面的内容
7.来到/opt/soft/zk345目录下,删除datas目录下所有的文件
8.将JDK和环境变量分发给三台虚拟机,将zookeeper分发给两台虚拟机
9.删除三台虚拟机的/opt/soft/zk345/datas目录下的所有文件,配置myid
10.编辑zookeeper集群开启脚本——zkop.sh
11.编写查询集群启动状态信息批量展示脚本——showjps.sh
12.执行zkop.sh和showjps.sh脚本,开启zookeeper集群
13.查看zookeeper集群状态
14.关闭zookeeper集群
一、虚拟机设置
1.新建一台虚拟机并克隆三台,配置自定义
也可以新建好一个,然后导出ovf,再打开

2.修改四台虚拟机的主机名并立即生效
[root@localhost ~]# hostnamectl set-hostname 主机名[root@localhost ~]#bash[root@主机名~]# hostname
主机名
3.修改四台虚拟机的网络信息
vim /etc/sysconfig/network-script/ifcfg-ens33
4.重启四台虚拟机的网络服务并测试网络连接
systemctl restart network.service
# 或者
service network restart
5.重启四台虚拟机,启动后关闭四台虚拟机的防火墙
[root@ant165 ~]# systemctl stop firewalld
[root@ant165 ~]# systemctl disable firewalld.service
6.在第一台虚拟机的/etc/hosts下面配置这四台主机映射
[root@ant165 ~]# vim /etc/hosts

7.将/etc/hosts安全分发到另外三台虚拟机
[root@ant165 .ssh]# scp /etc/hosts root@ant166:/etc/
hosts 100% 250 18.3KB/s 00:00
[root@ant165 .ssh]# scp /etc/hosts root@ant167:/etc/
hosts 100% 250 162.4KB/s 00:00
[root@ant165 .ssh]# scp /etc/hosts root@ant168:/etc/
hosts 100% 250 169.3KB/s 00:00
8.配置四台虚拟机免密登录
[root@ant165 ~]# ssh ant165
The authenticity of host 'ant165 (192.168.180.165)' can't be established.
ECDSA key fingerprint is SHA256:hQzFzPZt1T9MooVcHRLOnmC4hYlNsaG28J65Ovi10uc.
ECDSA key fingerprint is MD5:46:97:1a:6c:02:8d:17:d6:98:d9:81:85:0e:a8:ca:5e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ant165,192.168.180.165' (ECDSA) to the list of known hosts.
root@ant165's password:
Last login: Wed Feb 15 00:01:20 2023 from 192.168.180.1
[root@ant165 ~]# ll -al
total 32
dr-xr-x---. 3 root root 163 Feb 15 00:04 .
dr-xr-xr-x. 17 root root 224 Feb 14 23:13 ..
-rw-------. 1 root root 1419 Feb 14 23:14 anaconda-ks.cfg
-rw-------. 1 root root 312 Feb 15 00:01 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
drwx------. 2 root root 25 Feb 15 00:04 .ssh
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-------. 1 root root 575 Feb 15 00:04 .viminfo
[root@ant165 ~]# cd .ssh
[root@ant165 .ssh]# ll
total 4
-rw-r--r--. 1 root root 184 Feb 15 00:04 known_hosts
配置四台虚拟机免密登录:
[root@ant165 .ssh]# ssh-keygen -t rsa -P ''[root@ant165 .ssh]# ssh-copy-id ant165#免密登录,两个命令都可以
[root@ant165 .ssh]# ssh ant165 | ssh -p22 root@ant165
在其他三台虚拟机上重复上面的命令
[root@ant165 .ssh]# ssh-keygen -t rsa -P ''[root@ant165 .ssh]# ssh-copy-id ant165
[root@ant165 .ssh]# ssh-copy-id ant166
[root@ant165 .ssh]# ssh-copy-id ant167
[root@ant165 .ssh]# ssh-copy-id ant168
9.设置四台虚拟机时间同步
[root@ant165 ~]# yum -y install ntpdate[root@ant165 ~]# ntpdate time.windows.com
14 Feb 16:33:52 ntpdate[11365]: step time server 40.81.94.65 offset -28800.832564 sec[root@ant165 ~]# date
Tue Feb 14 16:33:54 CST 2023[root@ant165 ~]# crontab -e
*/10 * * * * /usr/sbin/ntpdate time.windows.com# 重新加载脚本
[root@ant165 ~]# systemctl reload crond# 重启脚本
[root@ant165 ~]# systemctl restart crond# 查看脚本状态
[root@ant165 ~]# systemctl status crond
● crond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2023-02-14 16:36:13 CST; 8s agoProcess: 11376 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)Main PID: 11386 (crond)CGroup: /system.slice/crond.service└─11386 /usr/sbin/crond -nFeb 14 16:36:13 ant165 systemd[1]: Started Command Scheduler.
Feb 14 16:36:13 ant165 systemd[1]: Starting Command Scheduler...
Feb 14 16:36:13 ant165 crond[11386]: (CRON) INFO (RANDOM_DELAY will be s...)
Feb 14 16:36:13 ant165 crond[11386]: (CRON) INFO (running with inotify s...)
Feb 14 16:36:13 ant165 crond[11386]: (CRON) INFO (@reboot jobs will be r...)
Hint: Some lines were ellipsized, use -l to show in full.
二、自动安装JDK和zookeeper
1.在第一台虚拟机的/opt/目录下新建install、soft和shell三个文件
[root@ant165 opt]# mkdir install
[root@ant165 opt]# mkdir soft
[root@ant165 opt]# mkdir shell
2.上传jdk、zoookeeper压缩包到第一台虚拟机/opt/install/目录下

3.编写自动安装jdk和zookeeper脚本并赋予执行权限
[root@ant165 shell]# vim autoinstall.sh#! /bin/bash
echo 'auto install begining...'# global var
jdk=trueif [ "$jdk" = true ];thenecho 'jkd install set true'echo 'setup jdk 8'tar -zxf /opt/install/jdk-8u321-linux-x64.tar.gz -C /opt/softmv /opt/soft/jdk1.8.0_321 /opt/soft/jdk180sed -i '73a\export PATH=$PATH:$JAVA_HOME/bin' /etc/profilesed -i '73a\export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /etc/profilesed -i '73a\export JAVA_HOME=/opt/soft/jdk180' /etc/profilesed -i '73a\# JAVA_HOME' /etc/profileecho 'setup jdk8 success!!!'
fi
# global var
zk=truehostname=`hostname`
if [ "$zk" = true ];thenecho 'zookeeper install set true'echo 'setup zookeeper-3.4.5-cdh5.14.2.tar.gz'tar -zxf /opt/install/zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft/mv /opt/soft/zookeeper-3.4.5-cdh5.14.2 /opt/soft/zk345cp /opt/soft/zk345/conf/zoo_sample.cfg /opt/soft/zk345/conf/zoo.cfgmkdir -p /opt/soft/zk345/datassed -i '12c dataDir=/opt/soft/zk345/datas' /opt/soft/zk345/conf/zoo.cfgecho "server.0=$hostname:2287:3387" >> /opt/soft/zk345/conf/zoo.cfgecho "0" > /opt/soft/zk345/datas/myidsed -i '73a\export PATH=$PATH:$ZOOKEEPER_HOME/bin' /etc/profilesed -i '73a\export ZOOKEEPER_HOME=/opt/soft/zk345' /etc/profilesed -i '73a\#ZOOKEEPER_HOME' /etc/profileecho 'setup zookeeper success!!!'
fi
赋予执行权限
[root@ant165 shell]# chmod 777 ./autoinstall.sh

4.执行/opt/shell/autoinstall.sh脚本

5.重启环境变量查看是否安装成功
[root@ant165 shell]# source /etc/profile[root@ant165 shell]# javac[root@ant165 shell]# zkServer.s
-bash: zkServer.s: command not found
[root@ant165 shell]# zkServer.sh start
JMX enabled by default
Using config: /opt/soft/zk345/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED[root@ant165 shell]# jps
11731 QuorumPeerMain
11753 Jps[root@ant165 shell]# zkServer.sh status
JMX enabled by default
Using config: /opt/soft/zk345/bin/../conf/zoo.cfg
Mode: standalone
出现上面的信息就说明zookeeper单机版安装成功
6.来到/opt/soft/zk345/conf目录下,修改zoo.cfg文件,添加下面的内容

7.来到/opt/soft/zk345目录下,删除datas目录下所有的文件
[root@ant165 zk345]# rm -rf ./datas/*
8.将JDK和环境变量分发给三台虚拟机,将zookeeper分发给两台虚拟机
# 分发/opt下的soft目录:
[root@ant165 ~]# scp -r /opt/soft/ root@ant166:/opt/[root@ant165 ~]# scp -r /opt/soft/ root@ant167:/opt/[root@ant165 ~]# scp -r /opt/soft/ root@ant168:/opt/
profile # 分发JDK:
[root@ant165 datas]# scp -r /opt/soft/jdk180/ root@ant166:/opt/soft/[root@ant165 datas]# scp -r /opt/soft/jdk180/ root@ant167:/opt/soft/[root@ant165 datas]# scp -r /opt/soft/jdk180/ root@ant168:/opt/soft/# 分发zookeeper:
[root@ant165 datas]# scp -r /opt/soft/zk345/ root@ant166:/opt/soft/[root@ant165 datas]# scp -r /opt/soft/zk345/ root@ant167:/opt/soft/# 分发环境变量:
[root@ant165 datas]# scp /etc/profile root@ant166:/etc/
profile 100% 2032 200.1KB/s 00:00 [root@ant165 datas]# scp /etc/profile root@ant167:/etc/
profile 100% 2032 1.3MB/s 00:00 [root@ant165 shell]# scp /etc/profile root@ant168:/etc/
profile 100% 2032 1.6MB/s 00:00
[root@ant165 shell]# ./showjps.sh
9.删除三台虚拟机的/opt/soft/zk345/datas目录下的所有文件,配置myid
[root@ant165 datas]# rm -rf /opt/soft/zk345/datas/*
[root@ant165 datas]# echo "0" > myid[root@ant166 datas]# rm -rf /opt/soft/zk345/datas/*
[root@ant166 datas]# echo "1" > myid[root@ant167 datas]# rm -rf /opt/soft/zk345/datas/*
[root@ant167 datas]# echo "2" > myid
10.编辑zookeeper集群开启脚本——zkop.sh
#! /bin/bash
case $1 in
"start"){for i in ant165 ant166 ant167dossh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh start"done};;
"stop"){for i in ant165 ant166 ant167dossh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh stop"done};;"status"){for i in ant165 ant166 ant167dossh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh status"done
};;
esac
赋予执行权限
[root@ant165 shell]# chmod 777 ./zkop.sh
11.编写查询集群启动状态信息批量展示脚本——showjps.sh
#! /bin/bash
for i in ant165 ant166 ant167 ant168
doecho ---------------- $i 服务启动状态 -----------------ssh $i "source /etc/profile; /opt/soft/jdk180/bin/jps "
done
赋予执行权限
[root@ant165 shell]# chmod 777 ./showjps.sh
12.执行zkop.sh和showjps.sh脚本,开启zookeeper集群

zookeeper集群成功开启!!!
13.查看zookeeper集群状态

14.关闭zookeeper集群

后续搭建Hadoop集群参考博文《基于zookeeper的Hadoop集群搭建详细步骤》
相关文章:
搭建zookeeper高可用集群详细步骤
目录 一、虚拟机设置 1.新建一台虚拟机并克隆三台,配置自定义 2.修改四台虚拟机的主机名并立即生效 3.修改四台虚拟机的网络信息 4.重启四台虚拟机的网络服务并测试网络连接 5.重启四台虚拟机,启动后关闭四台虚拟机的防火墙 6.在第一台虚拟机的/e…...
Scala 变量和数据类型(第二章)
第二章、变量和数据类型2.1 注释2.2 变量和常量(重点)2.3 标识符的命名规范2.4 字符串输出2.5 键盘输入2.6 数据类型(重点)回顾:Java数据类型Scala数据类型2.7 整数类型(Byte、Short、Int、Long)…...
【JVM基础内容速查表】JVM基础知识 默认参数 GC命令 工具使用 JVM参数设置、说明、使用方法、注意事项等(持续更新)
目录一、JVM前置知识1. -X、-XX含义2. JVM参数值的类型和设置方式3. 查看GC时用到的命令和JVM参数4. 查看JVM默认参数二、垃圾收集器选择-XX:UseSerialGC-XX:UseParallelGC-XX:UseParallelOldGC-XX:UseParNewGC-XX:UseConcMarkSweepGC-XX:UseG1GC三、垃圾收集器特有参数1. ParN…...
C语言经典编程题100例(61~80)
目录61、练习7-7 矩阵运算62、练习7-8 方阵循环右移63、习题6-1 分类统计字符个数64、习题6-2 使用函数求特殊a串数列和65、习题6-4 使用函数输出指定范围内的Fibonacci数66、习题6-5 使用函数验证哥德巴赫猜想67、习题6-6 使用函数输出一个整数的逆序数68、练习8-2 计算两数的…...
toxssin:一款功能强大的XSS漏洞扫描利用和Payload生成工具
关于toxssin toxssin是一款功能强大的XSS漏洞扫描利用和Payload生成工具,这款渗透测试工具能够帮助广大研究人员自动扫描、检测和利用跨站脚本XSS漏洞。该工具由一台HTTPS服务器组成,这台服务器将充当一个解释器,用于处理恶意JavaScript Pay…...
Keepalived与HaProxy的协调合作原理分析
Keepalived与HaProxy的协调合作原理分析keepalived与haproxy合作场景更好的理解方式协调合作中考虑的问题一、Keepalived以TCP/IP模型角度来分析:二、HaProxy总结:协调合作中考虑的问题的答案虚拟ip:虚拟IP技术,就是一个未分配给客…...
抖音如何找到博主视频推广?筛选博主要看那些数据
近年来抖音视频推广越来越成为企业宣传的热门选择,今天就来和大家聊聊抖音如何找到博主视频推广,以及几种主流的对接方式。一、什么是抖音博主视频推广?抖音博主视频推广就是通过博主的影响力和粉丝量,吸引用户到短视频平台进行观看相关合作…...
Win11的两个实用技巧系列之如何关闭登录密码?
Win11如何关闭登录密码?Win11关闭登录密码的两种解决方法win11是电脑更新后的全新系统,每次开启需要输入密码。有的用户嫌麻烦想要关闭,下面小编就为大家带来了关闭的方法,一起来看看吧有不少用户在升级或者第一次使用Win11系统的时候&#…...
润普挂卷失败之老卷宗对接NP无法获取案件信息问题排查
润普挂卷失败之老卷宗对接NP无法获取案件信息问题排查 写在最前面 根因:NP的dzjzzzfw与老卷宗dzjz服务用的zookeeper不是同一个,且老卷宗指向的zookeeper没有任何一个匹配的dzjzzzfw。仅有消费者,没有任何生产者,导致老卷宗通过…...
产品经理面试题思考及回答思路(一)
求职产品助理/经理岗位,转行产品岗面试真题 关于产品经理岗位能力的思考: 什么是产品经理?为什么要当/选择做产品经理?怎么理解产品经理?如何理解产品经理的价值?产品日常工作有哪些?工作流程…...
Routability-Driven Macro Placement with Embedded CNN-Based Prediction Model
Routability-Driven Macro Placement with Embedded CNN-Based Prediction Model 2019 Design, Automation & Test in Europe Conference & Exhibition (DATE) DOI: 10.23919/DATE.2019.8715126 目录Abstract一、Introduction二、PROBLEM FORMULATION AND PRELIMINARIE…...
论一个上班族如何一次性通过PMP考试
PMP是我工作后考取的一个证书。从准备到通过,花了大约三个月的时间。我之前在某家互联网公司从事程序员的工作,工作一段时间后,天天敲着代码,改着bug,感觉比较迷茫,不知道未来的发展在哪里,都说…...
Web前端:使用Angular CLI时的最佳实践和专业技巧
在web开发业务中,构建高性能的应用程序是首要因素。此外,用开发人员最流行的语言开发一个健壮的网站将始终为构建高功能的网站提供适当的基础网站。相比之下,不可否认,Angular CLI是建立得最好且正在成长的框架之一。Angular CLI简…...
从0到1一步一步玩转openEuler--15 openEuler使用DNF管理软件包
文章目录15.1 搜索软件包15.2 列出软件包清单15.3 显示RPM包信息15.4 安装RPM包15.5 下载软件包15.6 删除软件包DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查询软件包信息,从指定软件库获取软件包,自动处理依赖关系以安装或卸…...
【java】Spring Boot --spring boot项目整合xxl-job
文章目录1、源码下载地址2.文档地址3.源码结构4.初始化数据库脚本5.配置调度中心xxl-job-admin5.1 修改调度中心配置文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties5.2 启动调度中心5.3 访问调度中心管理界面6.创建执行器项目6.3 载入配置…...
视图、索引、存储过程、触发器
视图、索引、存储过程、触发器 group by补充: 规范来说,分组查询中,select后的字段只能是group by的字段或者是聚合函数。mysql在这有一个小优化,分组后如果某个字段的所有记录相同,同样可以select。 视图 视图是虚拟…...
ImportError: cannot import name ‘FlattenObservation‘ from ‘gym.wrappers‘ 解决方案
问题描述 今天在运行openai给出的ppo2的baseline的时候遇到了以下bug: File "/root/code/baselines_openai/baselines/common/cmd_util.py", line 12, in <module> from gym.wrappers import FlattenObservation, FilterObservation ImportErr…...
大件传输的9种方法
不知道你有没有试过用电子邮件进行大文件传输,由于文件大小的限制,往往会发送失败。同时,一些文件共享服务对传输的文件有大小限制,使得你无法与朋友分享电影片段或向客户展示你的工作样本。还有一些要求你注册一个账户࿰…...
将vue2的项目《后台管理模式》转变为vue3版本 (一)
本篇主要讲了将v2项目转变为v3版本,以本人经验愿于各位分享 希望大家可以一起交流!!!! 文章目录一、app 出口位置二 、 index.js 路由配置三、package.json 文件四、 main.js 既然安装插件那就需要引入五、 跨域问题总…...
苹果手机怎么下载手机铃声?图文教程,快速学会
很多小伙伴喜欢使用苹果手机,可是苹果手机里的铃声自己并不是很喜欢听,想要下载一些好听的歌曲更换自己的手机铃声。苹果手机怎么下载手机铃声?别着急,今天小编以图文的方式,教教大家如何使用苹果手机下载手机铃声。 苹…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
