目录
上一篇已经结束了单台Zookeeper的本地安装(Zookeeper - 本地安装与参数配置)和Hadoop集群的搭建,强烈建议去看一眼里面的xsync,在此篇会大量应用(Hadoop 3.x - 本地安装 & 完全分布式安装 & 集群配置 & xsync分发脚本(解决root用户启动Hadoop集群的报错问题)),这篇咱们来看看Zookeeper的集群安装。这回咱们上了三台服务器来搭建zk的集群:

建议先去看上一篇的本地安装,这样方便与本篇文章一起操作:Zookeeper - 本地安装与参数配置
咱们在之前的本地安装中创建了一个 zkData 目录,咱们进入这个目录进行集群的配置:

创建一个叫 myid 的文件,这个名字是固定的,不要进行更改:
- touch myid
- echo '2' > myid
没错这里只要写一个 2 在里面就可以了。这里可以看眼下面的图,咱们这台服务器叫做 102 所以咱们给这里的文件配置了一个 2 ,以此类推,后面的 103 和 104 就分别为 3 和 4 。这个 myid 是唯一的身份标识,所以不能重复使用。

创建完成后使用 xsync 进行同步分发,没有这个脚本的可以去看下Hadoop 3.x - 本地安装 & 完全分布式安装 & 集群配置 & xsync分发脚本(解决root用户启动Hadoop集群的报错问题)
此篇中有提到过该脚本:
xsync /opt/module/zookpeer-3.5.7/
然后咱们需要立刻去 103 和104 机器中修改myid:


然后回到咱们的 102 机器上继续进行配置:
- cd /opt/module/zookpeer-3.5.7/conf
- vim zoo.cfg
把以下内容复制粘贴到文件的末尾:
- server.2=hadoop102:2888:3888
- server.3=hadoop103:2888:3888
- server.4=hadoop104:2888:3888

这个玩意儿是啥意思呢,咱们来看看
server.2=hadoop102:2888:3888:拿这个来举例,就按颜色来划分:
server.2=hadoop102:2888:3888:表示这是第几号服务器
server.2=hadoop102:2888:3888:服务器地址
server.2=hadoop102:2888:3888:服务器 Follower 与集群中的 Leader 服务器交换信息的端口
server.2=hadoop102:2888:3888:万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口
保存退出后分发一下:
xsync zoo.cfg

在 102 机器中启动zk集群:
cd /opt/module/zookpeer-3.5.7/bin
./zkServer.sh start

查看一下状态:
./zkServer.sh status

很明显集群并没有起来,原因是咱们只启动了一台 102 ,启动的台式少于一半,所以集群启动失败,咱们去 103 和 104 上面都启动一下:
- cd /opt/module/zookpeer-3.5.7/bin
- ./zkServer.sh start
然后咱们看看他们的状态:
./zkServer.sh status
102:follower

103:leader

104:follower

启动成功
102:
vim /opt/module/zookeeper-3.5.7/conf/zoo.cfg
改一下路径位置:

mv /opt/zookpeer /opt/zookeeper
xsync /opt/zookeeper
103 & 104:
rm -rf /opt/zookpeer
最后的最后记得修改一下 myid , 103 :
echo '3' > /opt/module/zookeeper-3.5.7/zkData/myid
104:
echo '4' > /opt/module/zookeeper-3.5.7/zkData/myid
- #!/bin/bash
- case $1 in
- "start"){
- for i in hadoop102 hadoop103 hadoop104
- do
- echo ---------- zookeeper $i 启动 ------------
- ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
- done
- };;
- "stop"){
- for i in hadoop102 hadoop103 hadoop104
- do
- echo ---------- zookeeper $i 停止 ------------
- ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
- done
- };;
- "status"){
- for i in hadoop102 hadoop103 hadoop104
- do
- echo ---------- zookeeper $i 状态 ------------
- ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
- done
- };;
- esac
用一下看看(我这里是加了环境变量,平常按照正常脚本运行即可):
zk.sh start

zk.sh status

zk.sh stop
