zookeeper环境搭建及说明

zk主要作用是协调数据。应用场景之一分布式配置管理。

下载软件
http://zookeeper.apache.org/

我这里下载的是zookeeper-3.5.3-beta
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.3-beta/zookeeper-3.5.3-beta.tar.gz

解压,移动到/usr/local/zookeeper-3.5.3-beta

修改环境变量,使用root用户修改/etc/profile,加入如下的内容:
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.5.3-beta
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
source /etc/profile

验证一下,执行命令:echo $ZOOKEEPER_HOME

在zookeeper的目录下面创建zookeeper的数据文件目录及日志文件目录,执行如下的命
mkdir /usr/local/zookeeper-3.5.3-beta/data
mkdir /usr/local/zookeeper-3.5.3-beta/logs

修改zookeeper配置文件,zoo.cfg(zookeeper-3.5.3-beta下面的conf目录),下面是配置说明

tickTime :基本事件单元,以毫秒为单位。它用来指示心跳,最小的 session 过期时间为两倍的 tickTime

dataDir :存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。

clientPort :监听客户端连接的端口

initLimit Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许Follower在initLimit时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,Follower在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。默认值为10,即10 * tickTime (No Java system property)

syncLimit 在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果Leader发出心跳包在syncLimit之后,还没有从Follower那里收到响应,那么就认为这个Follower已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题,设置大小依赖与网络延迟和吞吐情况。默认为5,即5 * tickTime

dataLogDir: 日志目录

单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单台ZK服务器之间的连接数限制,不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的连接数限制。
maxClientCnxns=10

Session超时时间限制,如果客户端设置的超时时间不在这个范围,那么会被强制设置为最大或最小时间。默认的Session超时时间是在2 * tickTime ~ 20 * tickTime这个范围 New in 3.3.0
minSessionTimeout=4000
maxSessionTimeout=40000

serverId=1 服务ID

Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许Follower在initLimit时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,Follower在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。默认值为10,即10 * tickTime
initLimit=10

在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果Leader发出心跳包在syncLimit之后,还没有从Follower那里收到响应,那么就认为这个Follower已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题,设置大小依赖与网络延迟和吞吐情况。默认为5,即5 * tickTime
syncLimit=5

如果要增加其他机器,server.2=Ip:2888:3888,以此类推
2888端口是从机器连接到主机器的端口,
3888端口是用来进行 leader 选举的端口。

修改zookeeper配置文件,myid(zookeeper-3.5.3-beta下面的data目录);如果没有这个文件,需要新建一个文件。里面的数字要与zoo.cfg中当前机器的ServerID一致

启动zookeeper,进入zookeeper的bin目录,执行命令:zkServer.sh start。如果没有执行权限,需要增加权限。
zkServer.sh status 查看zk运行状态
zkServer.sh stop 停止zk
zkServer.sh start 启动zk

当启动 ZooKeeper 服务成功之后,输入下述命令,连接到 ZooKeeper 服务:
./zkCli.sh
1 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容:
2 创建一个新的 znode ,使用 create /zk myData 。这个命令创建了一个新的 znode 节点“ zk ”以及与它关联的字符串:
3 再次使用 ls 命令来查看现在 zookeeper 中所包含的内容:
4 下面我们运行 get 命令来确认第二步中所创建的 znode 是否包含我们所创建的字符串
5 下面我们通过 set 命令来对 zk 所关联的字符串进行设置:
6 下面我们将刚才创建的 znode 删除:
7 最后再次使用 ls 命令查看 ZooKeeper 所包含的内容:

    原文作者:2You
    原文地址: https://www.jianshu.com/p/afc5933f0730
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞