zookeeper admin 笔记

 

Required Software

1) JDK>=1.6

2)推荐使用ensembleZooKeeper(至少3),并run on separate machines

3)Yahoo!zk配置在特定的RHEL boxes里,2cpu2G内存,80G硬盘

 

数据和日志目录

1)数据目录里的文件是zk节点的持久化备份,包括快照和事务日志文件。zk节点上的变动都会追加到事务日志文件。当日志增长到足够大的时候,zk会生成一个当前所有节点的快照文件。这个快照文件覆盖了之前所有事务日志。

2) Data Directory包括2种文件:1)myid :一个可识别的整数,代表zkid2)snapshot.<zxid> - holds the fuzzy snapshot of a data tree.快照文件的后缀zxidzk的事务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.snapRetainCountautopurge.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允许FinitLimit时间内完成这个工作。

#如果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)