04-Zookeeper环境搭建
星期一, 4月 7, 2025 | 2分钟阅读

关于Linux系统大数据环境搭建——04-Zookeeper环境搭建。
04-Zookeeper3.6.3环境搭建
Zookeeper版本:Zookeeper3.6.3
ZooKeeper集群搭建
首先将三台虚拟机切换至相互免秘钥快照(keyfree),然后将准备好的ZooKeeper 安装包上传至服务器。
node01
先在node01机器上执行以下操作。
解压。
[root@node01 ~]# tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /opt/yjx/
[root@node01 ~]# rm apache-zookeeper-3.6.3-bin.tar.gz -rf
创建数据目录、日志目录。
[root@node01 ~]# mkdir -p /var/yjx/zookeeper/data
[root@node01 ~]# mkdir -p /opt/yjx/apache-zookeeper-3.6.3-bin/logs
修改配置文件,ZooKeeper 启动时默认加载的配置文件名为zoo.cfg
。
[root@node01 ~]# cd /opt/yjx/apache-zookeeper-3.6.3-bin/
[root@node01 apache-zookeeper-3.6.3-bin]# cp conf/zoo_sample.cfg conf/zoo.cfg
[root@node01 apache-zookeeper-3.6.3-bin]# vim conf/zoo.cfg
主要修改以下内容(数字表示行号):
12 dataDir=/var/yjx/zookeeper/data
13 dataLogDir=/opt/yjx/apache-zookeeper-3.6.3-bin/logs
15 clientPort=2181
37 server.1=node01:2888:3888
38 server.2=node02:2888:3888
39 server.3=node03:2888:3888
server.1中的1是myid文件中的内容,2888用于集群内部通信,3888用于选举Leader。
node02/03
接下来将node01的ZooKeeper所有文件拷贝至node02和node03。推荐从node02和node03拷贝。
[root@node02 ~]# scp -r root@node01:/opt/yjx/apache-zookeeper-3.6.3-bin /opt/yjx/
[root@node03 ~]# scp -r root@node01:/opt/yjx/apache-zookeeper-3.6.3-bin /opt/yjx/
# 或者使用分发脚本
[root@node01 ~]# yjxrsync /opt/yjx/apache-zookeeper-3.6.3-bin
node01/02/03
然后在三台机器的/var/yjx/zookeeper/data
目录下分别创建myid
文件,内容分别为1,2,3。
node01:
[root@node01 ~]# echo 1 > /var/yjx/zookeeper/data/myid
node02:
[root@node02 ~]# mkdir -p /var/yjx/zookeeper/data
[root@node02 ~]# echo 2 > /var/yjx/zookeeper/data/myid
node03:
[root@node03 ~]# mkdir -p /var/yjx/zookeeper/data
[root@node03 ~]# echo 3 > /var/yjx/zookeeper/data/myid
环境变量
最后 vim /etc/profile
配置环境变量,环境搭建结束。
export ZOOKEEPER_HOME=/opt/yjx/apache-zookeeper-3.6.3-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
配完环境变量后 source /etc/profile
重新加载环境变量。
启动/查看状态/关闭
启动集群:
[root@node01 ~]# zkServer.sh start
[root@node02 ~]# zkServer.sh start
[root@node03 ~]# zkServer.sh start
查看状态:
[root@node01 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/yjx/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@node02 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/yjx/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@node03 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/yjx/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
停止集群:
[root@node01 ~]# zkServer.sh stop
[root@node02 ~]# zkServer.sh stop
[root@node03 ~]# zkServer.sh stop
环境搭建成功后,删除ZooKeeper安装包,shutdown -h now
关机拍摄快照。
ZK集群一键启动脚本
在/usr/local/bin
目录下创建对应服务的脚本:
[root@node01 ~]# vim /usr/local/bin/zookeeper
zookeeper
脚本内容如下:
#!/bin/bash
user=$(whoami)
case $1 in
"start")
for i in node01 node02 node03
do
echo -e "\e[1;34m==================== $i ZooKeeper 启动 ====================\e[0m"
ssh $user@$i "/opt/yjx/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start"
done
;;
"stop")
for i in node01 node02 node03
do
echo -e "\e[1;34m==================== $i ZooKeeper 停止 ====================\e[0m"
ssh $user@$i "/opt/yjx/apache-zookeeper-3.6.3-bin/bin/zkServer.sh stop"
done
;;
"status")
for i in node01 node02 node03
do
echo -e "\e[1;34m==================== $i ZooKeeper 状态 ====================\e[0m"
ssh $user@$i "/opt/yjx/apache-zookeeper-3.6.3-bin/bin/zkServer.sh status"
done
;;
"restart")
for i in node01 node02 node03
do
echo -e "\e[1;34m==================== $i ZooKeeper 重启 ====================\e[0m"
ssh $user@$i "/opt/yjx/apache-zookeeper-3.6.3-bin/bin/zkServer.sh restart"
done
;;
esac
修改脚本权限为用户读写执行rwx
,组读执行r-x
,其他用户无权限---
:
[root@node01 ~]# chmod 750 /usr/local/bin/zookeeper