【zookeeper安装】zookeeper安装详细教程(单机/集群部署)(linux版)

文章目录

  • 前言
  • 一、zookeeper简介
  • 二、获取Zookeeper安装包
    • 2.1. 离线获取
    • 2.2. 在线获取
    • 2.3. 解压包
  • 三、单机部署
    • 3.1. 配置conf文件
    • 3.2. 启动服务
  • 四、集群部署
    • 4.1. 概念
    • 4.2. 配置conf文件
    • 4.3. 创建myid文件
    • 4.3. 启动每个节点的zookeeper服务
  • 五、配置systemctl管理(选做)
  • 总结

前言

本文章主要介绍在Centos系统,虚拟机上安装zookeeper用来单机部署或集群部署,可为大数据组件或ambari管理中使用。
博主安装的是Zookeeper3.4.6版本,安装其他版本的也可以参考该文档。

一、zookeeper简介

ZooKeeper是一个开放源码的分布式应用程序协调服务,ZooKeeper是以Fast Paxos算法为基础,实现同步服务,配置维护和命名服务等分布式应用。
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。核心词特点就是协调。
在这里插入图片描述

二、获取Zookeeper安装包

2.1. 离线获取

zookeeper下载地址:https://archive.apache.org/dist/zookeeper/
Zookeeper3.4.6版本下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
下载完成后,将安装包上传到需要安装zookeeper的主机上。

2.2. 在线获取

执行下载命令

# wget指令
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz# curl指令
curl -o zookeeper-3.4.6.tar.gz https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

如果这两个指令都没有就执行安装工具包,再下载安装包;可以下载安装包请忽略该工具包的安装指令。

# 安装wget工具包
sudo yum install wget -y
# 验证wget
wget --version# 安装curl工具包
sudo yum install curl -y
# 验证curl
curl --version

2.3. 解压包

进入到当前Zookeeper安装包的路径下,执行解压命令:

# 将zookeeper-3.4.6.tar.gz解压到指定位置/var/lib目录下tar -zxvf zookeeper-3.4.6.tar.gz -C /var/lib

三、单机部署

3.1. 配置conf文件

Zookeeper 在启动时会找zoo.cfg这个文件作为默认配置文件。

# 进入安装目录的…/conf目录下
cd /var/lib/zookeeper-3.4.6/conf/# 复制样例文件
cp zoo_sample.cfg zoo.cfg# 修改配置文件
vi zoo.cfg

将以下内容写入配置文件zoo.cfg,其中dataDir=/tmp/zookeeper/data,需要根据实际保存的目录修改。

# zookeeper内部的基本单位,单位是毫秒,这个表示一个tickTime为2000毫秒,在zookeeper的其他配置中,都是基于tickTime来做换算的
tickTime=2000#集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。
initLimit=10#syncLimit:集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5# 数据存放文件夹,zookeeper运行过程中有两个数据需要存储,一个是快照数据(持久化数据)另一个是事务日志
dataDir=/tmp/zookeeper/data# 客户端访问端口
clientPort=2181

3.2. 启动服务

# 启动服务
bash /var/lib/zookeeper-3.4.6/bin/zkServer.sh  start# 查看服务状态
bash /var/lib/zookeeper-3.4.6/bin/zkServer.sh  status# 测试客户端连接
bash /var/lib/zookeeper-3.4.6/bin/zkCli.sh

以上单机版zookeeper就安装好了。

四、集群部署

4.1. 概念

ZooKeeper的集群模式下,多个Zookeeper服务器在工作前会选举出一个Leader,在接下来的工作中这个被选举出来的Leader死了,而剩下的Zookeeper服务器会知道这个Leader死掉了,在活着的Zookeeper集群中会继续选出一个Leader,选举出Leader的目的是为了可以在分布式的环境中保证数据的一致性。
由于ZooKeeper集群中,会有一个Leader负责管理和协调其他集群服务器,因此服务器的数量通常都是单数,例如3,5,7…等,这样2n+1的数量的服务器就可以允许最多n台服务器的失效。

4.2. 配置conf文件

zookeeper集群的每台主机均需要操作以下步骤
Zookeeper 在启动时会找zoo.cfg这个文件作为默认配置文件。

# 进入安装目录的…/conf目录下
cd /var/lib/zookeeper-3.4.6/conf/# 复制样例文件
cp zoo_sample.cfg zoo.cfg# 修改配置文件
vi zoo.cfg

将以下内容写入配置文件zoo.cfg,其中dataDir=/tmp/zookeeper/dataserver.1=zookeeper-1.novalocal:2888:3888,需要根据实际保存的目录修改。

# zookeeper内部的基本单位,单位是毫秒,这个表示一个tickTime为2000毫秒,在zookeeper的其他配置中,都是基于tickTime来做换算的
tickTime=2000#集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。
initLimit=10#syncLimit:集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5# 数据存放文件夹,zookeeper运行过程中有两个数据需要存储,一个是快照数据(持久化数据)另一个是事务日志
dataDir=/tmp/zookeeper/data# 客户端访问端口(zookeeper-1.novalocal、zookeeper-2.novalocal、zookeeper-3.novalocal修改为实际zookeeper主机的ip或域名)
server.1=zookeeper-1.novalocal:2888:3888
server.2=zookeeper-2.novalocal:2888:3888
server.3=zookeeper-3.novalocal:2888:3888

注意:如果三个zookeeper服务都在同一台服务器上,这里要保证地址的唯一性,因此要特别注意IP地址和端口号不要互相冲突,IP相同,端口一定不能相同,以免影响程序的正确执行。

4.3. 创建myid文件

去各个 ZooKeeper节点,新建目录 dataDir=/tmp/zookeeper/data,这个 目录就是你在 zoo.cfg 中配置的 dataDir 的目录,建好之后,在里面新建一个文件,文件名叫 myid,里面存放的内容就是服务器的 id,就是 server.1=zookeeper-1.novalocal:2888:3888 当中的 id,就是 1,那么对应的每个服务器节点都应该做类似的操作。
节点一:

mkdir -p /tmp/zookeeper/data
cd /tmp/zookeeper/data
echo 1 > myid

节点二:

mkdir -p /tmp/zookeeper/data
cd /tmp/zookeeper/data
echo 2 > myid

节点三:

mkdir -p /tmp/zookeeper/data
cd /tmp/zookeeper/data
echo 3 > myid

4.3. 启动每个节点的zookeeper服务

启动服务,对应的每个服务器节点都要做的操作。

# 启动服务
bash /var/lib/zookeeper-3.4.6/bin/zkServer.sh  start

查看节点状态

# 查看服务状态
bash /var/lib/zookeeper-3.4.6/bin/zkServer.sh  status

若是出现Mode:follower或Mode:leader
则zookeeper集群部署成功,服务启动正常。

五、配置systemctl管理(选做)

查看zookeeper主机上Java的安装路径。

# 获取JAVA_hOME路径
readlink -f $(which java)# 去掉/bin/java 部分,这样就得到了 Java 安装的根目录
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre

配置systemctl管理服务 sudo vi /usr/lib/systemd/system/zookeeper.service
注意:这个需要改成实际的Java 安装的根目录:Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre

[Unit]
Description=Zookeeper Service unit Configuration
After=network.target[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre
ExecStart=/var/lib/zookeeper-3.4.6/bin/zkServer.sh  start
ExecStop=/var/lib/zookeeper-3.4.6/bin/zkServer.sh  stop
PIDFile=/data/zookeeper/data/zookeeper_server.pid
KillMode=none
User=root
Group=root
Restart=on-failure[Install]
WantedBy=multi-user.target
# 启动
systemctl start zookeeper# 查看状态
systemctl status zookeeper# 停止
systemctl stop zookeeper

以上systemctl管理配置完成。

总结

好的,以上就是zookeeper安装的详细步骤,欢迎大家在安装过程中遇到任何问题时留言反馈。我会汇总大家的问题及解决方法,持续改进和完善这份文档。
最后,感谢大家的指导和支持,希望各位多多提宝贵的建议,您的建议是我们后续持续优化的动力,感谢各位!

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

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

相关文章

修改 Visual Studio 的主题颜色、背景颜色、字体

本人使用的是 VS2019 版本的。 点击上方工具栏中的【工具】-> 【选项】。 在 【环境】->【常规】中,可以更改整个界面的主题颜色。 浅色和深色的主题如下: 在【环境】->【字体和颜色】中,可以更改代码区的背景色。 不同背景示例&…

RK3568笔记六十:V4L2命令测试

若该文为原创文章,转载请注明原文出处。 测试V4L2是想移植韦老师的相机程序,但他使用的是V4L2方式采集摄像头。 而正点原子的rknn使用的是opencv。 这里记录测试过程 一、常用调试命令 1、抓取图像 使用 v4l2-ctl 抓取一帧图像:v4l2-ctl -d /dev/video0 --set-fmt-video…

计算机图形学 中心画圆算法 原理及matlab代码实现

中心画圆算法原理 总体思路: 将圆划分为八部分,先通过diF(xi1,yi-0.5)和隐函数Fx2y2-R2绘制八分之一的圆,然后通过圆的对称性确定另外七个部分的相应坐标绘制完整的圆。 求中点误差项递推公式: 从(x0,y0r)开始,因绘…

嵌入式流媒体SRT协议:send buffer和窗口延迟机制

Handshake Packets: 握手控制包(“包类型”位 1)用于在点对点的 SRT 会话中建立两个对等体之间的连接。早期版本的 SRT 依赖于握手扩展来在连接建立后立即交换某些参数,但自 1.3 版本起,集成机制确保所有参数作为握手…

Python使用YOLOv5图像识别教程包成功-以识别桥墩缺陷详细步骤分享

前置环境资源下载 提示:要开外网才能下载的环境我都放在了网盘里,教程中用到的环境可从这里一并下载: https://pan.quark.cn/s/f0c36aa1ef60 1. 下载YOLOv5源码 官方地址:GitHub - ultralytics/yolov5: YOLOv5 🚀 …

9。maven必备小技巧

(1)配置Maven加速时,除了settings之外,还可如下图所示,配置如下: 若想实现Maven加速,最重要的即User settings file。(先修改settings.xml) (2)当…

哪个牌子的头戴式耳机性价比高?四大爆款性价比品牌推荐!

随着科技的不断进步和发展,头戴式耳机已经成为音乐爱好者和专业人士不可或缺的设备。进入2024年,市场上涌现出了一批性能卓越、音质优秀的新产品。这些新品不仅在音质上有了显著的提升,还在设计、舒适度和功能性上进行了全面的优化&#xff0…

(科普篇)公司防止泄密,应该做到哪些?教你10个方法有效阻止泄密事件发生!

公司防止泄密,应该做到哪些? 世事如棋局局新,信息之海波涛汹涌! 甲曰:"企业之基,在于保密。泄密之祸,猛于虎也,如何防患于未然。吾友,可有良策?" …

lettuce引起的Redis command timeout异常

项目使用Lettuce,在自己的环境下跑是没有问题的。在给客户做售前压测时,因为客户端环境比较恶劣,service服务和中间件服务不在同一机房。服务启动后不一会就会出现Redis command timeout异常。 经过差不多两周的追查,最后没办法把…

机器学习的应用领域

机器学习在许多领域有广泛的应用,下面列出了一些主要的应用领域及其典型应用: 1. 图像识别 人脸识别:用于解锁手机、自动标记照片、监控安全系统。物体识别:应用于自动驾驶汽车、机器人、医疗影像分析中,帮助机器理解…

三分钟 ChatGPT 接入钉钉机器人

前言 ChatGPT 大家应该都已经用了一段时间了,功能非常强大,作为开发人员,我用它写文档、写日报、润色 OKR,知识搜索等等,它给我带来了极大的帮助,但我在使用过程中最大的痛点就是网络。 痛点 由于国内不…

Java_Se--方法

方法就是一个代码片段. 类似于 C 语言中的 "函数"。方法存在的意义(不要背, 重在体会): 1. 是能够模块化的组织代码 ( 当代码规模比较复杂的时候 ). 2. 做到代码被重复使用 , 一份代码可以在多个位置使用 . 3. 让代码更好理解更简单 . 4. 直接调用现有方法开…

搭建WSL2+Ubuntu22.04 LTS环境

一、BIOS 开启虚拟化支持 现在的主板一般都默认开启的,也可以检查和开启BIOS虚拟化支持 二、windows开启子系统及虚拟化 打开控制面板 选择 程序 -> 启用或关闭 Windows功能 勾选 Hyper-V、适用于 Linux的 Windows子系统和虚拟机平台 点击确定 重启计算…

【近源攻击】badusb上线cs

❤️博客主页: iknow181 🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 0x01 实验前提 攻击设备:badusb cs服务器:公网部署了 cs 服务端 0x02 实验步骤 …

【计算机网络】理解应用层协议HTTP

目录 HTTP协议认识URLHTTP协议的请求如果我们想获得请求报文的完整内容,怎么办? HTTP协议的响应HTTP的方法GETvsPOST HTTP的状态码HTTP常见HeaderHTTP版本实现一个简单的HTTP服务器 HTTP协议 HTTP协议是一种超文本传输协议,它定义了客户端与…

Kafka 3.0.0集群部署教程

1、集群规划 主机名 ip地址 node.id process.roles kafka1 192.168.0.29 1 broker,controller Kafka2 192.168.0.30 2 broker,controller Kafka3 192.168.0.31 3 broker,controller 将kafka包上传以上节点/app目录下 mkdir /app 解压kafka包 tar -zxvf kafka_…

java之斗地主部分功能的实现

今天我们要实现斗地主中发牌和洗牌这两个功能,该如何去实现呢? 1.创建牌类:52张牌每一张牌包含两个属性:牌的大小和牌的花色。 故我们优先创建一个牌的类(Card):包含大小和花色。 public class Card { //单张牌的大小及类型/…

伊犁-linux 硬盘添加,分区,格式化

主要是linux 下操作硬盘分区,格式化 这样1个sata 盘就添加成功了 !  继续添加三块 sata1 hda sata hdb sata hdc sata hdd scsi sda 作为启动盘 进行操作系统的引导 如果scsi 往下调整 先敲enter 在用- 号往下 如果是往上调整敲…

【IDEA】使用IDEA连接MySQL数据库并自动生成MySQL的建表SQL语句

前言: 在软件开发过程中,数据库的设计与实现是至关重要的一环。IntelliJ IDEA作为一款强大的集成开发环境(IDE),提供了丰富的数据库工具,使得连接MySQL数据库并自动生成建表SQL语句变得简单快捷。本文将详细…

《python语言程序设计》2018版第8章18题几何circle2D类(上部)

一、利用第7章的内容来做前5个点 第一章之1--从各种角度来测量第一章之2--各种结果第二章之1--建立了针对比对点在圆内的几段第二章之2--利用建立的对比代码,得出的第2点位置 第一章之1–从各种角度来测量 class Circle2D:def __init__(self, x, y, radius):self._…