ZooKeeper 系列:ZooKeeper 集群环境搭建

由 node-01、node-02 和 node-03 三个节点组成 ZooKeeper 集群环境,搭建步骤如下:

步骤一:上传 zookeeper-3.4.6.tar.gz 安装包到 node-01 并解压
bash 复制代码
[root@node-01 ~]# ll
总用量 17288
drwxr-xr-x. 6 root root       86 3月  26 17:32 apps
-rw-r--r--. 1 root root 17699306 3月  30 16:19 zookeeper-3.4.6.tar.gz #上传的zookeeper压缩包
[root@node-01 ~]# tar -zxvf zookeeper-3.4.6.tar.gz -C apps/
[root@node-01 ~]# rm -rf zookeeper-3.4.6.tar.gz
步骤二:修改 conf/zoo.cfg 配置文件
bash 复制代码
[root@node-01 ~]# cd apps/zookeeper-3.4.6/conf/
[root@node-01 conf]# ll
总用量 12
-rw-rw-r--. 1 1000 1000  535 2月  20 2014 configuration.xsl
-rw-rw-r--. 1 1000 1000 2161 2月  20 2014 log4j.properties
-rw-rw-r--. 1 1000 1000  922 2月  20 2014 zoo_sample.cfg
# 拷贝 zoo_sample.cfg 文件并改名为 zoo.cfg
[root@hdp-01 conf]# cp zoo_sample.cfg zoo.cfg
[root@hdp-01 conf]# vi zoo.cfg 
#修改第 12 行文件存储路径
dataDir=/root/apps/zookeeper-3.4.6/data

#行尾添加ZooKeeper集群节点
server.1=node-01:2888:3888
server.2=node-02:2888:3888
server.3=node-03:2888:3888
步骤三:到 node-01 上新建 zookeeper 数据存储目录 data,并在 data 目录中创建一个文件 myid,内容为 1

myid 文件存放 Zookeeper 集群节点的唯一标识

bash 复制代码
[root@node-01 conf]# cd /root/apps/zookeeper-3.4.6
[root@node-01 zookeeper-3.4.6]# mkdir data
[root@node-01 zookeeper-3.4.6]# cd data/
[root@node-01 data]# echo "1" > myid
步骤四:将 node-01 的 zookeeper 安装包拷贝给 node-02 、node-03
bash 复制代码
[root@node-01 data]# cd /root/apps/
[root@node-01 apps]# scp -r zookeeper-3.4.6/ node-02:$PWD
[root@node-01 apps]# scp -r zookeeper-3.4.6/ node-03:$PWD
步骤五:到 node-02 上,修改 zookeeper 数据存储目录 data 下的 myid 文件,将其内容改为 2
bash 复制代码
[root@node-02 ~]# cd /root/apps/zookeeper-3.4.6/data
[root@node-02 data]# echo "2" > myid
步骤六:到 node-03 上,修改 zookeeper 数据存储目录 data 下的 myid 文件,将其内容改为 3
bash 复制代码
[root@node-03 ~]# cd /root/apps/zookeeper-3.4.6/data
[root@node-03 data]# echo "3" > myid
步骤七:启动 zookeeper 集群(node-01、node-02、node-03)
bash 复制代码
### node-01
[root@node-01 ~]# cd /root/apps/zookeeper-3.4.6/
[root@node-01 zookeeper-3.4.6]# bin/zkServer.sh start
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

#查看zookeeper运行状态
[root@node-01 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running. #只有一票无法当选 Leader

### node-02
[root@node-02 ~]# cd /root/apps/zookeeper-3.4.6/
[root@node-02 zookeeper-3.4.6]# bin/zkServer.sh start
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

#查看zookeeper运行状态
[root@node-02 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader # leader 领导者(相当于 master)

### node-03
[root@node-03 ~]# cd /root/apps/zookeeper-3.4.6/
[root@node-03 zookeeper-3.4.6]# bin/zkServer.sh start
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED  

#查看zookeeper运行状态
[root@node-03 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower # follower 跟随者(相当于 slave)

#再次查看 node-01 zookeeper运行状态
[root@node-01 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower # 现在变为 follower 状态
步骤八:分别在 node-01、node-02 和 node-03 查看 ZooKeeper 进程
bash 复制代码
[root@node-01 ~]# jps
1825 QuorumPeerMain #zookeeper 进程
1915 Jps

[root@node-02 ~]# jps
1825 QuorumPeerMain #zookeeper 进程
1915 Jps

[root@node-03 ~]# jps
1825 QuorumPeerMain #zookeeper 进程
1915 Jps

以上说明 ZooKeeper 集群中三个 ZooKeeper 服务器进程都已正常启动

步骤九:在 node -01 创建自动批量启动 zookeeper 集群脚本 zkCluster.sh
bash 复制代码
[root@node-01 zookeeper-3.4.6]# cd /root/apps/zookeeper-3.4.6/bin
[root@node-01 bin]# vim zkCluster.sh
#!/bin/bash
for host in node-01 node-02 node-03
do
echo "${host}:${1}ing....."
ssh $host "source /etc/profile;/root/apps/zookeeper-3.4.6/bin/zkServer.sh $1"
done

sleep 2

for host in node-01 node-02 node-03
do
ssh $host "source /etc/profile; /root/apps/zookeeper-3.4.6/bin/zkServer.sh status"
done

#添加脚本执行权限
[root@node-01 bin]# chmod +x zkCluster.sh
步骤十:在 node-01 配置 ZooKeeper 环境变量
bash 复制代码
[root@node-01 bin]# vim /etc/profile
#行尾添加如下配置
export ZOOKEEPER_HOME=/root/apps/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
#执行脚本让环境变量生效
[root@node-01 bin]# source /etc/profile
步骤十一:将 node-01 的 ZooKeeper 集群脚本 zkCluster.sh 和 环境配置文件 profile 拷贝到 node-02、node-03
bash 复制代码
[root@node-01 bin]# cd /root/apps/zookeeper-3.4.6/bin
[root@node-01 bin]# scp zkCluster.sh node-02:$PWD
[root@node-01 bin]# scp zkCluster.sh node-03:$PWD
[root@node-01 bin]# scp /etc/profile node-02:$PWD
[root@node-01 bin]# scp /etc/profile node-03:$PWD

#添加脚本执行权限
[root@node-02 bin]# cd /root/apps/zookeeper-3.4.6/bin
[root@node-02 bin]# chmod +x zkCluster.sh
#执行脚本让环境变量生效
[root@node-02 bin]# source /etc/profile

#添加脚本执行权限
[root@node-03 bin]# cd /root/apps/zookeeper-3.4.6/bin
[root@node-03 bin]# chmod +x zkCluster.sh
#执行脚本让环境变量生效
[root@node-03 bin]# source /etc/profile
步骤十二:启动客户端
bash 复制代码
[root@node-01 ~]# zkCli.sh
[zk: localhost:2181(CONNECTED) 0]
相关推荐
yumgpkpm6 小时前
预测:2026年大数据软件+AI大模型的发展趋势
大数据·人工智能·算法·zookeeper·kafka·开源·cloudera
岁岁种桃花儿7 小时前
注册中心宕机后,RPC调用还能成功吗?主流框架实测级分析
zookeeper·eureka·rpc
Hello.Reader17 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
小马爱打代码2 天前
ZooKeeper:入门实战
分布式·zookeeper·云原生
岁岁种桃花儿3 天前
深度解析DolphinScheduler核心架构:搭建高可用Zookeeper集群
linux·分布式·zookeeper
AC赳赳老秦5 天前
DeepSeek一体机部署:中小企业本地化算力成本控制方案
服务器·数据库·人工智能·zookeeper·时序数据库·terraform·deepseek
张np6 天前
java进阶-Zookeeper
java·zookeeper·java-zookeeper
雪碧聊技术7 天前
什么是Zookeeper?
分布式·zookeeper
AC赳赳老秦8 天前
外文文献精读:DeepSeek翻译并解析顶会论文核心技术要点
前端·flutter·zookeeper·自动化·rabbitmq·prometheus·deepseek
what丶k12 天前
ZooKeeper从入门到精通:分布式协调的核心技术解析
zookeeper