1.Zookeeper
1.1Zookeeper介绍
zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Zookeeper的目标就是封装好复杂容易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper包含一个简单的原语集,提供Java和C的接口。
Zookeeoer代码版本中,提供了分布式独享锁,选举、队列的接口,代码在Zookeeper-3.4.3\src\recipes。其中分布式锁和队列有java和C两个版本,选举只有Java版本。
总结:Zookeeper负责服务的协调调度提供了一致性的服务,当客户端发起请求时,返回正确的服务地址。
1.2Zookeeper下载
网址: http://zookeeper.apache.org/releases.html.
如图所示
下载路径,点击download.
如图所示
下载Zookeeper地址.
http://mirrors.hust.edu.cn/apache/zookeeper/
如图所示
1.3Zookeeper安装
1.3.1安装jdk
Zookeeper启动依赖于JDK,所以安装Zookeeper之前先检查是否已安装jdk
将JDK1.8文件上传到Linux操作系统中/src/usr/local/java/文件下.
如图所示
1.解压文件
tar -xvf jdk-8u51-linux-x64.tar.gz
2.配置环境变量
编辑环境变量配置文件
vim /etc/profile
如图所示
使JDK生效之后检查jdk安装是否成功
source /etc/profile
检查jdk是否安装成功
Java -version
如图所示
1.4开始安装Zookeeper
1.4.1上传安装文件
说明:上传Zookeeper安装文件,之后解压
如图所示
解压文件
tar -xvf zookeeper-3.4.8.tar.gz
将解压后的文件改一下名称
mv apache-zookeeper-3.6.0-bin zookeeper
1.4.2修改配置文件
进入Zookeeper目录文件下创建两个文件夹data、log
mkdir data log
如图所示
进入conf目录下修改配置文件
复制配置文件并修改名称
cp zoo_sample.cfg zoo.cfg
进入zoo.cfg文件里修改配置文件
vim zoo.cfg
如图所示
1.4.3启动Zookeeper
跳转到bin目录中 启动/关闭命令如下
启动命令:sh zkServer.sh start 或者 ./zkServer.sh start
关闭命令:sh zkServer.sh stop
查看zookeeper状态:sh zkServer.sh status
如图所示
2.Zookeeper集群的搭建
2.1准备文件夹
在Zookeeper根目录中创建新的文件夹zkCluster
如图所示
进入zkCluster目录下创建3个文件夹zk1、zk2、zk3
mkdir zk1 zk2 zk3
如图所示
在每个文件夹里创建data、log文件夹
mkdir {zk1,zk2,zk3}/{data,log}
如图所示
2.2添加myid文件
分别在zk1/zk2/zk3中的data文件夹中创建新的文件myid,其中的内容一次为1/2/3,与zk节点号对应
如图所示
查看myid文件的内容
如图所示
2.3编辑配置文件
将zoo_sample.cfg复制为zoo1.cfg之后修改配置文件
cp zoo_sample.cfg zoo1.cfg
如图所示
2.4修改zoo1.cfg配置文件
注意:这里的ip地址为虚拟机的ip地址
配置完成后将zoo1.cfg复制2份,分别为zoo2.cfg、zoo3.cfg,之后修改对应的文件夹目录,和不同的端口即可
2.5Zookeeper集群的测试
进入bin目录下,通过下面的命令启动Zookeeper集群
sh zkServer.sh start zoo1.cfg
sh zkServer.sh start zoo2.cfg
sh zkServer.sh start zoo3.cfg
检查主从关系
Zookeeper集群中leader负责监控集群的状态,follower主要负责客户端链接获取服务列表信息,同时当主机宕机后参与投票
3.搭建Zookeeper集群的规则
规则:剩余存活节点的数量>N/2 N代表节点总体数
计算:
1个节点 1-1>1/2 假的 1个节点不能搭建集群
2个节点 2-1>2/2 假的 2个节点不能搭建集群
3个节点 3-1>3/2 真的 3个节点可以搭建集群 故:集群的最小的单位为3台
4个节点 4-1>4/2 真的 4个节点可以搭建集群
4.为什么集群一般都是奇数台
从容灾性/经济性的角度考虑问题
奇数3台 3-1>3/2 宕机一台后集群仍可以正常工作
3-2>3/2 宕机2台后集群就崩溃了
偶数4台 4-1>4/2 宕机1台后集群仍可以正常工作
4-2>4/2 宕机2台后集群崩溃
答案:发现奇数台和偶数台的容灾性是相同的,但是从经济性角度上来说,奇数台更花的钱更少,s所以搭建奇数台更好
5.Zookeeper集群选举规则
规则:myid最大值优先,只讨论一轮
考题:
编号1,2,3,4,5,6,7依次启动,谁当主机?谁永远当不了主机?
分析:
1.根据Zookeeper集群的搭建规则 剩余存活节点数>N/2,要大于7/2,存活的数量必须大于大于4,所以至少启动4台才可以搭建集群,所以4当主机,如果7台都启动了,假如4宕机掉了,则选举出5当主机,5宕机了选举6当主机,6宕机了选举7当主机。
2.所以1,2,3永远都当不了主机