ZooKeeper【部署 01】单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置+shell自动部署脚本(一篇入门zookeeper)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: ZooKeeper【部署 01】单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置+shell自动部署脚本(一篇入门zookeeper)

使用的安装文件是apache-zookeeper-3.6.2-bin.tar.gz,以下内容均以此版本进行说明。

1.安装

# 在安装文件目录解压并移动到/usr/local/zookeeper目录下
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
mv ./apache-zookeeper-3.6.2-bin/ /usr/local/zookeeper

2.配置

配置环境变量:配置环境变量的方法比较多,这里统一将环境变量放在 /etc/profile.d/my_env.sh 内。

vim /etc/profile.d/my_env.sh
# 1.添加 ZOOKEEPER_HOME 和 PATH
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
# 2.使得配置的环境变量立即生效:
  # 首先是要赋权限【只操作一次就行】
  chmod +x /etc/profile.d/my_env.sh
source /etc/profile.d/my_env.sh
# 3.验证是否生效
echo ${ZOOKEEPER_HOME}
/usr/local/zookeeper

zookeeper配置文件:

# 进入${ZOOKEEPER_HOME}/conf/ 目录下 拷贝配置样本并进行修改 
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# ------------以下为配置文件内容------------
# 指定数据存储目录和日志文件目录(目录不用预先创建)
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
# 以下使用默认值
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181

配置项说明:

  • dataDir:zk用于存储内存数据库快照的目录。如果不指定dataLogDir参数,则数据库更新的事务日志也将会存储在该目录下。
  • dataLogDir:指定zk事务日志的存储目录。
  • tickTime: zk中使用的基本时间单元,单位为毫秒,用于控制心跳和超时,比如session超时:N*tickTime。更低的tickTime值可以更快的发现超时问题。
  • initLimit:用于集群,zk集群中follower初始化连接到leader时,最长能忍受多少个tickTime,以tickTime的倍数来表示,默认值为10,即为20s。
  • syncLimit:用于集群,用于配置leader和follower间进行心跳检测的最大超时时间。如果在设置的时间内followers无法与leader进行通信,那么follower将会被丢弃。以tickTime的倍数来表示,默认值为5,即10s。
  • clientPort:服务器监听客户端连接的端口,默认值为2181
  • maxClientCnxns:限制单个客户端与单台服务之间的并发连接数,默认值为60,设置为0则不限制。
  • autopurge.snapRetainCount:配置zk在自动清理的时候需要保存的数据文件快照的数量和对应的事务日志文件,默认为3。
  • autopurge.purgeInterval:和autopurge.snapRetainCount配置使用,用于配置zk自动清理文件的频率,默认为1小时,即默认开启自动清理功能,设置为0,则表示禁用清理功能。

3.启动

命令启动:

# zookeeper服务命令
zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}
# 启动
zkServer.sh start

配置开机启动:

# 1.添加文件
vim /etc/rc.d/init.d/zookeeper
# ------------文件内容------------
# 如果有Kafka服务那么chkconfig的配置参数启动服务的优先等级要高于Kafka停止服务的优先等级要低于Kafka
#!/bin/bash
# chkconfig: 2345 80 12
# description: service zookeeper
# processname: zookeeper
export JAVA_HOME=/usr/local/java
ZOOKEEPER_HOME=/usr/local/zookeeper
case  "$1"   in
     start) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh start;;
     start-foreground) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh start-foreground;;
     stop) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh stop;;
     status) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh status;;
     restart) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh restart;;
     upgrade) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh upgrade;;
     print-cmd) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh print-cmd;;
     *) echo "require start|start-foreground|stop|status|restart|print-cmd";;
esac
# 2.赋执行权并添加开启开机自启
chmod +x /etc/rc.d/init.d/zookeeper
chkconfig --add /etc/rc.d/init.d/zookeeper
chkconfig zookeeper on
# 查看zookeeper是否添加成功
chkconfig --list zookeeper
zookeeper       0:off   1:off   2:on    3:on    4:on    5:on    6:off
# 3.服务命令
service zookeeper start
service zookeeper stop
...
# 如果防火墙未关闭则需要开启外网端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent && firewall-cmd --reload

4.验证

由于已经配置过环境变量,直接使用下面命令启动即可:

[root@tcloud ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

由于添加了service服务,也可使用服务命令【本质是一样的】:

[root@tcloud ~]# service zookeeper start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

使用 jps 验证进程是否已经启动,出现 QuorumPeerMain 则代表启动成功:

[root@tcloud /]# jps
15934 QuorumPeerMain

也可以登录客户端进行测试:

[root@tcloud /]# zkCli.sh
[zk: localhost:2181(CONNECTED) 0] version
ZooKeeper CLI version: 3.6.2--803c7f1a12f85978cb049af5e4ef23bd8b688715, built on 09/04/2020 12:44 GMT

自启动测试:

# 重启
reboot
# 开机后查看zookeeper状态
Last login: Thu Mar 31 08:56:56 2022
[root@tcloud ~]# service zookeeper status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

至此,zookeeper单机版部署成功。

5.chkconfig配置说明

Linux chkconfig 命令用于检查,设置系统的各种服务。这是 Red Hat 公司遵循 GPL 规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。

# 语法
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
  • –add  增加所指定的系统服务,让 chkconfig 指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
  • –del  删除所指定的系统服务,不再由 chkconfig 指令管理,并同时在系统启动的叙述文件内删除相关数据。
  • –level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕。
# 列出 chkconfig 所有的服务的情况或serviceName的服务情况
chkconfig --list [serviceName]
# 开启服务
chkconfig serviceName on 
# 关闭服务
chkconfig serviceName off

系统服务配置文件里的# chkconfig: 2345 10 90三个参数说明:

第一个参数,指定服务的运行级别。

0 关机
1 单用户模式
2 无网络支持的多用户模式
3 有网络支持的多用户模式
4 保留,未使用
5 有网络支持有X-Window支持的多用户模式
6 重新引导系统,即重启

第二个参数,指定启动服务的优先等级。第三个参数,指定停止服务的优先等级。特别注意:数值越大等级越低。

6.自动部署脚本

将安装文件和自动部署脚本zookeeperAutoInstall.sh放在同一个文件夹下,执行 shell 脚本即可完成部署启动。ZOOKEEPER_HOME文件夹可自行调整。

#!/bin/bash
rm -rf /usr/local/zookeeper
echo "1.安装Zookeeper..."
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
sleep 10
mv ./apache-zookeeper-3.6.2-bin/ /usr/local/zookeeper
echo "1.安装Zookeeper完毕"
echo "2.环境变量配置..."
cat <<EOF > /etc/profile.d/zookeeper.sh
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
EOF
sleep 2
chmod +x /etc/profile.d/zookeeper.sh
source /etc/profile.d/zookeeper.sh
echo "ZOOKEEPER_HOME目录:"${ZOOKEEPER_HOME}
echo "2.环境变量配置完毕"
echo "3.Zookeeper配置..."
cp ${ZOOKEEPER_HOME}/conf/zoo_sample.cfg ${ZOOKEEPER_HOME}/conf/zoo.cfg
sed -i "12c dataDir=/usr/local/zookeeper/data" ${ZOOKEEPER_HOME}/conf/zoo.cfg
sed -i "13i dataLogDir=/usr/local/zookeeper/datalog" ${ZOOKEEPER_HOME}/conf/zoo.cfg
echo "3.Zookeeper配置完毕"
echo "4.启动Zookeeper..."
zkServer.sh start
zkServer.sh status
echo "4.启动Zookeeper完毕"
echo "5.开启2181端口..."
firewall-cmd --zone=public --add-port=2181/tcp --permanent && firewall-cmd --reload
echo "5.开启2181端口完毕"
echo "6.加入到service服务并设置开机自启..."
cat <<EOF > /etc/rc.d/init.d/zookeeper
#!/bin/bash
# chkconfig: 2345 10 90
# description: service zookeeper
# processname: zookeeper
ZOOKEEPER_HOME=/usr/local/zookeeper
case  "$1"   in
     start) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh start;;
     start-foreground) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh start-foreground;;
     stop) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh stop;;
     status) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh status;;
     restart) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh restart;;
     upgrade) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh upgrade;;
     print-cmd) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh print-cmd;;
     *) echo "require start|start-foreground|stop|status|restart|print-cmd";;
esac
EOF
chmod +x /etc/rc.d/init.d/zookeeper
chkconfig --add /etc/rc.d/init.d/zookeeper
chkconfig zookeeper on
echo "6.加入到service服务并设置开机自启完毕"
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
15天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
38 2
6种方法打造出色的Shell脚本
|
2天前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
9 1
|
6天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
20 2
|
17天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
6月前
|
Shell 索引
shell脚本入门到实战(四)- 数组
shell脚本入门到实战(四)- 数组
|
6月前
|
Shell
shell脚本入门到实战(三) - 变量
shell脚本入门到实战(三) - 变量
|
6月前
|
Shell Linux 人机交互
shell脚本入门到实战(二)--shell输入和格式化输出
shell脚本入门到实战(二)--shell输入和格式化输出
408 0
|
6月前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
130 3
|
6月前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
6月前
|
Unix Shell Linux
【Shell】Shell脚本入门
【Shell】Shell脚本入门
102 0