Centos7 离线安装 zookeeper 并设置服务开机自启 实践笔记 自用

本文详细介绍了如何在CentOS 7上通过最小化安装包配置并启动Zookeeper 3.6.2,包括下载、配置文件编辑、环境变量设置、服务启动与故障排查,最终实现开机自启。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我使用centos7X64最小化安装
CentOS-7-x86_64-Minimal-1708
启动后状态
在这里插入图片描述

参考:zookeeper官方文档

1.先进官网选择个版本,(我当前的最新稳定版本是3.6.2)

在这里插入图片描述

2.下载并解压

我们放在/usr/local目录下

cd /usr/local
wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz

在这里插入图片描述

3.配置zookeeper

3.1.先复制一份配置文件为主配置

cd /usr/local/apache-zookeeper-3.6.2-bin/conf
cp zoo_sample.cfg zoo.cfg

在这里插入图片描述

3.2.创建数据存储目录与日志目录

cd /usr/local/apache-zookeeper-3.6.2-bin
mkdir data
mkdir log

在这里插入图片描述

3.3.修改数据存储和日志目录

dataLogDir表签手动添加,放到dataDir下面

[root@192-168-50-191 apache-zookeeper-3.6.2-bin]# cd /usr/local/apache-zookeeper-3.6.2-bin/conf
[root@192-168-50-191 conf]# vim zoo.cfg 

修改数据和日志存储位置

dataDir=/usr/local/apache-zookeeper-3.6.2-bin/data
dataLogDir=/usr/local/apache-zookeeper-3.6.2-bin/log

完整配置文件

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/local/apache-zookeeper-3.6.2-bin/data
dataLogDir=/usr/local/apache-zookeeper-3.6.2-bin/log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true


4.配置zookeeper环境变量

zookeeper依赖jvm环境

没装jdk的同学,请移步先安装jdk【centos7 安装 jdk8 的正确姿势】的文章

4.1装完jdk的环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

4.2把zookeepert的环境变量也加进去

vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.6.2-bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$ZOOKEEPER_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME

刷新环境变量生效

source /etc/profile

5.服务端命令启动

cd /usr/local/apache-zookeeper-3.6.2-bin/bin
./zkServer.sh start

在这里插入图片描述

6.客户端连接

./zkCli.sh

在这里插入图片描述
在这里插入图片描述

以连上,很ok

7.做成系统服务

7.1制作系统服务文件

vim /usr/lib/systemd/system/zookeeper.service 

输入如下内容

[Unit]
Description=zookeeper
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/apache-zookeeper-3.6.2-bin/bin/zkServer.sh start
ExecReload=/usr/local/apache-zookeeper-3.6.2-bin/bin/zkServer.sh restart
ExecStop=/usr/local/apache-zookeeper-3.6.2-bin/zkServer.sh stop
[Install]
WantedBy=multi-user.target

刷新生效

systemctl daemon-reload

先停掉刚才用命令启动的zookeeper

[root@192-168-50-191 bin]# pwd
/usr/local/apache-zookeeper-3.6.2-bin/bin
[root@192-168-50-191 bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[root@192-168-50-191 bin]#

7.2用服务启动zookeeper

systemctl start zookeeper.service
systemctl status zookeeper.service
[root@192-168-50-191 bin]# systemctl start zookeeper.service
Job for zookeeper.service failed because the control process exited with error code. See "systemctl status zookeeper.service" and "journalctl -xe" for details.
[root@192-168-50-191 bin]# systemctl status zookeeper.service
● zookeeper.service - zookeeper
   Loaded: loaded (/usr/lib/systemd/system/zookeeper.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 二 2020-11-24 09:40:10 CST; 12s ago
  Process: 42613 ExecStart=/usr/local/apache-zookeeper-3.6.2-bin/bin/zkServer.sh start (code=exited, status=1/FAILURE)

11月 24 09:40:10 192-168-50-191 systemd[1]: Starting zookeeper...
11月 24 09:40:10 192-168-50-191 zkServer.sh[42613]: Error: JAVA_HOME is not set and java could not be found in PATH.
11月 24 09:40:10 192-168-50-191 systemd[1]: zookeeper.service: control process exited, code=exited status=1
11月 24 09:40:10 192-168-50-191 systemd[1]: Failed to start zookeeper.
11月 24 09:40:10 192-168-50-191 systemd[1]: Unit zookeeper.service entered failed state.
11月 24 09:40:10 192-168-50-191 systemd[1]: zookeeper.service failed.
[root@192-168-50-191 bin]# 

7.3遇到个小问题,提示我们Error: JAVA_HOME is not set and java could not be found in PATH

问题不大,只是在服务里没拿到环境变量
Error: JAVA_HOME is not set and java could not be found in PATH.

export
[root@192-168-50-191 bin]# export
declare -x CLASSPATH=".:/usr/local/java/jdk1.8.0_211/lib/dt.jar:/usr/local/java/jdk1.8.0_211/lib/tools.jar:/usr/local/apache-zookeeper-3.6.2-bin/lib"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="192-168-50-191"
declare -x JAVA_HOME="/usr/local/java/jdk1.8.0_211"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
。。。。。

7.4拿到我们之前配置的java环境变量declare -x JAVA_HOME="/usr/local/java/jdk1.8.0_211",在if [ $# -gt 1 ]下面添加JAVA_HOME

export JAVA_HOME=/usr/local/java/jdk1.8.0_211
vim zkEnv.sh 
[root@192-168-50-191 bin]# pwd
/usr/local/apache-zookeeper-3.6.2-bin/bin
[root@192-168-50-191 bin]# vim zkEnv.sh 
[root@192-168-50-191 bin]# 

在这里插入图片描述

7.5再次以服务启动,很ok

[root@192-168-50-191 bin]# systemctl start zookeeper
[root@192-168-50-191 bin]# systemctl status zookeeper

在这里插入图片描述

7.6允许开机自启

systemctl enable zookeeper
[root@192-168-50-191 bin]# systemctl enable zookeeper
Created symlink from /etc/systemd/system/multi-user.target.wants/zookeeper.service to /usr/lib/systemd/system/zookeeper.service.
[root@192-168-50-191 bin]# 

7.7查看启动状态

systemctl status zookeeper
[root@192-168-50-191 bin]# systemctl status zookeeper
● zookeeper.service - zookeeper
   Loaded: loaded (/usr/lib/systemd/system/zookeeper.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2020-11-24 09:52:07 CST; 4min 43s ago
 Main PID: 72469 (java)
   CGroup: /system.slice/zookeeper.service
           └─72469 /usr/local/java/jdk1.8.0_211/bin/java -Dzookeeper.log.dir=/usr/local/apache-zookeeper-3.6.2-bin/bin/../logs -Dzookee...

11月 24 09:52:06 192-168-50-191 systemd[1]: Starting zookeeper...
11月 24 09:52:06 192-168-50-191 zkServer.sh[72453]: ZooKeeper JMX enabled by default
11月 24 09:52:06 192-168-50-191 zkServer.sh[72453]: Using config: /usr/local/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
11月 24 09:52:07 192-168-50-191 zkServer.sh[72453]: Starting zookeeper ... STARTED
11月 24 09:52:07 192-168-50-191 systemd[1]: Started zookeeper.
[root@192-168-50-191 bin]# 

7.8查看是否开机启动

systemctl is-enabled zookeeper
[root@192-168-50-191 bin]# systemctl is-enabled zookeeper
enabled

7.9取消开机自启动

systemctl disable zookeeper.service
[root@192-168-50-191 bin]# systemctl disable zookeeper.service
Removed symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service.
[root@192-168-50-191 bin]# systemctl is-enabled zookeeper
disabled
[root@192-168-50-191 bin]# 

收工,想了一下还是记录一下的好,虽然记录过程比较麻烦,但是有过程鸭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值