安装注意事项
单节点安装
1、zk是解压式安装,唯一需要注意的是安装路径中不能存在空格,存在空格启动会失败。
2、${zk_home}/conf/zoo.cfg最小配置
tickTime=2000 --系统时钟,单位:毫秒
dataDir=D:\\tech-lab\\zookeeper\\apache-zookeeper-3.5.5\\data --数据存放位置
clientPort=2181 --客户端监听口号
initLimit=20 --表示用于在从节点和主节点之间建立初始化连接的时间上限
syncLimit=5 --表示允许从节点与主节点处于不同步状态的时间上限
集群安装
1、 ${zk_home}/conf/zoo.cfg最小配置
tickTime=2000 --系统时钟,单位:毫秒
dataDir=D:\\tech-lab\\zookeeper\\apache-zookeeper-3.5.5\\data --数据存放位置
clientPort=2181 --客户端监听口号
initLimit=5 ---
syncLimit=2
server.1=zoo1:2888:3888 ----host:port:port 主机地址:本地节点通信端口:集群节点通信端口
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
2、每个节点的dataDir目录下新建myid文件,文件不带任何后缀,文件内容为节点id,譬如1,2,3等等。
3、伪集群,即在同一台机器搭建zk集群,配置的集群列表的端口需要注意。
server.2=localhost:2889:3889
server.1=localhost:2888:3888
server.3=localhost:2890:3890
Zookeeper的部署设计
1、跨机器需求
内网,网速,2*F+1机器数。F=可接受的fail机器数。机器故障独立,即机房机器的硬件或者环境导致的机器宕机。
2、 单机需求
独占存储访问
内存不发生交换,为zk提供足够的内存。设置zk使用java的最大堆大小,避免内存切换。切换严重影响zk性能。zk脚本中,window系统使用默认jre的内存配置,Linux版本提供了${zk_home}/bin/zkEvn.sh设置最大堆大小。内存大小的设置根据项目具体使用情况的压测结果设定,设定的最大内存一般保守设置不超过系统内存的0.75。最好提供最大配比的机器,保持zk系统最优。一般jvm的配置设置单独的配置文件java.evn,在其中配置JDK路径以及堆内存的使用。
3、在生产环境建议zookeeper机器不能少于三个节点,最好不要超过七个节点。如果节点少于三个,此时维护配置文件时,节点重启,集群就不得不暂时停用。因为zookeeper使用一致性协议,节点过多会降低整个群组的性能。
The Four Letter Words四字命令
Zookeeper3.5.3以后,使用AdminServer响应四字命令,AdminServer是基于Jetty的一个web服务,访问地址:http://localhost:8080/commands。 默认情况下AdminServer是开启的,访问端口默认是8080,如果不修改配置,集群的zookeeper只有一个节点不会报8080端口绑定异常。可以通过zookeeper.admin.enableServer=false配置禁用AdminServer。
Zookeeper的Windows版本和Linux版本的启动脚本zkServer的内容不一样,Linux版启动的功能比较全面,Window版启动的比较简单,Windows版默认是不启动四字命令的监听,四字命令监听对应的启动类为FourLetterWordMain.java。该监听可以通过Telnet或nc命令访问。
所以Zookeeper3.5.3以后,默认情况下,Linux版会同时启动两种方式的四字监听程序。Windows版只启动AdminServer。
关于四字命令参见官方说明文档,不同版本的zookeeper,有不同的四字命令。
四字命令的目的是能让我们了解zookeeper的配置情况以及zookeeper运行过程中的一些关键信息,为运行中的问题提供一些帮助信息。
Zookeeper配置文件的配置项
zookeeper的配置项,分为三部分,最小配置,高级配置和集群配置。zookeeper为其中的一些配置项提供了对应的系统配置参数,可以通过系统参数配置来配置。
最小配置是运行zookeeper的最低配置。
高级配置一般用于zookeeper的性能调优。
集群配置只能应用于集群,单机不能配置这些选项。
Zookeeper的优势和局限性
Zookeeper集群的维护(少量但长期需要的维护)
1、日志文件的清理,可以定义日志策略。
2、快照文件和事务性文件的清理,zk现在支持自动清理。
3、zk的监视,down机处理策略,自动重启,打印宕机堆栈信息。
由于文件损坏导致的服务不能启动
如果集群中有机器由于数据文件损坏(加载数据文件报IOException)不能启动,检查其他节点能否正常工作,如果能则清除故障机器的数据文件(datadir/datalogdir),然后重启。
影响zk性能的配置项
1、dataDir
2、