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

文章目录

前言

本文章主要介绍在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. 在线获取

执行下载命令

bash 复制代码
# 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

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

bash 复制代码
# 安装wget工具包
sudo yum install wget -y
# 验证wget
wget --version

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

2.3. 解压包

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

bash 复制代码
# 将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这个文件作为默认配置文件。

bash 复制代码
# 进入安装目录的.../conf目录下
cd /var/lib/zookeeper-3.4.6/conf/

# 复制样例文件
cp zoo_sample.cfg zoo.cfg

# 修改配置文件
vi zoo.cfg

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

bash 复制代码
# 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 复制代码
# 启动服务
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这个文件作为默认配置文件。

bash 复制代码
# 进入安装目录的.../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,需要根据实际保存的目录修改。

bash 复制代码
# 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,那么对应的每个服务器节点都应该做类似的操作。

节点一:

bash 复制代码
mkdir -p /tmp/zookeeper/data
cd /tmp/zookeeper/data
echo 1 > myid

节点二:

bash 复制代码
mkdir -p /tmp/zookeeper/data
cd /tmp/zookeeper/data
echo 2 > myid

节点三:

bash 复制代码
mkdir -p /tmp/zookeeper/data
cd /tmp/zookeeper/data
echo 3 > myid

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

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

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

查看节点状态

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

若是出现Mode:follower或Mode:leader

则zookeeper集群部署成功,服务启动正常。

五、配置systemctl管理(选做)

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

bash 复制代码
# 获取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

bash 复制代码
[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
bash 复制代码
# 启动
systemctl start zookeeper

# 查看状态
systemctl status zookeeper

# 停止
systemctl stop zookeeper

以上systemctl管理配置完成。

总结

好的,以上就是zookeeper安装的详细步骤,欢迎大家在安装过程中遇到任何问题时留言反馈。我会汇总大家的问题及解决方法,持续改进和完善这份文档。

最后,感谢大家的指导和支持,希望各位多多提宝贵的建议,您的建议是我们后续持续优化的动力,感谢各位!

相关推荐
A小辣椒9 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒12 小时前
TShark:基础知识
linux
AlfredZhao14 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言