搭建zookeeper高可用集群详细步骤

news2025/2/26 15:04:58

目录

一、虚拟机设置

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 Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-02-14 16:36:13 CST; 8s ago
  Process: 11376 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 11386 (crond)
   CGroup: /system.slice/crond.service
           └─11386 /usr/sbin/crond -n

Feb 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=true

 
if [ "$jdk" = true ];then
  echo 'jkd install set true'
  echo 'setup jdk 8'
 tar -zxf /opt/install/jdk-8u321-linux-x64.tar.gz -C /opt/soft
 mv /opt/soft/jdk1.8.0_321 /opt/soft/jdk180
  sed -i '73a\export PATH=$PATH:$JAVA_HOME/bin' /etc/profile
  sed -i '73a\export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /etc/profile
  sed -i '73a\export JAVA_HOME=/opt/soft/jdk180' /etc/profile
  sed -i '73a\# JAVA_HOME' /etc/profile
  echo 'setup jdk8 success!!!'
fi
​
# global var
zk=true

hostname=`hostname`
if [ "$zk" = true ];then
    echo '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/zk345
    cp /opt/soft/zk345/conf/zoo_sample.cfg /opt/soft/zk345/conf/zoo.cfg
    mkdir -p /opt/soft/zk345/datas
    sed -i '12c dataDir=/opt/soft/zk345/datas'  /opt/soft/zk345/conf/zoo.cfg
    echo "server.0=$hostname:2287:3387" >> /opt/soft/zk345/conf/zoo.cfg
    echo "0" > /opt/soft/zk345/datas/myid
    sed -i '73a\export PATH=$PATH:$ZOOKEEPER_HOME/bin' /etc/profile
    sed -i '73a\export ZOOKEEPER_HOME=/opt/soft/zk345' /etc/profile
    sed -i '73a\#ZOOKEEPER_HOME' /etc/profile
    echo '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 ant167
   do
     ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh start"
   done

};;
"stop"){
   for i in ant165 ant166 ant167
   do
     ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh stop"
   done

};;

"status"){
   for i in ant165 ant166 ant167
   do
     ssh $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
do
   echo ---------------- $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集群搭建详细步骤》

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

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

相关文章

TripleCross:一款功能强大的Linux eBPF安全研究工具

关于TripleCross TripleCross是一款功能强大的Linux eBPF安全研究工具,该工具提供了后门、C2、代码库注入、执行劫持、持久化和隐蔽执行等功能。 功能介绍 1、使用一个代码库注入模块通过往进程的虚拟内存中写入命令来执行恶意代码; 2、提供了一个行劫…

波卡2022年第四季度报告

本文将介绍Messari最新发布的波卡Polkadot 2022年第四季度报告内容。 1 Messari已经发布关于波卡Polkadot最新的报告:显示了2022年第四季度的日活账户增加了64%,新用户增长49%。 2 Messari指出,波卡中继链在2022第四季度的环比增长令人印象…

JavaScript 保留关键字

文章目录JavaScript 保留关键字JavaScript 标准JavaScript 保留关键字JavaScript 对象、属性和方法Java 保留关键字Windows 保留关键字HTML 事件句柄非标准 JavaScriptJavaScript 保留关键字 在 JavaScript 中,一些标识符是保留关键字,不能用作变量名或函…

100行Pytorch代码实现三维重建技术神经辐射场 (NeRF)

提起三维重建技术,NeRF是一个绝对绕不过去的名字。这项逆天的技术,一经提出就被众多研究者所重视,对该技术进行深入研究并提出改进已经成为一个热点。不到两年的时间,NeRF及其变种已经成为重建领域的主流。本文通过100行的Pytorch…

部门新来个00后卷王,太让人崩溃了,想离职了....

在职场上,什么样的人最让人反感? 是技术不好的人吗? 并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗? 也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的…

【uniapp】getOpenerEventChannel().once 接收参数无效的解决方案

uniapp项目开发跨平台应用常会遇到接收参数无效的问题,无法判断是哪里出错了,这里是讲替代的方案,现有三种方案可选。 原因 一般我们是这样处理向另一个页面传参,代码是这样写的 //... let { title, type, rank } args; uni.n…

STM32 HAL库-定时器中断

STM32 HAL库-定时器中断一、STM32F407定时器介绍定时器计算公式二、CubeMX配置定时器三、基本定时器中断配置流程1)开启定时器时钟2)初始化定时器参数,设置自动重装值,分频系数,计数方式等3)使能定时器更新中断&#x…

Ubuntu 系统 OpenCV 4 无法打开视频文件解决方案

目录 一、我的运行环境 二、问题描述 三、问题定位及分析 四、解决方案 一、我的运行环境 设备NVIDIA Jetson Nano处理器ARMv8 Processor rev 1 (v8l) 4 GPUNVIDIA Tegra X1 (nvgpu)/integrated操作系统ubuntu 18.04 LTSOpenCV版本4.6.0语言C 二、问题描述 之前一直用的O…

8 冒泡排序

文章目录1 基本介绍1 代码实现1.1 java1.1 scala1 基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使…

存储管理(6)

存储管理 1 程序的装入与链接 编译:源代码——目标代码 链接:目标代码所需库函数装入模块 装入:将装入模块装入内存,该过程也叫做地址重定位,也称地址映射 地址空间: 源程序经编译后得到的目标程序&…

Leetcode 1223. 掷骰子模拟【动态规划】

有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始编号)。 现在,给你一个整数数组 rollMax 和一…

WebDAV之葫芦儿·派盘+NMM

NMM 支持WebDAV方式连接葫芦儿派盘。 推荐一款文件管理器,可以对手机中的文件进行多方面的管理,支持语法高亮和ftp等远程的文件的管理。支持从WebDav服务器连接葫芦儿派盘服务下载文件和上传文件。 NMM文本编辑器是一款文件管理器,在功能上面更加的适合于一些编程人员进行使…

2023年应该了解的黑客知识

网络犯罪的艺术处于不断变化和演变的状态。与这些趋势保持同步是网络安全人员工作的重要组成部分。 今天的现代网络安全必须确保他们始终为下一个大趋势做好准备并保持领先于对手。 当我们开始迈向 2023 年时,安全格局与一年前相比已经发生了变化,更不…

Spark on hive Hive on spark

文章目录Spark on hive & Hive on sparkHive 架构与基本原理Spark on hiveHive on sparkSpark on hive & Hive on spark Hive 架构与基本原理 Hive 的核心部件主要是 User Interface(1)和 Driver(3)。而不论是元数据库&a…

webpack(高级)--性能优化-代码分离

webpack webpack性能优化 优化一:打包后的结果 上线时的性能优化 (比如分包处理 减少包体积 CDN服务器) 优化二:优化打包速度 开发或者构建优化打包速度 (比如exclude cache-loader等) 大多数情况下我们侧…

css 安全区域 safe-area-inset-

前言 安全区域与边界是iOS11 新增特性。 安全区域 安全区域的内容不受圆角(corners)、齐刘海(sensor housing)、小黑条(Home Indicator)影响。Webkit 为此增加了相应的CSS 函数,用于获取安全…

B树系列与MySQL数据库

前篇提到B树及其实现:一文看懂---B树及其简单实现_b树实现_且随疾风前行->的博客-CSDN博客 本篇继续谈B树系列的B树,B*树和它们与MySQL数据库的关系。 目录 B树系列 B树 B树的特性: B*树 B树系列总结 MySQL索引简介 MyISAM Inno…

Sphinx文档生成工具(二)

rst语法 官方的语法手册 行内的样式: #斜体 *message* #粗体 **message** #等宽 不能有换行 message标题 一级标题 ^^^^^^^^ 二级标题 --------- 三级标题 >>>>>>>>> 四级标题 ::::::::: 五级标题六级标题 """"…

Vue+node.js医院预约挂号信息管理系统vscode

网上预约挂号系统将会是今后医院发展的主要趋势。 前端技术:nodejsvueelementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进行交互,从而使得用户在点击网页进行操作时能够正…

关于 mysql数据库插入中文变空白 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/129048030 红胖子网络科技的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…