Zookeeper 集群配置

单机模式

一般在开发或者测试环境时使用,生产环境需要考虑高可用

伪集群

在同一台主机上,运行多个Zookeeper实例,即:使用不同的端口来启动服务一般在开发或测试环境时使用,Clinet需要链接到不同的端口
想法1:
下载一个Server,然后使用 --config 来指定不同的配置文件目录,来启动集群,但包里面的Shell文件中,使用的zkEnv.sh定义的日志文件目录,好像不支持使用启动参数的配置,如果要实现这个的话,需要复制多个Server或者修改Shell

真集群

使用真实的物理机子来部署每台Zookeeper 服务

本文基于学习目的,使用伪集群方式来搭建:

JDK的下载与安装【略】

https://www.oracle.com/technetwork/java/javase/downloads/index.html

Zookeeper 下载与解压

http://zookeeper.apache.org/releases.html#download

下载包特别说明:

下载3.5.5 版本的时候,如果直接启动,会在日志输出文件中报错:

[root@localhost zookeeper1]# cat logs/zookeeper-root-server-localhost.localdomain.out
错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain

解决:

这里有两个包,而且是有区别的两个包
关于那两个包的说明,官方解释如图
apache-zookeeper-xxx.tar.gz 这样的包是纯源码包,不能直接运行的
apache-zookeeper-xxx-bin.tar.gz 这个包,才包含了可以直接运行的Jar包
解包后如下:
包中可能没有 zookeeper-3.4.14.jar 包,就应该是下错包了!

由于我们使用的是Zookeeper自带的 zkServer.sh 来启动服务,且它里面已经写死了配置文件名,所有需要复制一份配置文件,操作如下:

cp ./conf/zoo_sample.cfg ./conf/zoo.cfg

zoo.cfg 名字必需是这个,原因如上!

修改配置如下:

三台机子配置图
 tickTime=2000 
initLimit=10
syncLimit=5
# 保存内存快照的数据目录,不要放在 /tmp 下,因为可能会被清除
dataDir=/data/server/zookeeper/data
# 客户端链接的端口,由于在同一台机子上,需要不同的端口
clientPort=2181
# 好像没啥用
dataLogDir=/data/server/zookeeper/logs
# ZNode 的信息,有多少个Server就配置多少个
# server.ID = IP:原子广播端口:选举端口
server.1=192.168.100.101:2881:3881
server.2=192.168.100.101:2882:3882
server.3=192.168.100.101:2883:3883

server.id 是保存在 dataDir 目录的 myid 文件中,有且只有一行

此ID还有相应的限制,数值在1~255之间,如果启用了TTL 节点则限制在 1~254之间,官方文档,如下:

The myid file consists of a single line containing only the text of that machine's id. So myid of server 1 would contain the text "1" and nothing else. The id must be unique within the ensemble and should have a value between 1 and 255. IMPORTANT: if you enable extended features such as TTL Nodes (see below) the id must be between 1 and 254 due to internal limitations.

Zookeeper服务操作命令:启动、停止、重启、状态

./bin/zkServer.sh [start | stop | restart | status]

根据以上命令依次启动服务,启动时,会在目录下生成相应的日志输出文件【zookeeper.out】里面有相应的信息,在启动出错或者无法成功组成集群时查看,最后查看状态,结果如下:

图中可知,server2为Leader,其它为Follower

官方参考文档:

http://zookeeper.apache.org/doc/r3.4.14/zookeeperAdmin.html#sc_zkMulitServerSetup