简介
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,[1] 提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。(概述图片来源:[2] )
来源:百度百科
前言
如果是开发,或者测试之类的,可以直接使用docker,
方便简单,而且还容易部署集群哦
JAVA JDK
http://blog.csdn.net/fenglailea/article/details/26006647
作者:fox.风
安装
http://zookeeper.apache.org/releases.html
http://www.apache.org/dyn/closer.cgi/zookeeper/
推荐 直接安装zookeeper
直接安装zookeeper(无须编译)
下载地址:http://mirror.bit.edu.cn/apache/zookeeper/
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
tar -zxvf zookeeper-3.4.9.tar.gz
mv zookeeper-3.4.9/ /usr/local/zookeeper/
设置全局变量
vim ~/.bash_profile
最后一行加入
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使之生效
source ~/.bash_profile
配置文件位置
/usr/local/zookeeper/conf/zoo.cfg
注意:默认配置文件并没有,直有一个案例文件 zoo_sample.cfg
使用的时候要 自行复制一个
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
编译安装方式
http://blog.csdn.net/fenglailea/article/details/52458737
教程地址
http://www.cnblogs.com/ggjucheng/p/3352591.html
http://www.cnblogs.com/kaye0110/p/5112124.html
配置
集群中任意一台机器上的zoo.cfg文件的内容都是一致的
位置:ZOOKEEPER_HOME目录/conf/zoo.cfg
zoo.cfg
tickTime=2000
dataDir=/var/lib/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
机器配置:server.X=host:port:port(每行写一个)
server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口.
我们需要在数据目录(数据目录就是dataDir参数指定的那个目录)下创建一个myid文件,myid中就是这个X数字
X的范围是1~255
tickTime: Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
InitLimit : 允许 follower (相对于 leader 而言的“客户端”)连接并同步到 leader 的初始化连接时间,它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败。
syncLimit:该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
dataDir: Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
dataLogDir : Zookeeper 保存日志的目录。
clientPort:客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
如果是开发使用(单机模式),把server.x 从配置文件中删除
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
启动
ZOOKEEPER_HOME目录/bin/zkServer.sh start
客户端
ZOOKEEPER_HOME目录/bin/zkCli.sh -server 127.0.0.1:2181
伪集群模式
就是把 zookeeper 目录复制3份,配置文件改改(主要端口和目录,不要冲突了),
最后启动这3个进程
集群模式
zoo.cfg 配置文件一样,myid中内容不一样