说明
从《Disconf实现分布式配置管理的原理与设计》我们了解到,搭建部署我们自己的分布式disconf配置中心需要分布式应用程序协调服务Zookeeper的支持,下面我们就来部署我们的Zookeeper集群服务
认识Zookeeper
在我们动手部署前,我们先来感性的认识一下Zookeeper,百度百科对Zookeeper的描述如下:
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,1 提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3srcrecipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
准备(当然你只是自己尝试的话一台机器也是可以的)
这里以三台ubuntu机器为例搭建一个最小的集群环境,三台服务器或者三台虚拟机均可。安装Ubuntu server的过程略,可以去http://releases.ubuntu.com/precise/下载。
第一步:服务器配置
三台Ubuntu server准备好之后,假设它们的IP地址分别为192.168.0.11,192.168.0.12和192.168.0.13. 将它们的host分别命名为zkp1,zkp2和zkp3。
Zookeeper是用java开发的,所以这里还需要jdk环境,Ubuntu下安装Oracle JDK的可以参考这篇博文http://www.linuxidc.com/Linux/2014-11/109216.htm。
第二步:下载Zookeeper.
到Zookeeper官网去下载最新版本的安装包
第三步:安装Zookeeper
注:先在第一台服务器server1上分别执行(1)-(3)步。
(1)解压:这里假定以dennis作为用户名进行安装,将zookeeper-3.4.5.tar.gz放入/home/dennis目录下,然后执行”tar zxf zookeeper-3.4.5.tar.gz”解压。
(2)配置:将conf/zoo_sample.cfg拷贝一份命名为zoo.cfg,也放在conf目录下。然后按照如下值修改其中的配置:
#zookeeper中使用的基本时间单位, 毫秒值.
tickTime=2000
#数据目录. 可以是任意目录
dataDir=/var/lib/zookeeper/
#集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍
initLimit=5
#该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms
syncLimit=2
#监听client连接的端口号.
clientPort=2181
#server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口.
server.1=zkp1:2888:3888
server.2=zkp2:2888:3888
server.3=zkp3:2888:3888
(3)创建/var/lib/zookeeper快照目录,并创建server id文件。
$sudo mkdir /var/lib/zookeeper
$ cd /var/lib/zookeeper
在该目录下创建名为myid的文件,内容为1(这个值随server而改变,后面会提到)。
(4)将server1上已经配置好的/home/dennis/zookeeper-3.4.5/和/var/lib/zookeeper两个目录分别拷贝至server2和server3。然后将其上的/var/lib/zookeeper/myid的内容修改为2和3.
第四步:启动Zookeeper
一次启动三台服务器,进入Zookeeper-3.4.5目录下,执行如下启动命令:
$sudo java-cp zookeeper-3.4.5.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conforg.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg
也可以到每台zookeeper server的目录下,执行:
启动 ./bin/zkServer.sh start
关闭 ./bin/zkServer.sh start
注:启动第一台的时候可能会报错,提示zoo2和zoo3,等全部启动完成之后就不会报错了。
到这里我们的Zookeeper集群环境就已经配置搭建好了,也就完成了Disconf服务搭建的其中一个环境依赖,其实除了需要Zookeeper提供支持外还需要如下依赖:
1.Mysql(Ver 14.12 Distrib 5.0.45, for unknown-linux-gnu (x86_64) using EditLine wrapper)
2.Tomcat(apache-tomcat-7.0.50)
3.Nginx(nginx/1.5.3)
4. Redis (2.4.5)