centos8安装zookeeper

CentOS8安装Zookeeper

步骤

在官网下载安装包

https://downloads.apache.org/zookeeper/stable/

注意要下载带bin的,不带bin的是源码包,不能使用

image-20210323123011470

上传到centos系统中

服务器使用scp命令,由于我是本地docker环境,直接使用docker命令

docker cp Downloads/apache-zookeeper-3.5.9-bin.tar.gz CONTAINER ID:PATH

解压

1
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /usr/local/zookeeper/

这里是解压到了/usr/local目录下(可能需要先创建目录)

修改名称为zookeeper-3.5.9

mv apache-zookeeper-3.5.9-bin/ zookeeper-3.5.9

创建数据和日志存放目录

1
2
mkdir /usr/local/zookeeper/zookeeper-3.5.9/logs
mkdir /usr/local/zookeeper/zookeeper-3.5.9/data

打开目录

1
cd /usr/local/zookeeper/zookeeper-3.5.9/

修改cfg文件

  1. 先备份

    1
    2
    3
    4
    cd conf
    cp zoo_sample.cfg zoo_sample.cfg.bak
    mv zoo_sample.cfg zoo.cfg
    vim zoo.cfg
  2. vim文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime
    tickTime=2000
    #Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了
    initLimit=10
    #在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题
    syncLimit=5
    #存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能
    dataDir=/usr/local/zookeeper/zookeeper-3.5.9/data
    #事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能
    dataLogDir=/usr/local/zookeeper/zookeeper-3.5.9/logs
    #客户端连接server的端口,即对外服务端口,一般设置为2181吧
    clientPort=2181
    #第一个端口用于F和L之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信,server.x这里的x是一个数字,与myid文件中的id是一致的
    server.1=127.0.0.1:2888:3888

在data目录下创建myid文件,写入对应ip的机器编号

1
2
cd /usr/local/zookeeper/zookeeper-3.5.9/data
vim myid

image-20210323121217351

配置zk的环境变量

vim ~/.bash_profile

image-20210323121357158

在后面添加

1
2
3
4
5
# Zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.5.9/
PATH=$ZOOKEEPER_HOME/bin:$PATH

export PATH

使其生效

source ~/.bash_profile

启动

1
2
3
4
# 启动
zkServer.sh start
# 关闭
zkServer.sh stop

注意: 需要jdk环境

image-20210323123706310

如果启动失败

  1. 可以进入logs文件查看原因
  2. 可以使用zkServer.sh start-foreground命令

配置自启动

进入/etc/init.d目录下,创建脚本

1
2
3
4
5
cd /etc/init.d/ 
touch zookeeper
chmod +x zookeeper
#编辑
vim zookeeper
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
JAVA_HOME=/usr/local/jdk/jdk1.8.0_281 #实测必须要加这一行,不然尽管配置了也找不到
case $1 in
start) su root /usr/local/zookeeper/zookeeper-3.5.9/bin/zkServer.sh start;;
stop) su root /usr/local/zookeeper/zookeeper-3.5.9/bin/zkServer.sh stop;;
status) su root /usr/local/zookeeper/zookeeper-3.5.9/bin/zkServer.sh status;;
restart) su root /usr/local/zookeeper/zookeeper-3.5.9/bin/zkServer.sh restart;;
*) echo "require start|stop|status|restart" ;;
esac

注意需要配置JAVA_HOME, 尽管centos配置后依然找不到

注册到系统服务

chkconfig --add zookeeper

删除: chkconfig --del zookeeper

添加到开机自启动

chkconfig zookeeper on

chkconfig zookeeper off

image-20210323124604189

验证

service zookeeper status

如果没有service指令,yum install initscripts

image-20210323131533426

连接

zkCli.sh -server 127.0.0.1:2181