zookeeper是hadoop大家族的一个成员,是Apache的一个产品。我使用到zookeeper的主要原因是:Zookeeper作为Dubbo服务的注册中心,能与dubbo做到集群部署。当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求。
关于zookeeper的介绍和原理
http://blog.csdn.net/guchuanyun111/article/details/52091318
https://holynull.gitbooks.io/zookeeper/content/
下载
http://apache.fayea.com/zookeeper/可以直接下载想要的zookeeper版本。
单机部署
下载解压好zookeeper之后,需要在conf文件夹中创建zoo.cfg文件,然后设置相关的参数
zoo.cfg参数配置
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/Users/vobile_lzl/Documents/zookeeper-3.3.6/data/
# the directory where the logs is stored.
dataLogDir=/Users/vobile_lzl/Documents/zookeeper-3.3.6/logs/
# the port at which the clients will connect
clientPort=2181
dataDir 文件属于自定义文件,由自己来创建
dataDirLog 类似
启动与关闭
后台运行
./bin/zkServer.sh start
非后台运行
bin/zkServer.sh start-foreground验证
telnet 127.0.0.1 2181停止
./bin/zkServer.sh stop
伪分布式集群部署
在一台机器上模拟zookeeper监听3个端口的实例。
这里需要配置3个zoo*.cfg文件,
每个zoo*.cfg文件分别指定不同的dataDir,并在dataDir文件中创建myid文件。
假定已经创建好data_1、data_2、data_3和log_1、log_2、log_3
创建myid
echo "1" > data/data_1/myid
echo "2" > data/data_2/myid
echo "3" > data/data_3/myid
创建并编辑zoo*.cfg
其余的文件与zoo1.cfg类似,只是dataDir和dataDirLog需要设置相应的路径
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/Users/vobile_lzl/Documents/zookeeper-3.3.6/data/data_1
# the directory where the logs is stored.
dataLogDir=/Users/vobile_lzl/Documents/zookeeper-3.3.6/logs/log_1
# the port at which the clients will connect
clientPort=2181
server.1=127.0.0.1:2222:2225
server.2=127.0.0.1:3333:3335
server.3=127.0.0.1:4444:4445
关于配置文件的详情可以参考
https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html
启动zookeeper集群
依次启动服务端
./bin/zkServer.sh start conf/zoo1.cfg
./bin/zkServer.sh start conf/zoo2.cfg
./bin/zkServer.sh start conf/zoo3.cfg
依次启动客户端
bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
验证端口
jps
2752 QuorumPeerMain
3712 Launcher
546
3752 Jps
2954 QuorumPeerMain
2764 QuorumPeerMain
3294 RemoteMavenServer
到此为止zookeeper的安装和部署顺利结束。目前只是初步了解zookeeper的这些内容,还有它与bubbo之间的结合。
主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理,