Required Software
1) JDK>=1.6
2)推荐使用ensemble的ZooKeeper(至少3台),并run on separate machines
3)在Yahoo!,zk配置在特定的RHEL boxes里,2个cpu,2G内存,80G硬盘
数据和日志目录
1)数据目录里的文件是zk节点的持久化备份,包括快照和事务日志文件。zk节点上的变动都会追加到事务日志文件。当日志增长到足够大的时候,zk会生成一个当前所有节点的快照文件。这个快照文件覆盖了之前所有事务日志。
2) Data Directory包括2种文件:1)myid :一个可识别的整数,代表zk的id;2)snapshot.<zxid> - holds the fuzzy snapshot of a data tree.快照文件的后缀zxid:zk的事务id,在快照开始时的最后一次提交的事务。
3) 日志目录Log Directory:保存zk事务日志文件。在zk的任务变更发生前,zk前保证这次变更的事务日志已经写入到非易失性存储上。每个快照开始时重新创建一个新的日志文件。日志文件的后缀是该日志文件中的一个事务的zxid。
4)zk默认不会删除旧的快照和事务日志(配置参数autopurge)。 PurgeTxnLog工具实现了一个简单的retention policy 。例子:保留最近几个快照及其对应日志,删除其他。建议保留至少3个(this provides 3 backups in the unlikely event a recent log has become corrupted). 命令:可以使用cron任务每天执行
java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf org.apache.zookeeper.server.PurgeTxnLog <dataDir> <snapDir> -n <count>
3.4.0版本后支持自动清除快照和对应日志,配置参数autopurge.snapRetainCount和autopurge.purgeInterval.
Troubleshooting
Server not coming up because of file corruption
A server might not be able to read its database and fail to come up because of some file corruption in the transaction logs of the ZooKeeper server. You will see some IOException on loading ZooKeeper database. In such a case, make sure all the other servers in your ensemble are up and working. Use "stat" command on the command port to see if they are in good health. After you have verified that all the other servers of the ensemble are up, you can go ahead and clean the database of the corrupt server. Delete all the files in datadir/version-2 and datalogdir/version-2/. Restart the server.
注释内容参考其他博客,忘记出处,不妥告删
# ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime。
tickTime=2000
# Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在initLimit时间内完成这个工作。
#如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。(No Java system property
initLimit=10
# 在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。
#如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。
#注意:不要把这个参数设置得过大,否则可能会掩盖一些问题。(No Java system property)
syncLimit=5
# 存储快照文件内存数据库的snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。
dataDir=c:/temp/zookeeper/2181
#事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能。
dataLogDir=c:/temp/zookeeper/2181
# 客户端连接server的端口,即对外服务端口
clientPort=2181
#单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。
#请注意这个限制的使用范围,仅仅是单台客户端机器与单台ZK服务器之间的连接数限制,
#不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的连接数限制。
maxClientCnxns=0
# server.A = B:C:D
# A表示这个是第几号服务器,并在dataDir路径下新建一个文件myid,里面写A
# B 是这个服务器的 ip 地址;
#C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
#D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader
#server.1=127.0.0.1:28881:38881
#server.2=127.0.0.1:28882:38882
#server.3=127.0.0.1:28883:38883
配置文件:zoo.cfg,至少包含:clientPort, dataDir, tickTime。有的参数可以使用java系统属性配置,key值是zookeeper.keyword
相关推荐
zookeeper学习笔记
hadoop,hbase,zookeeper安装笔记hadoop,hbase,zookeeper安装笔记hadoop,hbase,zookeeper安装笔记
尚硅谷2021 zookeeper 笔记
Zookeeper学习笔记
zookeeper笔记
java ZooKeeper学习笔记\ZooKeeper原理、运用
资源名称:zookeeper笔记和搭建 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
this is zookeeper guide , but the content is less than the expect you are
zookeeper笔记
自己整理的ZooKeeper学习笔记,适合刚刚接触ZooKeeper的人学习
ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,它提供了一项基本服务:**分布式锁服务**。由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法:**...
zookeeper笔记.pdf
本文适合但不限于软件开发人员阅读。本文档能够使阅读者对zookeeper有一个宏观且全面的了解,内容主要包含zookeeper架构、数据模型、读写及工作原理、典型应用场景、指令汇总等,
Zookeeper的笔记知识,从分布式架构到一致性协议说明,Zookeeper的基本用法,Zookeeper典型使用场景,和技术内幕
包含dubbo-admin的war包、zookeeper的安装压缩包,相关博客:https://mp.csdn.net/postedit/85333379
zookeeper学gn习过程自己总结的基本概念,运行原理,使用方法和应用场景等笔记信息,对于初学者来说可以很快入门zookeeper,上手实战
自学zookeeper笔记 思维导图类型
dubbo-admin-2.5.4.war+zookeeper-3.4.6.tar
适合初学入门,知识巩固。涵盖安装配置、命令操作、Java API操作、事件监听、分布式锁、集群搭建等知识