这一篇将Zookeeper的实际操作总结出来。
下载Zookeeper:Zookeeper
1.Windows安装Zookeeper
1.1 下载安装
解压到合适目录,修改conf中配置文件。
将Conf中的zoo_sample.cfg复制一份更名为zoo.cfg(也可以直接修改)
1.2 修改zoo.cfg参数
基础配置:
参数 | 详解 |
---|---|
clientPort | 配置当前服务器对外的服务端口,客户端会通过该端口和zookeeper服务器创建链接一般为2181,每台zookeeper服务器都可以配置任意可用端口,同时集群中的所有服务器不需要保持clientport端口的一直 |
dataDir | zookeeper服务器存储快照文件的目录 |
tickTime | 用于配置zookeeper中最小时间单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的 |
例如initLimit=10就是tickTime的十倍等于2W毫秒 |
高级配置:
参数 | 详解 |
---|---|
dataLogDir | 用于配置zookeeper服务器存储事务日志文件的目录,默认情况会将事务日志文件和快照数据存储在同一个目录中,尽量将两个目录分开如果条件允许,可以将事务日志的存储配置在一个单独的磁盘上,事务日志的记录对磁盘的性能要求非常高,为了保证事务的一致性zookeeper再返回客户端事务请求响应之前必须将本次请求对应的事务日志写入到磁盘中因此事务日志写入的性能直接决定了zookeeper在处理事务请求时的吞吐量针对同一块磁盘的并发读写操作,尤其是数据快照的操作,会极大影响输入日志的写入性能,因此,尽量给事务日志的输出配置单独的磁盘或者挂载点,将极大的提高zookeeper的整体性能 |
globalOutstandingLimit:(defalult:1000)最大请求堆积数 | 在zk运行中客户端会源源不断的将请求发送到服务端,为了防止服务端资源过度消耗,服务端必须限制同时处理的请求数,服务端必须限制最大请求堆积数 |
preAlloSize | 用于配置zk事务文件预分配的磁盘空间的大小默认是64m |
snapCount | 用于配置相邻两次数据快照之间的事务操作次数,zk会在snapCount次事务操作之后,会进行一次数据快照(default:100000) |
maxClientCnxns | 该参数从socket层面限制单个客户端与单个服务器之间的并发连接数,是以IP地址的力度来进行连接数的限制,如果将该参数设置为0那么表示对连接数不做任何限制,限制范围仅仅是单台客户机对单台服务器之间的链接数限制,并不能控制所有客户端的连接数总和 |
clientPortAddress | 针对多网卡的机器允许为每个IP地址制定不同的监听端口 |
minSessionTimeout | 用于服务端对客户端会话的超时时间进行限制,如果客户端设置的超时时间不在设置时间范围以内,那么会被服务端强制设置为最大或者最小超时时间(default:2times the tickTime) |
maxSessionTimeout | 同上(default:20times the tickTime) |
fsync.warningthresholdms | 用于配置zk进行事务日志同步操作时消耗时间的报警阈值,一旦进行一个同步操作,消耗的时间大于参数值就会在日志中打印报警日志(3.3.4,defalut:1000) |
autopurge.snapRetainCount | (3.4.0版本开始)zk提供了对历史事务日志和快照数据自动清理的支持,用于配置zookeeper在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件,最小值时三,如果比3小,会自动调整为3 |
autopurge.purgeInterval | 同上面参数配套使用,用于配置zk进行历史文件自动清理的频率,如果参数配置为0或者小于零,就表示不开启定时清理功能,ZK默认不开启该功能 |
electionAlg | 用于配置leader选举算法,3.4.0以后zk只保留了master-leader一种选举算法,目前没有什么用 |
initLimit | 用于配置leader服务器等待follow服务器启动,并完成数据同步的时间,follow服务器在启动的过程中会与 |
leaderServes | 用于配置leader服务器是否接受客户端的链接,也就是否允许leader向客户端直接提供服务,在默认情况下leader服务器能够接受并处理客户端的所有的读写请求,在ZK的架构设计中leader服务器主要是用来进行对事务更新请求的协调以及集群本身的运行时的协调,因此可以让leader服务器不接受客户端的链接以使他专注于进行分布式的协调 |
server.x=[hostname]:nnnn[:nnnn] | 用于配置zk集群中的服务器列表,基础配置 |
syncLimit | 用于配置leader和follow服务器进行心跳检测的最大延时时间,在zk集群运行的过程中leader服务器会与所有的follow服务器进行心跳检测来确定这个服务器是否存活,如果leader服务器在这个参数规定的时间内无法获取到follow的心跳检测响应那么leader就会认为这个follow已经脱离和自己的同步通常情况下运维人员使用默认值5即可,如果网络环境延时较大,可以适当调大的值 |
cnxTimeout | 用于leader选举过程中各个服务器之间进行TCP链接创建的超时时间默认值5000毫秒 |
forceSync | 用于配置zk服务器是否在事务提交的时候将日志写入操作强制刷入磁盘,默认式yes,设置为NO,能一定程度上提高性能,可能会有断电风险 |
jute.maxbuffer | 用于配置单个数据节点上可以存储的最大数据量的大小通常情况下运维人员不需要改变这个参数,所有的客户端都设置才能生效,默认式1M,考虑到zk上不适宜存储太大的数据量往往需要将参数设置的更小 |
skipACL | 用于配置zk是否跳过ssh安全权限检查,默认是NO会对每个客户端进行权限检查,设置为YES能一定程度上提高zk读写性能,同时也将向所有的客户端开放ZK的数据包括之前那些设置过SSL检测的数据节点也将不在接受权限控制 |
配置文件信息:
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=D:\\zookeeper\\data dataLogDir=D:\\zookeeper\\log # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
cmd加入bin目录启动zkServer.cmd
2.CentOS安装Zookeeper
CentOS和window安装的是同一个包,通用的,只不过启动的东西不一样而已。
1.可以使用xftp直接将完整包拖进去
2.使用命令解压
tar -zxvf zookeeper-3.4.10.tar.gz
- 1
3.修改配置文件
可以将window里面改好的拖进去,或者使用Linux自带的Vi
vi zoo.cfg
文章来源: Zookeeper实际操作配置参数详解