zookeeper部署

发布时间 2023-07-24 14:50:58作者: 一窗明月半帘风

下载

官网路径: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://www.cnblogs.com/sswind/p/17544590.html

配置文件详解

官网: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 表示禁用该功能,不记录日志和快照。