1.配置详解
1.基本配置
clientPort:
用于配置当前服务器对外的服务端口,客户端会通过该端口和 zookeeper 服务器创建连接,一般设置为2181.集群中的所有服务器不需要保持
clientPort 端口一致。
dataDir:
用于配置zookeeper服务器超出快照文件的目录。默认情况下,没有配置dataLogDir,阿么事务日志也会存储在这个位置。考虑到事务日志的
写性能直接影响zookeeper整体的服务能力,因此建议通过参数 dataLogDir 来配置zookeeper事务日志的存储位置。
tickTime:
默认值为:3000,单位毫秒,可以不配置。参数tickTime用于配置zookeeper中最小时间单元的长度,很多运行时的时间间隔都使用tickTime
的倍数来表示。
2.四字命令
1.cnf : 将服务器的配置信息打印出来
2.cons : 用于输出当前这台服务器上所有的客户端连接的详细消息。
3.crst : 命令是一个功能性命令,用于重置所有的客户端连接统计信息。
4.dump : 用于输出当前集群的所有会话信息
5.envi : 用于输出 zookeeper 所在服务器运行时的环境信息
6.ruok : 仅仅只能表明当前服务器是否正在运行,只能说明2181端口打开着,不能代表zookeeper服务器是否运行正常。
7.stat : 获取zookeeper运行时状态信息
8.srvr : 和stat一样,区别在于 srvr 不会将客户端的连接情况输出,仅仅输出服务器的自身信息
9.srst : 重置所有服务器的统计信息
10.wchs : 输出当前服务器上管理的Watcher的概要信息。
11.wchc : 用于输出当前服务器上管理的Watcher的详细信息,以会话为单位进行分组
12.wchp : 与wchc相似,不同点在于,以节点路径为单位分组
13.mntr : 比stat命令更为详细的服务器统计信息
3.JMX
JMX(Java Management Extensions,Java 管理扩展),是一个为应用程序,设备,系统等植入管理功能的框架,能够非常方便的让Java系统对外提供
运行时数据信息的获取和系统管控的接口。
JConsole(Java 监视和管理控制台)是一个Java内置的基于JMX的图形化管理工具,是最常用的JMX连接器。
4.监控
TaoKeeper 监控系统。
5.构建一个高可用的集群
1.容灾
所谓容灾,在IT行业通常是指我们的计算机信息系统具有的一种在遭受诸如水灾,火灾,地震,断电等毁灭性灾难的时候,依然能够对外提供可用服务
的能力。
对于普通应用,为了达到容灾条件,通常我们会选择在多台机器上进行部署组成一个集群。
对于核心应用,不仅要通过多台机器构成集群的方式来提供服务,而且还要将集群中的机器部署在2个机房。
三机房部署:总共N台机器
N1 = (N-1)/2
N2 = 1 ~ (N-N1)/2
N3 = N - N1 - N2 // N3必须满足 N3 < N1 + N2
双机房部署:一个主,一个备。
2.扩容
遗憾的是 zookeeper 在水平扩容方面做的不是很好,需要进行整个集群的重启。有2种方式:
1.整体重启
2.逐台重启
6.日常运维
1.数据与日志管理
zookeeper 服务器会有 dataDir 和 dataLogDir 2个目录,分别用于存储快照数据和事务日志。
3种清理方式:
1.纯shell脚本进行清理
2.使用清理工具:PurgeTxnLog
3.使用清理脚本: zkCleanup.sh
2.Too many connections
maxClientCnxns 参数,用于设置zookeeper 服务器运行时允许单个客户端机器创建的最大连接数。超过了,就会拒绝连接。
3.磁盘管理
zookeeper 对磁盘依赖非常严重。zookeeper 的数据变更,都会以事务日志的形式写入磁盘,并且只有当集群中过半的服务器已经记录了事务的日志,
服务端才响应给客户端。另一方面,zookeeper 还会定时将内存数据库中的所有数据和所有客户端的会话信息进行快照。所以,磁盘IO性能直接制约了
zookeeper 每个更新操作的处理速度。
改进:
1.使用单独的磁盘作为事务日志的输出目录
2.尽量避免内存与磁盘的交换