Zookeeper作为分布式协调框架,在很多中间件中都有使用,像Kafka、Hadoop等。

集群环境搭建

Java版本:1.8.0_11。因机器有限,搭建一个伪集群环境,即在一台PC机上部署3个应用,实际上原理类似。

(1)新建目录zookeeper。在zookeeper目录下新建3个目录,分别命名为:server1、server2、server3。如下图所示:




zookeeper 搭建mysql 集群 zookeeper集群环境搭建_zookeeper集群


(2)在server1、server2、server3的每个目录里面解压一个zookeeper压缩包,增加data、logs目录。目录结构如下图所示(server1、server2、server3都是一样的结构)。注意:一定要使用干净的压缩文件解压出3份,防止数据污染。


zookeeper 搭建mysql 集群 zookeeper集群环境搭建_数据_02


(3)进入data目录,创建一个myid的文件,里面写入一个数字,比如server1就写入1,server2就写入2,server3就写入3。

(4)进入zookeeper-3.4.6conf目录,在这个目录下创建一个zoo.cfg的配置文件,把zoo_sample.cfg文件的内容复制进去,当然你可以把zoo_sample.cfg文件改成zoo.cfg(但最好不要),zoo.cfg配置文件的内容如下所示:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=G:/download/zookeeper/server1/data

dataLogDir=G:/download/zookeeper/server1/logs

clientPort=2181

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

注意上面zoo.cfg文件中标红的内容,dataDir和dataLogDir是数据和日志目录,需要设置成自己的目录,每个server的路径不能相同,比如server1是..../server1/data,server2是..../server2/data;如果你是在1台机器上部署多个server,那么每个server都要不同的clientPort,比如我server1是2181,server2是2182,server3是2183。最后三行每个server保持一致就行,server.{数字}这个{数字}就是对应 data/myid文件中的数字。因为部署在同一台机器上,IP后面连着的2个端口,3个server都不能一样,否则端口冲突,第一个端口用于集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。

Zookeeper启动

启动3个命令提示符(cmd),将每个server下面的zkServer.cmd拖进命令提示符中(每个server对应一个命令提示符),然后回车启动server。如果不再报错,说明集群启动成功并且已经稳定。


zookeeper 搭建mysql 集群 zookeeper集群环境搭建_命令提示符_03


集群验证

Zookeeper启动成功后,通过双击zookeeper-3.4.6bin文件夹的 zkCli.cmd文件验证集群是否正常。比如创建节点“create /test helloworld”,查看节点“get /test”。连接到组群中其它ZkServer,节点数据应该是一致的。更多指令请使用help命令查看。


zookeeper 搭建mysql 集群 zookeeper集群环境搭建_命令提示符_04