Zookeeper是Hadoop下的一个子项目,它是一个针对大型分布式系统的可靠的协调系统,提供的功能包括配置维护,名字服务,分布式同步,组服务等,Zookeeper是能够集群复制的,集群间经过Zab(Zookeeper Atomic Broadcast)协议来保存数据的一致性。该协议看起来是Paxos协议的某种变形,该协议包括两个阶段:leader election阶段和Atomic broadcas阶段。集群中选举出一个leader,其它的机器则称为follwer。当leader崩溃或者leader失去大多数的follower时,须要从新选举出一个新的leader,让全部的服务器恢复到一个正确的状态,当leader被选举出来,且大多数服务器完成了和leader的状态同步后,leader election的过程就结束了,将进入Atomic broadcas的过程。html
Zookeeper的核心其实相似一个精简的文件系统,提供一些简单的操做和一些附加的抽象(例如znode的排序与watch,而且集群的部署方式使其具备较高的可靠性),Zookeeper的协做过程简化了松散耦合系统之间的交互,即便参与者彼此不自动对方的存在,页你呢挂钩相互发现而且完成交互。java
(1)安装JDKnode
因为Zookeeper是基于Java开发的linux
下载jre-7u79-linux-x64-rpm 下载地址apache
安装过程参考:https://blog.csdn.net/abselute/article/details/70039204?locationNum=8&fps=1vim
(2)下载zookeeper-3.4.5.tar.gz 下载地址centos
整个安装过程参考:http://www.javashuo.com/article/p-edhqealk-ba.html服务器
(3)建立配置文件及配置说明oracle
我我的习惯将Zookeeper安装在/usr/local目录下ssh
cd /usr/local/zookeeper-3.4.5/conf
mv zoo_sample.cpg zoo_cfg
vim zoo_cfg
tickTime=2000 #Zookeeper服务器心跳时间,单位为ms initLimit=10 #投票选举新Leader的初始化时间 syncLimit=5 #leader与follower心跳检测最大容忍时间,相应超过syncLimit*tickTime,leader认为follwer死掉,从服务器列表中删除 clientPor=2181 dataDir=/usr/local/zookeeper-3.4.5/data dataLogDir=/usr/local/zookeeper-3.4.5/log
(4)配置myid
echo 1 > data/myid
cat data/myid
(5)启动ZooKeeper
cd /usr/local/zookeeper-3.4.5/bin
./zkServer.sh start
(6)总结配置过程当中的种种问题
初次配置测试,遇到了不少问题,总结下须要特别注意的点:
A. 关闭防火墙(必定必定),否则会遇到没法连接主机的系列问题
解决rhel7防御墙关闭问题: rhel7或centos7或Fedora中防火墙由firewalld来管理,能够还原传统的管理方式: systemctl stop firewalld systemctl mask firewalld yum install iptables-services systemctl stop iptables systemctl enable iptables
B. 设置数据目录data时须要生成myid文件,并写入id,该id对应zoo_cfg中的server.id,必须一一对应,server.id=ip:port:port仔细仔细再仔细
C. 注意查看zookeeper/bin目录下的日志文件zookeeper.out,会帮助咱们肯定问题所在
d. 实现ssh远程控制,参考以前的博客:http://www.javashuo.com/article/p-ncbhyvhw-ct.html
e.配置脚本,同时启动多台服务器
f. 每台服务器的系统时间必须同样
(1)连接测试
(2)同步测试:建立节点和获取节点值
服务器192.168.1.20同步测试
更详细测试请参考:https://blog.csdn.net/fenglongmiao/article/details/79269772
(1)http://www.cnblogs.com/wuxl360/p/5817471.html#3950934
(2)http://snowolf.iteye.com/blog/2156019
(3)http://www.javashuo.com/article/p-edhqealk-ba.html
(4)https://i.cnblogs.com/EditPosts.aspx?postid=9365296&update=1