Zookeeper集群搭建指北

1.前置环境

实例1 实例1 实例1
IP地址 192.168.2.128 192.168.2.129 192.168.2.130
OS版本 CentOS Linux release 7.9.2009 (Core) CentOS Linux release 7.9.2009 (Core) CentOS Linux release 7.9.2009 (Core)
ZK版本 zookeeper-3.8.0 zookeeper-3.8.0 zookeeper-3.8.0
Java版本 JDK8 JDK8 JDK8
配置 4C16G,存储300GB 4C16G,存储300GB 4C16G,存储300GB

2.安装步骤

2.1 磁盘挂载(三个节点均需操作)

# 查看磁盘
[root@zookeeper01 ~]# fdisk -l

磁盘 /dev/vda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b1f33

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200    83886079    40893440   8e  Linux LVM

磁盘 /dev/vdb:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

# 创建pv卷
[root@zookeeper01 ~]# pvcreate /dev/vdb
  Physical volume "/dev/vdb" successfully created.
# 创建vg
[root@zookeeper01 ~]# vgcreate lg_data /dev/vdb
  Volume group "kafka" successfully created
# 创建lv
[root@zookeeper01 ~]# lvcreate -l 100%VG -n data lg_data
  Logical volume "data" created.
# 格式化分区为xfs
[root@zookeeper01 ~]# mkfs.xfs /dev/lg_data/data
# 创建数据目录
[root@zookeeper01 ~]# mkdir /data
# 挂载分区
[root@zookeeper01 ~]# mount /dev/lg_data/data /data/
# 开机启动
[root@zookeeper01 ~]# echo '/dev/lg_data/data /data xfs defaults 0 0' >> /etc/fstab 

在三台实例上重复上述操作

2.2 JDK安装(三个节点均需操作)

2.2.1 JDK下载

# 下载JDK(从Github下载,下载链接可能会失效,可以从该网站获取 https://adoptium.net/zh-CN/)
[root@zookeeper01 /data]# wget -c 'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u352-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u352b08.tar.gz' -O /data/OpenJDK8U-jdk_x64_linux_hotspot_8u352b08.tar.gz
# 解压
[root@zookeeper01 data]# tar -xvf OpenJDK8U-jdk_x64_linux_hotspot_8u352b08.tar.gz
# 创建JDK目录并移动解压文件到该目录
[root@zookeeper01 data]# mkdir /usr/local/java &&  mv jdk8u352-b08/ /usr/local/java/

2.2.2 配置并验证JDK

  1. 配置环境变量,编辑文件:vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/java/jdk8u352-b08
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
  1. 加载环境变量
[root@zookeeper01 data]# source /etc/profile
[root@zookeeper01 data]# echo $JAVA_HOME

2.3 ZK安装(三个节点均需操作)

2.3.1 下载安装包

[root@zookeeper01 data]# wget -c 'https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz' -O /data/apache-zookeeper-3.8.0-bin.tar.gz

2.3.2 解压

[root@zookeeper01 data]# tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz
[root@zookeeper01 data]# mv /data/apache-zookeeper-3.8.0-bin /data/zookeeper

2.3.3 配置

[root@zookeeper01 data]# cd /data/zookeeper/conf
# 添加zookeeper配置文件
[root@zookeeper01 conf]# cp zoo_sample.cfg zoo.cfg
# 创建数据存放目录
[root@zookeeper01 conf]# mkdir -p /data/zookeeper/data
[root@zookeeper01 conf]# vim zoo.cfg
# 配置数据目录
dataDir=/data/zookeeper/data
# 配置服务节点信息
server.1=zookeeper01:2188:2888
server.2=zookeeper02:2188:2888
server.3=zookeeper02:2188:2888

# 配置文件保存退出后,进入data目录
[root@zookeeper01 conf]# cd /data/zookeeper/data
# 生成myid文件,指定myid服务号,注意:每个节点的myid不可相同
[root@zookeeper01 conf]# echo "1" > /data/zookeeper/data/myid

2.3.4 关闭防火墙(根据环境不同,可选择性执行)

若需要关闭防火墙,在三台实例上重复上述操作

[root@zookeeper01 conf]# systemctl stop firewalld
[root@zookeeper01 conf]# systemctl disable firewalld

2.3.5 配置Systemctl zookeeper服务

#创建zookeeper服务文件
[root@zookeeper01 conf]# vim /usr/lib/systemd/system/zookeeper.service
[Unit]
Description=zookeeper.service
After=network.target

[Service]
Type=forking
Environment="PATH=/usr/local/java/jdk8u352-b08/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
User=root
Group=root
ExecStart=/data/zookeeper/bin/zkServer.sh start 
ExecStop=/data/zookeeper/bin/zkServer.sh stop
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • 刷新systemctl
[root@zookeeper01 conf]# systemctl daemon-reload
  • 设置zookeeper服务开机自启
[root@zookeeper01 conf]# systemctl enable zookeeper
  • 启动zookeeper
[root@zookeeper01 conf]# systemctl start zookeeper

在三台实例上重复上述操作

2.3.6 其它操作

  • 关闭zookeeper实例systemctl stop zookeeper
  • 重启zookeeper实例systemctl restart zookeeper
  • 查看zookeeper实例状态systemctl status zookeeper

2.3.7 查看集群状态

实例1、实例2、实例3分别查看集群状态

[root@zookeeper01 conf]# /data/zookeeper/bin/zkServer.sh status

查询结果如下:

[root@zookeeper01 bin]# /data/zookeeper/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@kafka-02 data]# /data/zookeeper/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@kafka-03 data]# /data/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

以上,zookeeper集群搭建完成。


Zookeeper集群搭建指北
https://www.gmtgo.com/39014.html
作者
大帅
发布于
2022年12月3日
许可协议