目录
一、配置参数
二、启动集群
三、丢脸的至暗时刻
咱们来把一直是错的目录名字改一下。。。
四、Shell脚本一键启动、关闭集群
上一篇已经结束了单台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