这里知识点内容引用 https://blog.51cto.com/littledevil/1983261,个人整理以备后用
服务器状态
服务器的四种状态,不是一直不变的,例如leader死了,就会发生选举,一个fllowing状态的服务器就会变成额leading
状态 | 说明 |
LOOKING | 寻找Leader,当服务器出现这个状态时,它会认为当前集群没有Leader,因此需要进入选举 |
FOLLOWING | 跟随者状态,表示当前是Follower角色 |
LEADING | 领导者状态,表示当前为Leader角色 |
OBSERVING | 观察者状态,表示当前服务器是Observer角色 |
配置
基本配置
基本配置:运行ZK最少需要配置的内容 | |
clientPort | 监听客户端连接的端口 |
dataDir | 数据库快照存储位置 |
tickTime | 客户单到服务器之间的心跳频率,也叫做基本时间单元,单位毫秒,客户端连接ZK之后彼此要发送心跳信息,这个发送频率就是这个时间。配置中所有用到时间地方都会以这个为基础,也就是它的倍数,或者可以理解为能够容忍多少个心跳时间。 |
高级配置
高级配置 | |
dataLogDir | 事务日志保存路径,生产环境中建议把日志路径和快照路径分别保存在独立磁盘上,避免出现磁盘IO繁忙从而导致性能下降,必要时也可以关闭日志功能 |
maxClientCnxns | 限制连接到ZK上的客户端数量,并且限制并发连接数量,它通过IP来区分不同客户端。值为0表示不做任何限制。注意这里的限制是针对单台客户端到服务器的,并不是控制所有客户端连接的。默认60. |
minSessionTimeout | 最小会话超时时间,默认为tickTime的2倍。不建议把这个值设置的比tickTime小。客户端连接到ZK时如果在这个最小时间内没有和ZK联系则标记为超时,也就是说会断开。 |
maxSessionTimeout | 最大会话超时时间,默认为20倍的最小会话超时时间。不建议把这个值设置的比tickTime小。客户端连接到ZK时如果在这个最大时间内没有和ZK联系则标记为超时。所以上面的参数和这个参数组成了一个时间范围,也就是客户端连接ZK时如果在这个时间范围内没有成功连接则会标记为超时。如果客户端设置的时间范围不在这个服务器设置的范围内,则会被强制应用服务器设置的范围。 |
autopurge.snapRetainCount | 自动清理日志,该参数设置保留多少个快照文件和对应的事务日志文件,默认为3,如果你设置的小于3则会被自动的调整为3. |
autopurge.purgeInterval | 自动清理日志,该参数设置自动清理频率,上面的参数配套使用。客户端在和ZK服务器交互中服务器会产生很多日志,而且ZK会将内存中的数据作为快照保存起来,而且这些数据不会自动删除,那么磁盘空间就会被占用,可以设置这2个参数来自动清理,不过如果ZK服务器比较繁忙而且赶上删除日志任务就会影响性能,所以一般不设置这个自动清理,而是在ZK访问量少的时候通过Linux的定时任务来处理。0表示不开启自动清理功能。 |
globalOutstandingLimit | ZK的最大请求堆积数,客户端请求比较多,为了防止客户端资源过度消耗,服务器必须限制同时处理的请求数量。 |
preAllocSize | 用于配置ZK事务日志预先分配的空间,默认是64M |
snapCount | 用于配置相邻两次快照之间的事物日志次数,默认是10万。也就是10万条事务之后做一次快照同时结转事务日志。 |
clientPortAddres | 这个参数针对多网卡的ZK服务器,允许为每个IP地址指定不同的监听端口。 |
fsync.warningthresholdms | 用于设置ZK服务器事物日志同步操作时消耗时间的报警阈值,如果实际消耗时长超过这个时间日志就会记录。 |
electionAlg | 用于配置Leader选举算法,目前只有一种选举算法,所以不用配置。 |
cnxTimeout | 用于Leader选举时各个服务器之间进行的TCP连接创建超时时间,默认为5. |
forceSync | 这个参数用于配置ZK服务器是否在事物提交时是否强制写入磁盘(LINUX的延迟写入),默认是YES。 |
jute.maxbuffer | 用于配置单个数据节点上最大数量,默认是1MB。通常不需要改动该参数,但是因为Zookeeper不适合存放太多数据所以有时候需要把值改小。 |
skipACL | 是否跳过ACL检查,默认是no,也就是会对所有客户端连接进行acl检查。 |
集群配置
集群配置 | |
initLimit | 表示允许从服务器(相对于leader来说的客户端)连接到leader并完成数据同步的时间,它是以tickTime的倍数来表示的,也就是从服务器与主服务器完成初始化连接和数据同步是能够容忍多少个心跳时间,如果超过这个时间不能完成初始化连接的建立则表示连接失败。默认是10.如果你的数据量过大而且从服务器数量也多那么这个值可以设置大一点。 |
syncLimit | 表示主服务器(leader)和从服务器(follower)之间发送心跳请求和应答的频率,如果在这个时间内从服务器不能与主服务器通信,则表示该从服务器失败。默认为5.如果集群环境网络不佳可以调整大一点。 |
LeaderServes | 用于配置Leader服务器是否接受客户端的连接,是否允许Leader向客户端直接提供服务,默认是可以的。 |
server.x= | 用于配置集群服务器列表 |