搭建zookeeper集群

0.准备工作

  • Centos7
  • Hadoop完全分布式
  • 三个环境
    • master
    • slave1
    • slave2
  • zookeeper组件

1.安装组件

先将组件传入至平台中

scp zookeeper-3.4.1.tar.gz root@master:~/

解压组件压缩包

tar -zxvf zookeeper-3.4.1.tar.gz

更改文件夹名称

mv zookeeper-3.4.1 zookeeper

2.修改zookeeper配置文件

进入zookeeper目录并创建zkData文件夹

cd zookeeper
mkdir zkData

zkData文件夹下创建一个 myid 的文件

vi myid

文件内容写入:myid文件写的是你的主机序号,自行定义,==注意只是数字,不要有多余的空格和空行==

  • master的序号为:2
  • slave1的序号为:3
  • slave2的序号为:4

分发zookeeper过去的时候需要修改为对应的 myid 的序号

2

进入到zookeeper配置文件目录

cd conf

zoo_sample.cfg 更名为 zoo.cfg

mv zoo_sample.cfg zoo.cfg

修改 zoo.cfg 文件内容 将dataDir的内容更改为你的zkData路径

dataDir=/root/zookeeper/zkData

再将zoo.cfg中尾部添加以下内容:

server.2=master:2888:3888
server.3=slave1:2888:3888
server.4=slave2:2888:3888

配置参数说明

server.A=B:C:D

A 是数字,就是主机的序号,在 myid 中的主机序号

B 是主机节点IP,如果在 /etc/hosts 中配置了可以直接写对应的主机名

C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口

D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的

Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

zookeeper组件同步到另外的节点主机上

scp zookeeper root@slave1:~/
scp zookeeper root@slave2:~/

3.启动zookeeper集群组件

需要分别在每台主机中启动,如果需要一键启动需要编写脚本

==启动主机前请把每台主机的防火墙关闭!==

systemctl stop firewalld

启动主机的顺序是:masterslave1slave2

[root@master zookeeper]# bin/zkServer.sh start
[root@slave1 zookeeper]# bin/zkServer.sh start
[root@slave2 zookeeper]# bin/zkServer.sh start

然后查看主机的状态

[root@master zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/zookeeper/bin/../conf/zoo.cfg
Mode: follower

[root@slave1 zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/zookeeper/bin/../conf/zoo.cfg
Mode: leader

[root@slave2 zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/zookeeper/bin/../conf/zoo.cfg
Mode: follower

4.编写群起脚本

vi zk.sh

zk.sh 中输入以下内容:

#!/bin/bash
case $1 in
"start"){
for i in master slave1 slave2
do
 echo ---------- zookeeper $i 启动 ------------
ssh $i "/root/zookeeper/bin/zkServer.sh 
start"
done
};;
"stop"){
for i in hadoop102 hadoop103 hadoop104
do
 echo ---------- zookeeper $i 停止 ------------ 
ssh $i "/root/zookeeper/bin/zkServer.sh  
stop"
done
};;
"status"){
for i in hadoop102 hadoop103 hadoop104
do
 echo ---------- zookeeper $i 状态 ------------ 
ssh $i "/root/zookeeper/bin/zkServer.sh  
status"
done
};;
esac
上一篇 下一篇