一、准备环境

1.1、三台服务器 系统 Centos 7.9

1
2
3
192.168.100.161  # 对应zookeeperID 2181
192.168.100.162 # 对应zookeeperID 2182
192.168.100.163 # 对应zookeeperID 2183

1.2、三台服务器上安装 Java

1
2
$ curl -L -o /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo
$ yum install -y java-11-amazon-corretto-devel

1.3、修改hosts

三台服务器上操作

1
2
3
4
$ vim /etc/hosts
192.168.100.161 zk01
192.168.100.162 zk02
192.168.100.163 zk03

二、安装

三台服务器上操作

2.1、下载安装包

1
2
3
4
$ cd /usr/local/src
$ wget https://downloads.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
$ tar xf apache-zookeeper-3.6.3-bin.tar.gz && mv apache-zookeeper-3.6.3-bin /usr/local/apache-zookeeper-3.6.3-bin
$ ln -s /usr/local/apache-zookeeper-3.6.3-bin /usr/local/zookeeper

2.2、修改环境变量

编辑 /etc/profile 文件, 在文件末尾添加以下环境变量配置:

1
2
3
$ vim /etc/profile 
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

2.3、添加用户

1
$ useradd -s /sbin/nologin -M zookeeper

2.4、初始化配置文件

初次使用 ZooKeeper时,需要将/usr/local/zookeeper/conf 目录下的 zoo_sample.cfg 重命名为 zoo.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
$ cp -rpv /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
$ cat /usr/local/zookeeper/conf/zoo.cfg
autopurge.purgeInterval=24
standaloneEnabled=false
dataDir=/data/zookeeper/zookeeper_data/2181 #ID 2181 需要根据每台服务器ID修改
autopurge.snapRetainCount=10
initLimit=10
4lw.commands.whitelist=*
tickTime=2000
syncLimit=5
dataLogDir=/data/zookeeper/zookeeper_logs/2181 #ID 2181 需要根据每台服务器
reconfigEnabled=true
dynamicConfigFile=/usr/local/zookeeper/conf/zoo_replicated.2181.cfg.dynamic #ID 2181 集群的配置文件

2.4、创建目录

1
2
3
4
$ mkdir -pv /data/zookeeper/{zookeeper_data,zookeeper_logs}
$ mkdir -p /data/zookeeper/zookeeper_data/ID # ID 2181 2182 2183
$ chown zookeeper.zookeeper /data/zookeeper -R
$ chown zookeeper.zookeeper /usr/local/zookeeper/ -R

2.5、server ID 2181 2182 2183

1
2
3
# 每台服务器对应的ID处理
$ cd /data/zookeeper/zookeeper_data/ID
$ echo ID > myid

2.6、 集群配置文件

1
2
3
4
5
6
7
$ vim zoo_replicated.ID.cfg.dynamic # 三台都要操作

server.2181=zk01:2888:3888:participant;0.0.0.0:2181
server.2182=zk02:2889:3889:participant;0.0.0.0:2182
server.2183=zk03:2890:3890:participant;0.0.0.0:2183

$ chown zookeeper.zookeeper zoo_replicated.ID.cfg.dynamic

2.7、配置内存

默认给的256M 太小

1
echo 'export JVMFLAGS="-Xms1024m -Xmx1024m $JVMFLAGS"' > /usr/local/zookeeper/conf/java.env

三、服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ vim /etc/systemd/system/zookeeper.service

[Unit]
Description=Zookeeper
Requires=network.target
After=network.target

[Service]
User=java
Group=java
Type=forking
Environment=JAVA_HOME=/usr/bin/java
WorkingDirectory=/usr/local/zookeeper
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop /usr/local/zookeeper/conf/zoo.cfg
ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart /usr/local/zookeeper/conf/zoo.cfg
User=zookeeper
Group=zookeeper

[Install]
WantedBy=multi-user.target

启动

1
2
3
4
5
6
# 重新加载配置信息:
$ systemctl daemon-reload
# 启动zookeeper:
$ systemctl start zookeeper.service
# 关掉zookeeper:
$ systemctl stop zookeeper.service