一、运维配置
参考: http://zookeeper.apache.org/doc/r3.4.6/zookeeperAdmin.html#sc_configuration
基础配置
tickTime:
最小事件间隔的长度。
dataDir:数据快照目录
高级配置
dataLogDir:Zookeeper服务器存储事务日志文件的目录,默认和快照数据存储在同一个目录,我们应该尽量分开,尽量给事务日志的目录配置到一个单独的磁盘。可以极大的提高Zookeeper的整体性能。因为事务日志的记录多磁盘性能要求非常高, 为了保证数据的一致性,Zookeeper在返回客户端事务请求响应之前, 必须将本次请求对应的事务写入到磁盘中,因此事务日志写入的性能直接决定了Zookeeper在处理事务请求时的吞吐量,针对同一个磁盘的其他并发读写操作,尤其是快照操操作会极大的影响事务日志的写入性能。
globalOutstandingLimit:配置Zookeeper服务器最大请求堆积数。
preAllocSize:配置Zookeeper事务日志文件预分配的磁盘空间的大小,默认为64m。
snapCount:配置相邻两次数据快照之间的事务操作的次数,事务操作之后进行一次数据快照。
maxClientCnxns:socket层面上来限制单个客户端与单个服务器之间的并发连接数, 通过ip对连接进行限制。0:不做限制(只针对单台客户机和单台服务器的限制,不可以对集群进行总数的限制)
clientPortAddress:针对多网卡的机器,可以为每个ip地址指定不同的监听端口。
minSessionTimeout、maxSessionTimeout:服务器对客户端会话的超时时间进行限制(两数的范围内)。
fsync.warningthresholdms:用于配置事务日志同步操作时消耗事件的报警阀值,一旦进行同步操作,消耗的事件大于这个参数的值,那么就会在日志中打印报警日志。
autopurge.snapRetainCount:历史事务日志和快照日志自动清理。自动清理的时候需要保存的快照数据文件数量,和对应的事务日志文件 。最小值是3,配置的比3小的话会自动设置为3,至少需要保存3个快照数据文件和事务日志文件。
autopurge.purgeInterval:和上面一起使用,配置历史文件自动清理的频率,如果是0或者负数表示不需要开启定时清理的功能, 默认是0。
electionAlg:配置Zookeeper的lender选举算法。3.4.0后只有一中选举算法,所以这个参数现在是没用了。
leaderServes:配置lender服务器是否接收客户端的连接,默认是可以接收的。(Zookeeper的lender是用来进行事务更新请求的协调,和集群本身的运行时的协调。这里可以设置不接收客户端的连接)
syncLimit:lender和flower之间心跳检测的最大延迟时间。用来判断flower是否存活。默认5s,可以根据网络环境来调整。
二、ZooKeeper 4字命令
因为很多命令都是4个字,所以叫4字命令。
判断Zookeeper是否启动
telnet 192.168.10.5 2181
连接成功后输入:stat,就可以查看到相关信息了。
也可以通过nc的方式来实现:echo stat | nc 192.168.10.5 2181
效果是一样的。
其他命令
stat:获取Zookeeper服务器运行时的状态信息。
srvr:和stat类似,仅仅输出服务器的自身信息,没有客户端的连接信息。
conf:Zookeeper服务器运行时使用的基本配置信息。
cons:
输出当前服务器的所有客户的连接信息等
crst:功能性的指令,用于重置所有客户端的连接统计信息。
dump:用于输出当前集群的会话信息,包括这么会话的会话id, 以及每个会话创建的临时节点等信息。
envi:输出Zookeeper所在服务器的运行时环境信息。
ruok:输出当前Zookeeper服务器是否正在运行。
wcsh输出当前服务器管理的watcher管理的概要信息 。
wchc:输出当前服务器上管理的watcher管理的详细信息。
wchp:和wchc类似,不同在于wchp已节点路径为单位。
mntr:输出比stat更为相信的服务器信息
对外提供运行时数据信息。
1. 需要修改Zookeeper服务器的启动脚本
vim zkServer.sh,ZOOMSIN=修改为:
ZOOMAIN="
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.local.only=true
-Djava.rmi.server.hostname=192.168.84.141
-Dcom.sun.management.jmxremote.port=8899
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
org.apache.zookeeper.server.quorum.QuorumPeerMain"
重启Zookeeper。(如果要管理多台服务器,需要对每一台服务器都进行类似的修改。 )
2. 使用JConsole来管理Zookeeper
JConsole是jdk的工具,需要安装jdk
运行:C:\Program Files\Java\jdk1.8.0_60\bin\jconsole.exe
连接:输入上面配置的的ip和端口。
这里我们主要关注MBean,
是Zookeeper服务器对外暴露的MBean,点击进去可以查看详细信息
1. netflix的exhibitor
Netflix公司也开源的一套ZooKeeper客户端框架Curator。
2. zabbix
zabbix业界比较出色的服务器监控软件。
exhibitor的安装和使用
1.
github下载源代码
https://github.com/Netflix/exhibitor,下载zip包。
2. 编译
进入目录:exhibitor-master\exhibitor-master\exhibitor-standalone\src\main\resources\buildscripts\standalone\maven>
执行命令:mvn clean package 【我编译好的: http://pan.baidu.com/s/1slF2gVz 】
把编译好的target下的jar上传到服务器,
执行:java -jar
exhibitor-1.5.6.jar
-c file
打开浏览器: http://192.168.84.141:8080/exhibitor/v1/ui/index.html
3. 使用
可以重启集群中的Zookeeper、查看节点信息、配置集群中的Zookeeper、查看log等操作
例子:
制作一份集群中都共享的配置(需要在集群中的服务器都安装exhibitor的jar)