1 Zookeeper
1.1 Zookeeper介绍
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
总结:Zookeeper负责服务的协调调度.当客户端发起请求时,返回正确的服务器地址。
1.2 Zookeeper下载
地址:http://zookeeper.apache.org/releases.html
1.3 Zookeeper安装
1.3.1 安装JDK
1.3.2 安装zookeeper
(1)上传zookeeper安装文件
(2)解压
tar -xvf zookeeper-3.4.8.tar.gz
1.3.3 修改配置文件
(1)在zookeeper根目录下创建文件夹
mkdir data log
(2)进入conf目录中修改配置文件,复制配置文件并且修改名称
cp zoo_sample.cfg zoo.cfg
(3)启动ZK
跳转到bin目录中,启动关闭目录如下:
sh zkServer.sh start 或者 ./zkServer.sh start
sh zkServer.sh stop
sh zkServer.sh status
1.4 Zookeeper集群安装
1.4.1 准备文件夹
(1)在zookeeper根目录中创建新的文件夹zkCluster
mkdir zkClusters
(2)创建zk1/zk2/zk3文件夹
mkdir zk1 zk2 zk3
(3)在每个文件夹里创建data/log文件夹
mkdir {zk1,zk2,zk3}/{data,log}
1.4.2 添加myid文件
(1)分别在zk1/zk2/zk3中的data文件夹中创建新的文件myid.其中的内容依次为1/2/3,与zk节点号对应。
(2)编辑myid文件,定义编号
1.4.3 编辑配置文件
(1)将zoo_sample.cfg 复制为zoo1.cfg之后修改配置文件
(2)修改zoo1.cfg
配置完成后将zoo1.cfg复制2份.之后需要修改对应的文件夹目录.和不同的端口即可。
1.4.4 zk集群测试
(1)通过下面的命令启动zk集群
sh zkServer.sh start zoo1.cfg
sh zkServer.sh stop zoo1.cfg
sh zkServer.sh status zoo1.cfg
(2)检查主从关系
follower表示从
leader表示主
(3)Zookeeper集群中leader负责监控集群状态,follower主要负责客户端链接获取服务列表信息.同时参与投票。
1.5 为什么集群一般都是奇数个?
公式:存活的节点 > N/2
常识:最小的集群的单位3台
例子:
1个节点能否搭建集群? 1-1 > 1/2 假的 1个节点不能搭建集群
2个节点能否搭建集群? 2-1 > 2/2 假的 2个节点不能搭建集群
3个节点能否搭建集群? 3-1 > 3/2 真的 3个节点能搭建集群
4个节点能否搭建集群? 4-1 > 4/2 真的 4个节点能搭建集群
3个节点最多允许宕机1台,否则集群崩溃.
4个节点最多允许宕机1台,否则集群崩溃.
搭建奇数台和偶数台其实都可以,但是从容灾性的角度考虑,发现奇数和偶数的效果相同,所以搭建奇数台。
1.6 ZK集群选举规则
zk集群选举采用最大值(myid)优先的算法实现,如果集群中没有主机,则开始选举(超半数即可),如果有主机,则选举结束。
(1)1 2 3 4 5 6 7 依次启动时
问题1:谁当主机?
答:4当主机
问题2:谁永远不能当选主机?
答: 1,2,3