需求
有三台虚拟机分别为Cloud10、Cloud11、Cloud12,将这三台机器搭建成zookeeper的分布式集群。
步骤(注意配置前应该关闭防火墙)
关闭防火墙操作,可以参考文章"如何在linux下安装jdk和hadoop"
1.解压安装、重命名
分别对三台机器解压 Zookeeper 安装包到/software/目录下
解压 :tar -zxvf zookeeper-3.4.10.tar.gz
删除压缩包:rm -fr zookeeper-3.4.10.tar.gz
重名名:mv zookeeper-3.4.10 zookeeper
2.配置服务器编号
(1)在/software/zookeeper/这个目录下创建 zkData
mkdir -p zkData
(2)在/software/zookeeper/zkData 目录下创建一个 myid 的文件
touch myid
(3)编辑 myid 文件
vim myid
在文件中添加与 server 对应的编号: 1
(4)远程拷贝配置好的 zkData到其他俩台机器上
scp -r zkData hduser@Cloud11:~/software/zookeeper
scp -r zkData hduser@Cloud12:~/software/zookeeper
并分别在 Cloud11、Cloud12 上修改 myid 文件中内容为 2、3
3.配置 zoo.cfg 文件
(1)重命名/software/zookeeper/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg
cp zoo_sample.cfg zoo.cfg
(2)编辑zoo.cfg 文件
vim zoo.cfg
- 修改数据存储路径配置
dataDir=/home/hduser/software/zookeeper/zkData
- 增加如下配置
server.1=cloud10:2888:3888
server.2=cloud11:2888:3888
server.3=cloud12:2888:3888
(3)远程拷贝zoo.cfg 配置文件到另两台机器
scp zoo.cfg hduser@Cloud11:~/software/zookeeper/conf
scp zoo.cfg hduser@Cloud12:~/software/zookeeper/conf
集群操作
以下命令可以测试是否安装成功
(1)启动 Zookeeper bin/zkServer.sh start
(2)查看状态: bin/zkServer.sh status
(3)启动客户端:bin/zkCli.sh
(4)查看启动的进程 jps
(5)退出客户端: quit
(6)停止 Zookeeper bin/zkServer.sh stop
zoo.cfg文件里的参数配置解读
server.A=B:C:D。
A 是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件 myid,这个文件里面有一个数据就是 A 值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
B 是这个服务器的 ip 地址;
C 是这个服务器与集群中的 Leader 服务器交换信息的端口;
D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
如果你在搭建集群遇到问题,可以参考下面的文章