搭建分布式ZooKeeper集群

yaml 复制代码
title: 搭建分布式ZooKeeper集群
date: 2024-11-26 23:39:00
categories: 
- 服务器
tags:
- ZooKeeper
- 大数据

搭建分布式ZooKeeper集群

  • 本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3

前提

首先配置好Hadoop集群

  • 为了配置方便,Hadoop集群的所有软件及文件位于/opt/module目录下

1. 修改主机名(域名)与IP地址的对应关系

规划功能

Master Slave1 Slave2
主节点 从节点 从节点
192.168.66.6 192.168.66.7 192.168.66.21
  • 如若在这之前,Hadoop已配置过此项,则只需记住已配置的数据,无须更改
bash 复制代码
cat >> /etc/hosts << EOF
# ------ZooKeeper主机名解析 配置--------
192.168.66.6 master 
192.168.66.7 slave1 
192.168.66.21 slave2  
EOF

2. 安装程序文件

  • 首先上传zookeeper的文件到服务器上,或直接进行以下的下载行为
bash 复制代码
# 使用wget命令下载zookeeper文件(二选一)
wget -P /tmp/ -c 'https://repo.huaweicloud.com/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3.tar.gz'

# 使用curl命令下载zookeeper文件(二选一)
curl -C - 'https://repo.huaweicloud.com/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3.tar.gz' -O /tmp/

# 解压文件到指定目录
tar -zxvf /tmp/apache-zookeeper-3.6.3-bin.tar.gz  -C /opt/module/

# 重名名文件夹
mv /opt/module/apache-zookeeper-3.6.3-bin/ /opt/module/zookeeper/

3. 配置用户环境变量

bash 复制代码
cat >>  ~/.bashrc << "EOF"

# ------------------- Zookeeper 配置--------------------
# 设置ZK_HOME环境变量,指向zookeeper安装目录
export ZK_HOME=/opt/module/zookeeper

# 将ZK_HOME的bin目录以及conf目录添加到PATH环境变量
export PATH=$PATH:$ZK_HOME/bin:$ZK_HOME/conf

# 将ZK_HOME的lib目录添加到CLASSPATH环境变量
export CLASSPATH=$CLASSPATH:$ZK_HOME/lib
# -------------------------------------------------
EOF
bash 复制代码
-----------------------------------------------------------
                          说明

举例   export PATH=$ZK_HOME/bin:$ZK_HOME/conf:$PATH

英文冒号代表分隔

这段代码表示
1. 当你输入一个命令时,shell会首先在"ZK_HOME"这个变量的"bin"子目录中查找,
3. 其次,若找不到,则在"ZK_HOME"这个变量的"conf"子目录中查找,
4. 最后,若找不到,则在"PATH"的指定目录中查找

-------------------------------------------------------------

4. 编写Zookeeper配置文件

bash 复制代码
# 文件重命名
mv /opt/module/zookeeper/conf/zoo_sample.cfg /opt/module/zookeeper/conf/zoo.cfg
bash 复制代码
# 创建zookeeper的数据目录
mkdir /opt/module/zookeeper/data

# 创建zookeeper的节点信息
echo "1" > /opt/module/zookeeper/data/myid
bash 复制代码
# 更改Zookeeper的数据位置,并添加zookeeper的节点信息
# 这里的节点信息,根据一开始你自己的规划填写,也可以填写主机名

sed -i -e 's|dataDir=/tmp/zookeeper|dataDir=/opt/module/zookeeper/data|' \
-e '/dataDir=/a \
server.1=192.168.66.6:2888:3888\
server.2=192.168.66.7:2888:3888\
server.3=192.168.66.21:2888:3888' /opt/module/zookeeper/conf/zoo.cfg

5. 同步所需文件

bash 复制代码
# 同步到slave1机器
scp -r /opt/module/zookeeper/ root@slave1:/opt/module/
scp  ~/.bashrc root@slave1:/root

# 同步到slave2机器
scp -r /opt/module/zookeeper/ root@slave2:/opt/module/
scp  ~/.bashrc root@slave2:/root

6. 修改从节点Zookeeper配置文件

bash 复制代码
# 修改slave1的配置文件
ssh slave1 'echo "2" > /opt/module/zookeeper/data/myid'

# 修改slave2的配置文件
ssh slave2 'echo "3" > /opt/module/zookeeper/data/myid'

7. 环境变量生效

bash 复制代码
# master节点环境变量生效
source  ~/.bashrc

# slave1节点环境变量生效
ssh slave2 'source  ~/.bashrc'

# slave2节点环境变量生效
ssh slave2 'source  ~/.bashrc'

8. 后台启动Zookeeper

bash 复制代码
# master节点启动zookeeper
$ZK_HOME/bin/zkServer.sh start

# slave1节点启动zookeeper
ssh slave1 ' $ZK_HOME/bin/zkServer.sh start'

# slave2节点启动zookeeper
ssh slave2 ' $ZK_HOME/bin/zkServer.sh start'

9. 查看Zookeeper状态

bash 复制代码
# 查看master节点的zookeeper状态
$ZK_HOME/bin/zkServer.sh status

# 查看slave1节点的zookeeper状态
ssh slave1 ' $ZK_HOME/bin/zkServer.sh status '

# 查看slave2节点的zookeeper状态
ssh slave2 ' $ZK_HOME/bin/zkServer.sh status '

备注

若出现It is probably not running

bash 复制代码
# 报错信息
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Error contacting service. It is probably not running.

请关闭防火墙

bash 复制代码
# 关闭防火墙
systemctl stop firewalld

# 禁止防火墙开机自启
systemctl disabled firewalld

若不想关闭防火墙,则需要放行防火墙的2888以及3888端口

bash 复制代码
# 放行防火墙2888端口
firewall-cmd --add-port=2888/tcp --permanent --zone=public 

# 放行防火墙3888端口
firewall-cmd --add-port=3888/tcp --permanent --zone=public 

# 重载防火墙配置
firewall-cmd --reload 

Zookeeper前台运行

该命令用于启动 ZooKeeper 服务,并且在前台运行。

ZooKeeper 的所有日志和输出都会直接显示在控制台上,而不是写入日志文件

通常用于调试和检查 ZooKeeper 运行时的异常情况

bash 复制代码
# 前台运行命令
/opt/module/zookeeper/bin/zkServer.sh start-foreground

停止Zookeeper

bash 复制代码
# 停止master节点的zookeeper服务
/opt/module/zookeeper/bin/zkServer.sh stop

# 停止slave1节点的zookeeper服务
ssh slave1 '/opt/module/zookeeper/bin/zkServer.sh stop'

# 停止slave2节点的zookeeper服务
ssh slave2 '/opt/module/zookeeper/bin/zkServer.sh stop'

参考文档

  1. 解决问题Client port found: 2181. Client address: localhost. Client SSL: false.-CSDN博客

  2. Linux环境下zookeeper的安装教程(超详细!!)_linux zk安装-CSDN博客

  3. zookeeper集群搭建步骤(超详细)-CSDN博客

  4. ZooKeeper JMX enabled by default Using config...完美解决-CSDN博客

  5. 启动ZooKeeper报错ZooKeeper JMX enabled by default Using config: /usr/Local/ zookeeper/bin/ . ./conf/zoo.-CSDN博客

相关推荐
斯普信云原生组2 小时前
Zookeeper介绍与安装配置
分布式·zookeeper·云原生
程序猿阿伟7 小时前
《分布式软总线:网络抖动下的数据传输“定海神针”》
网络·分布式
猿java12 小时前
10种常见的架构风格,你用过几种?
java·分布式·架构
跟着珅聪学java14 小时前
kafka菜鸟教程
分布式·kafka
异常君17 小时前
深入剖析 Redis 集群:分布式架构与实现原理全解
redis·分布式·后端
酷炫码神17 小时前
Windows10系统RabbitMQ无法访问Web端界面
前端·分布式·rabbitmq
曾经的三心草20 小时前
博客系统-RabbitMQ
分布式·rabbitmq
西岭千秋雪_20 小时前
Nacos配置中心客户端处理服务端配置信息源码解析
java·开发语言·分布式·spring·微服务·中间件
翻滚吧键盘20 小时前
在 Debian 12 中恢复被删除的 smb.conf 配置文件
运维·数据库·debian
DemonAvenger21 小时前
Go并发编程进阶:无锁数据结构与效率优化实战
分布式·架构·go