zookeeper-保姆级配置说明
一. 基本配置:
clientPort: 客户端连接的服务器所监听的tcp端口,默认2181
dataDir:内存数据库保存的数据路径。myid也存放在这个目录下,数据以异步方式写入。
dataLogDir:事务日志存放路径。服务在确认一个事务前必须将数据顺序同步到相关log,同步写入(io影响)。
tickTime: 使用的基本时间单位,默认值为3000毫秒。客户端最小会话超时时间为tickTime的两倍。更低的配置可以更快发现超时问题,但也会导致更高的网络流量(心跳消息)和cpu使用率。集群模式下,leader会每隔tick/2的时间向follower发送ping消息。
skipACL=yes #跳过acl认证
二. 存储配置:
preAllocSize: 写入事务日志文件的预分配空间大小。默认64MB,理论上事务日志永远不会达到这么大,因为每次快照后都会重新启动一个新的事务日志(eg: 每1000个事务进行一次快照,每个事务平均100字节,那么只需要设置preallocSize为100kB即可),默认根据snapCount的值和平均事务超过512字节设置的。
snapCount: 指定每次快照之间的事务数,默认为:100000,为避免集群所有服务器同时快照影响性能,每次事务会在接近snapCount值的随机数进行快照。如果事务数已经达到,但前一个快照正在进行,新的快照会等到下一个snapCount数量的事务后开启一个新的快照。
autopurge.snapRetainCount: zk在自动清理数据时,需要保留的快照数据文件数量和对应的事务日志文件数,默认为3(最小值为3,如果比3小,会自动调整为3).
sutopurge.purgeInterval: 对快照和日志文件进行垃圾回收操作时间间隔小时数,默认为0,不会自动执行。需要通过zkCleanup.sh手动运行。
weight.x=n: 集群模式下,某个服务器节点对投票权重值,对应leader选举和原子广播协议中。默认为1。
traceFile: 持续跟踪zk的操作,并将操作记录到跟踪日志中,日志命名为:trace.File.year.month.day。开启后会消耗cpu和磁盘性能。
三. 网络配置:
globalOutstandingLimit: zk等待处理请求(请求堆积/排队数)的最大值。防止资源耗尽,超出后限制客户端请求,默认为1000。
maxClientCnxns: 允许每个IP地址的兵法socket连接的最大数。限流。超出拒绝连接。默认为60 ,总限制数为:60 * 集群节点数。
clientPortAddress: zk监听的网络接口地址,默认为所有(如只允许内网ip访问)。
minSessionTimeout: 最小会话超时时间(单位:毫秒),默认为tickTime的2倍,配置过低可能会导致错误的客户端故障检测,配置过高会延迟故障检测时间。如果客户端设置的超时时间不在该范围内,那么会被服务端强制设置为2倍。
maxSessionTimeout: 最大会话超时时间(单位:毫秒), 默认为tickTime的20倍。如果客户端设置的超时时间不在该范围内,那么会被服务端强制设置为20倍.
fsync.warningthresholdms: 当事务性日志中的fsync花费的时间超过此值时,就会向该日志输出警告消息。默认为1000(单位毫秒)。
syncEnabled: 观察者现在像参与者一样默认记录事务并将快照写入磁盘。减少了重新启动时观察者的恢复时间。默认为true,可禁止false
四. 集群配置:
initLimit: leader服务器等待Follower启动,并完成数据同步的时间(单位为tickTime的倍数)。取决于数据的大小和带宽。默认为10(网上参考,官网未找到说明) 。
syncLimit: 对于follower与leader进行sync操作时的超时时间(单位为tickTime的倍数,依赖于网络吞吐量)。当超出时间,leader会放弃相关follower。高延迟网络环境中协议调高。默认为5(网上参考)。
leaderServers: 用于配置leader服务器是否能够接受客户端的连接,即是否允许leader向客户端提供服务。在zk的架构设计中,leader服务器主要用来进行事务更新请求的协调以及集群本身的运行时协调,因此,可以设置为no,让leader服务器不接受客户端的连接,以使其专注于进行分布式协调。默认为yes
server.x = hostname:n:n[:observer] : 服务器x当配置参数。x为服务id,hostname为主机名,第一个n为事务发送的tcp端口,第二个n为leader选举的tcp端口。如果最后一个字段标记了observer,即为"观察者" 服务节点。
cnxTimeout: 在leader选举过程中,各服务器之间进行TCP连接创建的超时时间。默认为5s。
electionAlg: leader选举算法配置(3.4.0之后已弃用,忽略)。
ipReachableTimeout: 当一个server的hostname不是IP地址时, 且DNS服务或者hosts表里这个名字后面挂着多个ip地址时,zk会默认使用名字解析出来的第一个IP地址, 而不检查这个IP是否可达, 当这个值设置大于0时,将尝试获取第一个可访问的IP地址,如果找不到可达的IP地址,则将使用主机名的第一个IP地址。
reconfigEnabled: #开启动态配置变更功能(集群扩缩容通过recofnig方式而无需重启旧节点,3.5引用)
standaloneEnabled: # 是否集群模式(3.5引用)
dynamicConfigFile: #动态节点配置文件(3.5引用)
tcpKeepAlive: 为true时,集群中server之间用来选举的TCP连接就会被置为长连接,默认为false
--------------------------------------------------------------------------------------------------------------------------
深耕运维行业多年,擅长运维体系建设,方案落地。欢迎交流!
“V-x”: ywjw996
《 运维经纬 》