【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安装的详细步骤,欢迎大家在安装过程中遇到任何问题时留言反馈。我会汇总大家的问题及解决方法,持续改进和完善这份文档。

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

相关推荐
小鸡食米3 分钟前
RHCSA
linux·运维·服务器
橘子真甜~17 分钟前
Linux操作系统2-进程控制3(进程替换,exec相关函数和系统调用)
linux·运维·服务器·进程控制·进程等待
xiaoerbuyu123330 分钟前
ubuntu 连不上网 桌面 右上角没有网络图标 Ubuntu复制后虚拟网络失效问题
linux·运维·ubuntu
胖胖不胖、42 分钟前
解决:Openstack创建实例进入控制台报错Something went wrong, connection is closed
linux·服务器·openstack
楚疏笃1 小时前
linux安全管理-账号口令
linux·服务器·安全
沐多1 小时前
linux实时操作系统xenomai看门狗(watchdog)机制及作用介绍
linux·xenomai·实时linux
孤邑1 小时前
【Linux】网络通信
linux·服务器·网络·笔记·学习
qq_448941081 小时前
1、正则表达式
linux·正则表达式
9毫米的幻想1 小时前
【Linux系统】—— 基本指令(四)
linux·c语言·c++·学习
cykaw25902 小时前
Linux和Ubuntu的关系
linux·运维·服务器