手把手实战:CentOS 7 上部署 ZooKeeper 完全分布式集群
- 实操笔记
- 2025-03-25
- 33热度
- 0评论
一、集群规划
节点IP | 角色 | 数据目录 | 服务端口 | 选举端口 | 通信端口 |
192.168.220.30 | Leader | $ZK_HOME/zkdata | 2181 | 3888 | 2888 |
192.168.220.31 | Follower | $ZK_HOME/zkdata | 2181 | 3888 | 2888 |
192.168.220.32 | Follower | $ZK_HOME/zkdata | 2181 | 3888 | 2888 |
二、基础环境准备
1.安装包:apache-zookeeper-3.5.10-bin.tar.gz
2.关闭防火墙、安装JDK、配置hosts解析
三、Zookeeper安装配置
1.上传Zookeeper安装包
apache-zookeeper-3.5.10-bin.tar.gz
上传到虚拟机hadoop101
的/opt/software
2.安装Zookeeper
hadoop101
的/opt/apps
目录。
[root@hadoop101 software]# tar zxvf apache-zookeeper-3.5.10-bin.tar.gz -C /opt/apps/
将 ZooKeeper 安装目录重命名为zookeeper-3.5.10
。
[root@hadoop101 software]# cd /opt/apps/
[root@hadoop101 apps]# ls
apache-zookeeper-3.5.10-bin hadoop-2.7.6 jdk1.8.0_202
[root@hadoop101 apps]# mv apache-zookeeper-3.5.10-bin zookeeper-3.5.10
3.修改Zookeeper配置文件
进入虚拟机 hadoop101
的 /opt/apps/zookeeper-3.5.10/conf
目录,通过复制该目录中 ZooKeeper 提供的模板文件 zoo_sample.cfg
,创建ZooKeeper配置文件 zoo.cfg
[root@hadoop101 apps]# cd zookeeper-3.5.10/conf/
[root@hadoop101 conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
[root@hadoop101 conf]# cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
[root@hadoop101 conf]# vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/apps/zookeeper-3.5.10/zkdata
clientPort=2181
server.1=hadoop101:2888:3888
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
4.创建数据持久化目录
hadoop101
创建数据持久化目录 /opt/apps/zookeeper-3.5.10/zkdata
。
[root@hadoop101 conf]# cd ..
[root@hadoop101 zookeeper-3.5.10]# mkdir zkdata
[root@hadoop101 zookeeper-3.5.10]# ls
bin conf docs lib LICENSE.txt NOTICE.txt README.md README_packaging.txt zkdata
5.创建myid文件
文件用于标识 ZooKeeper 集群中每个节点的编号,该文件需要存放在数据持久化目录,编号的内容与文件 zoo.cfg
中指定每个节点的编号一致。如在配置文件 zoo.cfg
指定 ZooKeeper 集群中编号为1的节点运行在虚拟机 hadoop101
,那么需要在虚拟机 hadoop101
中的数据持久化目录创建myid
[root@hadoop101 zookeeper-3.5.10]# cd zkdata/
[root@hadoop101 zkdata]# echo 1 > ./myid
6.配置Zookeeper系统环境变量
hadoop101
执行 vi /etc/profile
命令编辑系统环境变量文件 profile
[root@hadoop101 zookeeper-3.5.10]# vi /etc/profile
# ZK_HOME
export ZK_HOME=/opt/apps/zookeeper-3.5.10
export PATH=$PATH:$ZK_HOME/bin
source /etc/profile
命令初始化系统环境变量使添加的ZooKeeper系统环境变量生效。
[root@hadoop101 zookeeper-3.5.10]# source /etc/profile
7.分发Zookeeper安装目录至其他主机
通过scp
hadoop101
的ZooKeeper安装目录分发至虚拟机 hadoop102
和 hadoop103
的/opt/apps
目录。
[root@hadoop101 zookeeper-3.5.10]# cd ..
[root@hadoop101 apps]# scp -r zookeeper-3.5.10 hadoop102:/opt/apps/ # 分发至虚拟机hadoop102
[root@hadoop101 apps]# scp -r zookeeper-3.5.10 hadoop103:/opt/apps/ # 分发至虚拟机hadoop103
8.修改其他主机myid文件
hadoop102
和hadoop103
中 myid
文件的内容修改为2
和3
。
[root@hadoop102 ~]# echo 2 > /opt/apps/zookeeper-3.5.10/zkdata/myid # 在虚拟机hadoop102执行
[root@hadoop103 ~]# echo 3 > /opt/apps/zookeeper-3.5.10/zkdata/myid # 在虚拟机hadoop103执行
9.启动Zookeeper
每个节点启动ZooKeeper服务
。
[root@hadoop101 zookeeper-3.5.10]# zkServer.sh start # 在虚拟机hadoop101执行
[root@hadoop102 zookeeper-3.5.10]# zkServer.sh start # 在虚拟机hadoop102执行
[root@hadoop103 zookeeper-3.5.10]# zkServer.sh start # 在虚拟机hadoop103执行
10.查看Zookeeper运行状态
查看ZooKeeper运行状态时,需要查看ZooKeeper集群的每个节点中ZooKeeper服务的运行状态。
[root@hadoop101 zookeeper-3.5.10]# zkServer.sh status # 在虚拟机hadoop101执行
[root@hadoop102 zookeeper-3.5.10]# zkServer.sh status # 在虚拟机hadoop102执行
[root@hadoop103 zookeeper-3.5.10]# zkServer.sh status # 在虚拟机hadoop103执行
四、常见故障排查
1.无法选举Leader
# 检查各节点 myid 文件是否匹配 server.x 配置
# 检查3888端口连通性:nc -vz zk-node1 3888
2.数据目录权限问题
chown -R zookeeper:zookeeper /data/zk /opt/zookeeper