任务描述
本关任务:了解ZooKeeper的配置并根据需求正确配置ZooKeeper。
相关知识
为了完成本关任务,你需要掌握:1.ZooKeeper服务器启动,2.命令行基本操作。
配置项介绍
基础配置
tickTime:Client和Server通信心跳数。
Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔tickTime的时间就会发送一个心跳。tickTime以毫秒为单位。
initLimit:LF初始通信时限。
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
syncLimit:LF同步通信时限。
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
dataDir:数据文件目录。
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
clientPort:客户端连接端口。
客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口,接受客户端的访问请求。
maxClientCnxns:客服端最大连接数
默认值是60,一个客户端能够连接到同一个服务器上的最大连接数,根据IP来区分。如果设置为0,表示没有任何限制。设置该值一方面是为了防止DoS攻击。
高级配置
一般情况下,不需要更改或添加以下配置,根据用户实际需求再添加或修改即可。
dataLogDir:用于配置ZooKeeper服务器存储事务日志文件的路径。
globalOutstandingLimit:限制系统中未处理的请求数量不超过globalOutstandingLimit设置的值。默认的限制是1000。
preAllocSize:用于配置ZooKeeper事务日志文件预分配的磁盘空间大小。默认的块大小是64M。
snapCount: ZooKeeper将事务记录到事务日志中。当snapCount 个事务被写到一个日志文件后,启动一个快照并创建一个新的事务日志文件。snapCount的默认值是100000。
traceFile:如果定义了该选项,那么请求将会记录到一个名为 traceFile.year.month.day的跟踪文件中。
autopurge.snapRetainCount: 当启用自动清理功能后, ZooKeeper将只保留autopurge.snapRetainCount个最近的数据快照(dataDir)和对应的事务日志文件(dataLogDir),其余的将会删除掉。默认值是3,最小值也是3。
autopurge.purgeInterval:用于配置触发清理任务的时间间隔, 以小时为单位。要启用自动清理,可以将其值设置为一个正整数(大于1)。默认值是0。
syncEnabled: 和参与者一样,观察者现在默认将事务日志以及数据快照写到磁盘上, 这将减少观察者在服务器重启时的恢复时间。将其值设置为false可以禁用该特性。默认值是true。
minSessionTimeout:服务器允许客户端会话的最小超时时间,以毫秒为单位。默认值是2倍的tickTime。
maxSessionTimeout:服务器允许客户端会话的最大超时时间,以毫秒为单位。默认值是20倍的tickTime。
日志输出配置
ZooKeeper的日志输出信息都打印到了zookeeper.out文件中,这样输出路径没有办法控制。
通过修改zkEnv.sh可以达到控制日志输出信息的位置。使用如下命令(如图所示):
vi /opt/zookeeper-3.4.12/bin/zkEnv.sh
根据实际情况修改ZOO_LOG_DIR的值并保存即可。
ZooKeeper配置
根据用户实际需求修改配置文件,以达到用户的目标。
一般地,ZooKeeper的配置文件放在安装目录的conf文件夹中,通过vi命令直接修改并保存,并重启ZooKeeper即可完成。
例如:
vi /opt/zookeeper-3.4.12/conf/zoo.cfg
根据需求直接编辑并保存即可(#为注释符号,表示该行不会被ZooKeeper读取。例如maxClientCnxns,如果希望该配置项生效,需要将#删除)。
编程要求
本关任务是使用命令行,将最大用户连接数设置为100,并启动服务器(启动服务器之前确保服务器处于关闭状态,可通过status查看服务器状态)。
测试说明
本关的测试需要用户在右侧的命令行下完成,用户只需将需要完成的命令在右侧命令行下直接操作即可,然后点击评测按钮,平台会自动验证用户是否按照要求去检测结果。
开始你的任务吧,祝你成功!