一:在安装zookeeper之前有必要了解以下zookeeper
1.zookeeper可以看出是一个辅助性的框架
2.zookeeper也可以看成是一个数据库,它是树形结构,没有文件夹和文件的概念,但是每个节点又有文件和文件夹的特性,即可以存储数据又可以像文件夹一样有子节点,每个节点都可以存储数据,但是很小,只有1M,主要是用来存储的是元数据.
3.zookeeper的一些应用场景
1.数据的发布和订阅,根据主动还是被动的输出数据可以分为推模式和拉模式
2.命名服务
3.分布式协调/通知(心跳检测/工作进度汇报/系统调度)
4.分布式锁(写锁/读锁)
5.分布式队列(队列一般使用kafka来做)
4.zookeeper的架构
1.主要有leader和follower角色
2.leader主要是管理,而且只有leader才能完成事务性的增删改操作
3.follower主要是工作,follower只能做非事务性的查询操作
5.zookeeper的选举机制
1.在服务器开启的时候进行的选举
选举主要是根据myid和ZXID的值进行比较
myid可以人为设定,值越大该服务器的投票占比(胜率)就越大
ZXID代表事务更新状态,值越大代表该服务器的事务越新,其投票的胜率越高
2.当leader宕机的时候进行的选举
机制和上面一样
二:安装步骤
1.安装前准备
1.虚拟机和服务器的安装
2.linux集群的搭建,奇数台服务器即可,一些免密登陆,时间同步等
2.下载zookeeper安装包
网址:http://archive.apache.org/dist/zookeeper/
3.上传至服务器,解压
4.进入安装目录中的 zookeeper-3.4.9/conf/目录(以自己的版本为准)
5.找到zoo_sample.cfg,复制一份顺便把名字更改为zoo.cfg
6.在zookeeper-3.4.9目录下创建一个文件夹,名字随便,主要是待会用来存放myid的值的文件,我的是zkdatas
7.进入文件zoo.cfg,按i进入编辑状态,修改配置
8.在zookeeper-3.4.9/zkdatas/文件夹下创建一个文件myid,在文件中写入1,因为我的myid值设置就是1
9.分发安装包到其他服务器(一定把myid的文件放在zookeeper安装目录下,这样拷贝到其他服务七就无需再创建,只需要更改即可)
远程拷贝命令scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
如果在servers目录下拷贝可以使用$PWD替换/export/servers/
10.把其他服务器的myid文件中的myid的值更改为之前设置的值
11.启动zookerper服务
/export/servers/zookeeper-3.4.9/bin/zkServer.sh start
12…查看状态,是leader还是follower
/export/servers/zookeeper-3.4.9/bin/zkServer.sh status
13.设置一键启动
#创建启动脚本:startZK.sh
cd /export/servers/zk/ ##在某一台即可
vi startZK.sh
i
#脚本文件如下:
#!/bin/sh
echo “启动zookeeper中…”
for host in node01 node02 node03
do
ssh -q $host “source /etc/profile; /export/servers/zookeeper-3.4.9/bin/zkServer.sh start”
done
echo “启动完成…”
14.设置一键关闭
#关闭脚本: shutdownZK.sh
cd /export/servers/zk/
vi shutdownZK.sh
i
#脚本文件如下:
#!/bin/sh
echo “关闭zookeeper中…”
for host in node01 node02 node03
do
ssh -q $host “source /etc/profile; /export/servers/zookeeper-3.4.9/bin/zkServer.sh stop”
done
echo " zookeeper已关闭…"