📑本篇内容:如何搭建 Zookeeper 分布式集群配置与快速部署~
📘 文章专栏:SpringBoot微服务 其原理与项目开发
📚 更新周期:2022年4月9日 ~ 2022年4月9日
🙊个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ)
🌇点赞 👍 收藏 ⭐留言 📝 一键三连 关爱程序猿,从你我做起
📖本文目录
📖Zookeeper 集群配置部署
📑 0.0 本文阅读须知
本文约定俗成了一些术语/参数等,这些参数/术语需要阅读本文的同学针对于自身的真实情况进行修改。
Master 是本文的唯一一台主机也就是名称节点
192.168.56.102 是 Master 的 ip 地址
hadoop 是 Master 下的一个普通用户
-----------------分割线---------------
slave1 是本文其中一台从机也就是其中一个数据节点
192.168.56.103 是 slave1 的 ip 地址
centos101 是 slave1 下的一个普通用户
-----------------分割线---------------
slave2 是本文另一台从机也就是另外一个数据节点
192.168.56.104 是 slave2 的 ip 地址
centos102 是 slave2 下的一个普通用户
📑 1.1 集群安装
🔖 1.1.1 集群规划
在 hadoop 、centos101 、centos102 三个节点上都部署Zookeeper
思考:如果是10台服务器,需要部署多少台Zookeeper?
🔖 1.1.2 解压安装
- 将我们下载好的
apache-zookeeper-3.5.7-bin.tar.gz
解压到我们的/usr/local
目录下
# 解压.tar.gz 文件到指定的文件夹当中
$ sudo tar -zxvf ./apache-zookeeper-3.5.7-bin.tar.gz -C /usr/local
# 进入/usr/local 对其重命名
$ cd /usr/local
$ sudo mv ./apache-zookeeper-3.5.7-bin/ ./zookeeper
# 将文件夹的所有者设置为 hadoop
$ sudo chown -R hadoop ./zookeeper/
- 配置环境变量
# 修改当前用户的环境变量配置
vim ~/.bashrc
在文件开头加入:
Ubuntun18.0.4
export ZOOKEEPER_HOME=/usr/local/zookeeper
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export PATH=${JAVA_HOME}/bin:${ZOOKEEPER_HOME}/bin:$PATH
centOS7.6
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export ZOOKEEPER_HOME=/usr/local/zookeeper
export CLASSPATH=.:$JAVA_HOME/lib/:$ZOOKEEPER_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
# 配置完毕之后 :wq 保存并退出然后重新加载环境变量配置
source ~/.bashrc
🔖 1.1.3 配置服务器编号
- 进入
zookeeper
文件夹之后创建一个名称为zkData的文件夹
的同时服务器编号输入在其中创建的
一个myid
文件中
$ cd zookeeper
$ mkdir zkData
$ cd zkData
$ echo "1" > /usr/local/zookeeper/zkData/myid
🔖 1.1.4 配置 zoo.cfg 文件
- 重命名
/usr/local/zookeeper/conf/zoo_sample.cfg
为zoo.cfg
然后再进行配置
$ cd /usr/local/zookeeper/conf
$ mv ./zoo_sample.cfg ./zoo.cfg
$ vim ./zoo.cfg
- 修改数据存储路径配置
dataDir=/usr/local/zookeeper/zkData
- 在文件末尾追加 集群地址配置
########### cluster ############
server.1=192.168.56.102:2888:3888
server.2=192.168.56.103:2888:3888
server.3=192.168.56.104:2888:3888
📚 配置参数解读:
server.A=B:C:D
-
A
是一个数字,表示这个是第几号服务器,也就是之前配置好的服务器编号。 集群模式下配置一个文件myid
,这个文件在dataDir
目录下,这个文件里面有一个数据就是A的值,Zookeeper 启动时读取此文件
,拿到里面的数据与zoo.cfg
里面的配置信息 比较从而判断到底是哪个server -
B
是这个服务器的地址。 -
C
是这个服务器Follower
与集群中的Leader
服务器交换信息的端口。 -
D
是万一集群中的 Leader 服务器挂了,需要一个端口重新进行选举选出一个新的 Leader ,而这个端口就是用来执行选举时服务器相互通信的端口。
- scp (secure copy) 主机之间文件加密传输
# Master 将 配置好的 zookeeper 文件夹 传输给 Slaver1的centos101用户的用户目录下
$ scp -r /usr/local/zookeeper/ centos101@192.168.56.103:/home/centos101
# Master 将 配置好的 zookeeper 文件夹 传输给 Slaver2的centos102用户的用户目录下
$ scp -r /usr/local/zookeeper/ centos102@192.168.56.104:/home/centos102
- 分别进入
centos1 、centos2
中对/usr/local/zookeeper/zkData/myid
进行服务器编号设置
📑 1.2 集群启动
- 回到 Master 主机上输入下述指令即可,因为之前配置了环境变量可以直接运行,如果没有配置环境变量会导致指令未找到。
# 启动 zookeeper集群
$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 检查是否启动成功
$ zkServer.sh status
而此时的结果却是 Error
Error contacting service. It is probably not running.
📚 注意点:这里为什么会启动失败呢? 原因很简单,在Zookeeper的特点中 —— 集群当中 只要有大于半数以上节点存活 ,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。 而此时我们只启动了一台机器,但是我们一共配置了三台主机,所以此时集群启动失败,无法工作
。
我们只需要将另外一台虚拟机的zookeeper启动就可以了此时zookeeper中的存活节点数量为 2 > 3/2 所以可以正常运行。
$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
如此一来便可以进行工作了。