Zookeeper学习(5)-----高级配置

思维导图:

引言

    本文总结了一些Zookeeper的配置参数信息,分为三部分:

  • 服务器配置
  • 集群配置
  • 重配置

 

一.服务器配置

    介绍了服务器中一般的常用配置信息

1.1基本配置

    在一般情况下,基本配置是必须要有的,不能不配置。

//基本配置
clientPort      -客户端监听端口号
dataDir     -数据树路径
dataLogDir      -事务日志路径
tickTime        -超时单位时间

1.2存储配置

    对事务日志和快照进行相关配置

//存储配置
preAllocSize        -预分配事务日志文件大小
snapCount       -每次快照之间的事务数量
autopurge.snapRetainCount       -Zookeeper会定期对事务日志和快照进行垃圾回收,此参数指定了需要保留的快照数量
autopurge.purgeInterval     -垃圾回收时间间隔数量,单位为小时
fsync.warningthressholdms       -存储同步时间超时警告阀值
weitht.x=n      -群首投票权重
traceFile       -持续跟踪Zookeeper的操作并记录在日志中,此为路径。还需设置requestTraceFile参数

1.3 网络配置

    对客户端网络连接进行相关配置

//网络配置
globalOutStandingLimit      -待处理请求最大值
maxClientCnxns      -每个IP最大socket连接数量
clientPortAddress       -限制客户端连接到指定的接收信息的地址上
minSessionTimeout       -最小会话超时时间
maxSessionTimeout       -最大会话超时时间

1.4 服务器集群配置

    服务器集群相关配置

//集群配置
initLimit       -追随者刚连接到群首时的超时值,单位为tick时间
syncLimit       -追随者与群首同步数据的超时值
leaderServes        -yes/no 群首是否为客户端提供服务,默认为yes
server.x=[hostname]:n:n[:observer]      -x为服务器序号,hostname为IP地址,第一个n为事务发送端口号,第二个n为群首选举端口号,最后表示开启观察者模式
cnxTimeout      -群首选举打开一个新的连接的超时值
electionAlg     -选举算法配置,不可修改

1.5 非安全配置

//非安全配置
forceSync       -yes/or 控制是否将数据信息同步到存储设备
jute.maxbuffer      -仅适用java系统属性配置,对znode节点数据的大小进行检查
skepACL     -跳过所有ACL检查
readonlymode.enabled        -ture/false 开启只读模式

1.6 日志配置

    因为Zookeeper的日志使用的时log4j,所以以下配置是log4j的配置文件中的相关配置

//日志配置,使用了log4j,所以以下配置都是log4j的配置文件中的配置
zookeeper.root.logger=INFO, CONSOLE①
zookeeper.console.threshold=INFO
zookeeper.log.dir=.
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=DEBUG
zookeeper.tracelog.dir=.
zookeeper.tracelog.file=zookeeper_trace.log
log4j.rootLogger=${zookeeper.root.logger}

二.集群配置

    介绍了集群的一些配置信息

2.1 多数法则

    为了避免脑裂的发生,一般来说,一个Zookeeper集群中需要达到法定人数的服务器正常运行才行。法定人数一般来说既是多数,例如,5个服务器,3就是这个集群的法定人数。不推荐使用偶数数量的服务器集群,因为4个服务器的集群,3才是法定人数。

2.2 集群中组的配置

    我们可以把集群中的一些服务器配置为一个组,使用如下配置:

//集群配置
group.x=n[:n]       -组同样适用于多数原则,组内也适用于多数原则

    举例:当前有三个组,每个组三个服务器,此时的多数原则是组需要达到法定人数即至少两个组需要正常运行,而每个组内的服务器集群也需要达到法定人数,所以,这两个运行正常的组其中的服务器至少有两个服务器运行正常。

2.3 观察者

    Zookeeper集群中可以添加观察者,只负责执行事务,而不参数群首选举或信息同步。在集群配置中声明观察者后,需使用如下配置开启:

//观察者
peerType=observer       -需要则集群配置信息中声明observer,例如server.1=127.0.0.1:2181:3181:observer

 

三.重配置

    当当前集群的服务器负荷较大时,我们需要把新的服务器添加进入原本的Zookeeper集群。加入有如下场景:现有A,B,C三个服务器构成Zookeeper集群,其中,A,B已同步为最新的事务,C还未同步到最新事务。此时若加入服务器D,E:

    Zookeeper集群开始群首选举,由于法定人数为3,所以,服务器C是可以被选为群首的,那么,服务器A,B上最新同步的事务将丢失

    最后,C作为群首,将同步其信息,变为如下结果:

    所以我们需要新的手段来配置集群,当然重配置不适用于独立模式

 

3.1 重配置文件

    Zookeeper原本的配置文件叫zoo.cfg.我们取消其中的clientPort配置和服务器集群相关配置(server.x=IP:N:N)然后添加重配置文件路径:

//重配置,不适用于独立模式
dynamicConfigFile=./dyn.cfg

    然后在dyn.cfg文件中添加服务器集群配置信息,participant表示参与者(群首或从节点),observe表示观察者

//重配置文件格式,其中participant表示参与者(群首或从节点)也可以是observer,
server.id=host:n:n[:role];[client_address:]client_port
-服务器配置,例如:
server.1=127.0.0.1:2222:2223:participant;2181
server.2=127.0.0.1:3333:3334:participant;2182
server.3=127.0.0.1:4444:4445:participant;2183

3.2 重配置命令

    此时我们可以使用命令行进行服务器集群服务器数量的添加或减少了,可用如下命令,重配置文件将被自动修改:

//重配置命令,移除服务器2,3,并添加服务器4,5。重配置文件会更新
reconfig -remove 2,3 -add \
server.4=127.0.0.1:5555:5556:participant;2184,\
server.5=127.0.0.1:6666:6667:participant;2185

3.3 客户端连接串管理

    当然,由于服务器集群中服务器数量的增加或减少,我们就需要修改客户端的服务器集群连接串。为了动态的修改连接串,我们可以使用固定的IP地址,然后将次IP地址通过DNS将此IP地址解析为多个IP地址,从而动态的配置连接串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值