Zookeeper 是 Java 编写的,在安装 Zookeeper 之前,先要确保 Java 环境的安装成功。
Zookeeper 官网地址:http://zookeeper.apache.org/
Linux 安装 ZooKeeper
到官网或镜像网站,下载相应的安装包,包名如下:
zookeeper-3.X.X.tar.gz
解压安装包:
tar -zxvf zookeeper-3.X.X.tar.gz
拷贝示例配置:
cp zookeeper-3.X.X/conf/zoo_sample.cfg zookeeper-3.X.X/conf/zoo.cfg
启动 ZooKeeper:
sh zookeeper-3.X.X/bin/zkServer.sh start
ZooKeeper JMX enabled by default Using config: XXXXXX -n Starting zookeeper ... STARTED
客户端脚本连接:
sh zkCli.sh
Connecting to XXX:XXX ................ ................ Welcome to ZooKeeper! ................ ................ WATCHER:: WatchedEvent state:SyncConnected type: None path:null [zk: XXXXXX:XXXX(CONNECTED) 0]
停止 zookeeper 服务:
sh zookeeper-3.X.X/bin/zkServer.sh stop
Mac 安装 ZooKeeper
mac 安装除了上述 linux 下安装的方式外,也可以利用 homebrew 软件管理工具。
利用 brew 命令安装 zookeeper:
brew install zookeeper
安装目录如下:
/usr/local/Cellar/zookeeper/3.X.X
启动 zookeeper 命令:
zkServer start
ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo.cfg Starting zookeeper ... STARTED
zookeeper 连接命令:
zkCli
Connecting to XXXXXX:XXX Welcome to ZooKeeper! JLine support is enabled
停止 zookeeper 命令:
zkServer stop
ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo.cfg Stopping zookeeper ... STOPPED
Windows 安装 ZooKeeper
与 Linux 安装 ZooKeeper 相似,只是相关的命令采用 cmd 命令。
启动 zookeeper,直接双击 zkServer.cmd。
客户端命令行,zkCli.cmd。
ZooKeeper 配置
在设置 ZooKeeper 配置文档的时候,某些参数是可选的,但是某些参数是必须的。这些必须的参数就构成了 ZooKeeper 配置文档的最低配置要求。
最低配置
下面是在最低配置要求中必须配置的参数:
-
clientPort
监听客户端连接的端口。
-
tickTime
心跳单位时间,单位为毫秒。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime。
-
dataDir
存储内存中数据库快照的位置,即数据存放的位置。
值得注意的是,应该谨慎地选择日志存放的位置,使用专用的日志存储设备能够大大地提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会在很大程度上影响系统的性能。
高级配置
下面是高级配置要求中可选的配置参数,用户可以使用下面的参数来更好地规定 ZooKeeper 的行为:
-
dataLogDir
这个操作将管理机器把事务日志写入到“dataLogDir”所指定的目录,而不是“dataDir”所指定的目录。这将允许使用一个专用的日志设备并且帮助我们避免日志和快照之间的竞争。
-
maxClientCnxns
这个操作将限制连接到 ZooKeeper 的客户端的数量,限制并发连接的数量,它通过 IP 来区分不同的客户端。此配置选项可以用来阻止某些类别的 Dos 攻击。将它设置为 0 或者忽略而不进行设置将会取消对并发连接的限制。
-
minSessionTimeout
最小的会话超时时间。最小的会话超时时间默认情况下为 2 倍的 tickTime 时间。
-
maxSessionTimeout
最大的会话超时时间。最大的会话超时时间默认情况下为 20 倍的会话超时时间。
默认会话超时时间,minSessionTimeout 以及 maxSessionTimeout 的值均为 -1;在配置 minSessionTmeout 以及 maxSessionTimeout 的值的时候需要注意,如果将此值设置的太小的话,那么会话很可能刚刚建立便由于超时而不得不退出。一般情况下,不能将此值设置的比 tickTime 的值还小。
集群配置
-
initLimit
此配置表示,允许 follower(相对于 leader 而言的“客户端”)连接并同步到 leader 的初始化连接时间,它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败。
-
syncLimit
此配置表示,leader 与 follower 之间发送消息,请求和应答时间长度。如果 follower 在设置的时间内不能与 leader 进行通信,那么此 follower 将被丢弃。