zookeeper部署
下载
官网路径:https://dlcdn.apache.org/zookeeper/
单机部署
#解压 tar -zxf apache-zookeeper-3.8.1.tar.gz #进入配置文件目录 cd apache-zookeeper-3.8.1/conf #拷贝模板文件 cp -a zoo_sample.cfg zoo.cfg #编辑文件 vim zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/apps/apache-zookeeper-3.8.0-bin/data dataLogDir=/home/apps/apache-zookeeper-3.8.0-bin/logs clientPort=2181 #创建数据及日志文件目录 mkdir /home/apps/apache-zookeeper-3.8.0-bin/data mkdir /home/apps/apache-zookeeper-3.8.0-bin/logs #启动|停止|状态|重启 ./bin/zkServer.sh start|stop|status|restart |
集群部署
下述内容因在单台服务器部署,故部分内容与实际情况不服,请按情况进行修改
#解压并修改文件名 tar -zxf apache-zookeeper-3.8.1.tar.gz mv apache-zookeeper-3.8.1.tar.gz zookeeper-01 #进入配置文件目录 cd apache-zookeeper-01/conf #拷贝模板文件 cp -a zoo_sample.cfg zoo.cfg #编辑 vim zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/apps/zookeeper-01/data dataLogDir=/home/apps/zookeeper-01/logs clientPort=2181 #是否开启admin管理 admin.enableServer=false #admin端口 admin.serverPort=8180 #集群节点 server.1=192.168.80.121:28881:38881 server.2=192.168.80.121:28882:38882 server.3=192.168.80.121:28883:38883
在zk数据目录下创建myid文件并填入服务器id值,与zoo.cfg server.* 保持一致 echo '1' >/home/apps/zookeeper-01/data/myid echo '2' >/home/apps/zookeeper-02/data/myid echo '3' >/home/apps/zookeeper-03/data/myid |
#启停脚本
配置文件详解
官网:https://zookeeper.apache.org/doc/r3.6.2/zookeeperAdmin.html#sc_configuration
基础配置
参数 |
详解 |
clientPort |
客户端连接zookeeper server的端口 |
tickTime |
zookeeper中使用的基本时间度量单位,单位为毫秒。zookeeper客户端与服务器之间的心跳时间就是一个tickTime单位。默认值为2000毫秒,即2秒 |
dataDir |
ZooKeeper 的数据目录,主要目的是存储内存数据库序列化后的快照路径。如果没有配置事务日志(即 dataLogDir 配置项)的路径,那么 ZooKeeper 的事务日志也存放在数据目录中。 |
dataLogDir |
事务日志路径 |
高级配置
参数 |
详解 |
initLimit |
Follower连接到Leader并同步数据的最大时间,如果zookeeper数据比较大,可以考虑调大这个值来避免报错 |
syncLimt |
Follower同步Leader的最大时间 |
leaderServers |
用于配制Leader节点是否接收客户端请求,默认情况下这个值是yes ,当集群中节点数量超过3个,建议设置为false,关闭leader节点接收客户端请求 |
server.x |
主要用来设置集群中某台server的参数,格式[hostname]:n:n[:observer],zookeeper server启动的时候,会根据dataDir下的myid文件确定当前节点的id。该参数里,第一个port是follower连接leader同步数据和转发请求用,第二个端口是leader选举用 |
cnxTimeout |
设置连接Leader接收通知的最大超时时间,该参数只在使用electionAlg 3时生效 |
electionAlg |
指定 leader 选举算法。默认值为 3 1表示基于UDP通信的不进行权限验证算法,2表示进行基于UDP通信的进行权限验证算法,3表示基于TCP通信的fast leader选举 |
IpReachableTimeout |
3.4.11 版本中才引入的配置项。当解析主机名时,为可访问的 IP 地址设置此超时值,单位毫秒。默认情况下,ZooKeeper 将使用主机名的第一个 IP 地址(不做任何 reachable 检查)。设置 ipReachableTimeout(大于 0)后,ZooKeeper 将尝试获取第一个可访问的 IP 地址。这是通过调用 Java API 函数InetAddress.isreavailable(long timeout)实现的。其中使用了这个超时值。如果找不到这样的 IP 地址,主机名的第一个 IP 地址将被使用。 |
maxClientCnxns |
在套接字级别上限制同一客户端的并发连接数。因为同一客户端 IP 地址相同,可能会调度到同一个 ZooKeeper 服务器节点上。这个配置项是为了避免 DoS 攻击。默认值为 60,设置为 0 表示不做任何限制。 |
clientPortAddress |
指定为客户端提供服务的监听地址(ipv4/ipv6)。换句话说,clientPort 将只绑定在地址上。如果不设置该选项,将默认监听在所有地址上(0.0.0.0)。 |
minSessionTimeout |
|
maxSessionTimeout |
客户端和服务端会话保持的最小、最大超时时间。ZooKeeper 的很多数据和状态都和会话绑定。假如客户端和服务端成功建立连接(会话)后,正常情况下,客户端会时不时地向服务端发送心跳,如果这个服务端或者客户端挂了,它们之间的会话要保持多长时间。 |
fsync.warningthresholdms |
事务日志输出时,如果调用 fsync 方法超过此处指定的超时时间,那么会在日志中输出警告信息。默认是 1000ms。 |
autopurge.snapRetainCount |
该配置项指定开启了 ZooKeeper 的自动清理功能后(见下一个配置项),每次自动清理时要保留的版本数量。默认值为 3,最小值也为 3。它表示在自动清理时,会保留最近 3 个快照以及这 3 个快照对应的事务日志。其它的所有快照和日志都清理。 |
autopurge.purgeInterval |
指定触发自动清理功能的时间间隔,单位为小时,值为大于或等于 1 的整数,默认值为 0,表示不开启自动清理功能。 |
syncEnabled |
指定观察者(observers)是否像 follower 一样,也记录事务日志和快照,以便在 observers 重启时能加速恢复。默认值为 true,设置为 false 表示禁用该功能,不记录日志和快照。 |