网上部署的资料有很多,我照着部署的时候还是遇见了一些问题,在此记录下,以供参考
windows环境 zookeeper-3.3.5
一:下载资源包
点击这里 下载ZK资源
下载链接
我使用的是版本,下载好以后,本地解压。
二:
创建三个文件夹分别命名为server1 server2 server3
然后再在每个文件夹下面创建data dataLog logs文件夹,然后将解压后的zookeeper-3.3.5复制到该目录下,如图所示:
三:
1: 在每个data文件夹下创建文本文件,命名为myid,注意没有后缀名。
server1中的myid内容为1,server2中为2,server3中为3,这个用来标记zookeeper。
2: 在每个zookeeper-3.3.5\conf目录下创建分别创建一个文本文件,命名为zoo.cfg,来记录该zk的配置信息,
例如在server1中的内容为:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=D:\\ZK\\server1\\data
dataLogDir=D:\\ZK\\server1\\dataLog
clientPort=8081
server.1=127.0.0.1:8088:9088
server.2=127.0.0.1:8089:9089
server.3=127.0.0.1:8090:9090
tickTime
:基本事件单元,以毫秒为单位。这个时间是作为
Zookeeper
服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个
tickTime
时间就会发送一个心跳。
initLimit
:这个配置项是用来配置
Zookeeper
接受客户端(这里所说的客户端不是用户连接
Zookeeper
服务器的客户端,而是
Zookeeper
服务器集群中连接到
Leader
的
Follower
服务器)
初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过
10
个心跳的时间(也就是
tickTime
)长度后
Zookeeper
服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是
5*2000=10
秒
dataDir
:存储内存中数据库快照的位置,顾名思义就是
Zookeeper
保存数据的目录,默认情况下,
Zookeeper
将写数据的日志文件也保存在这个目录里。
clientPort
:这个端口就是客户端连接
Zookeeper
服务器的端口,
Zookeeper
会监听这个端口,接受客户端的访问请求。
syncLimit
:这个配置项标识
Leader
与
Follower
ZK之间发送消息,请求和应答时间长度,最长不能超过多少个
tickTime
的时间长度,总的时间长度就是
2*2000=4
秒
server.A =B:C:D 其中 A表示在myid文件的内容即zkserver的id ,B 表示zk所在的机器IP,C表示leader和followZK之间通信的端口,D是当leader失效的时候,通过这个端口推选新的leader。
到此配置完成
四: 启动
我在windows下安装了Cygwin Terminal ,但是使用linux命令启动的时候总会出现各种问题,导致不能启动成功,最后选择使用cmd启动,进入server1\zookeeper-3.3.5\bin目录
如下:
使用zkServer.cmd启动,各个zkserver
五:访问
使用zk自带的客户端访问zk, 例如我们访问zkserver1,使用>zkCli.cmd -server 127.0.0.1:8081
如下图所示:
进入后如下所示:
zk自身带有类似linux命令的一些命令使用ls命令可以查看所有命令,
创建节点 /myzk :
create /myzk “test” 节点内容为“test”
创建子目录 create /myzk/child “child”
删除节点:
delete /myzk
先删除子目录节点,然后才能删除父节点
获得节点内容
get /myzk
重置内容:
set /myzk “reset”
查看所有的节点:
ls /
#############################################################################################
六、在linux环境下,自定义配置jdk相关参数:
vim bin/zkServer.sh
添加:
JAVA_HOME=/opt/usr/java/bin/java ##the path of jdk
JAVA_OPTS=”$JAVA_OPTS -Xms1g -Xmx1g”
修改启动参数:
nohup $JAVA “-Dzookeeper.log.dir=${ZOO_LOG_DIR}” “-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}” \
-cp “$CLASSPATH” $JVMFLAGS $ZOOMAIN “$ZOOCFG” > “$_ZOO_DAEMON_OUT” 2>&1 < /dev/null &
为:
$JAVA_HOME $JAVA_OPTS “-Dzookeeper.log.dir=${ZOO_LOG_DIR}” “-Dzookeeper.root.logger=${ZOO_LOG4J_PRO
P}” \
-cp “$CLASSPATH” $JVMFLAGS $ZOOMAIN “$ZOOCFG” > “$_ZOO_DAEMON_OUT” 2>&1 < /dev/null &
status 参数 部分也需要修改为如下:
STAT=`$JAVA_HOME “-Dzookeeper.log.dir=${ZOO_LOG_DIR}” “-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}” \
否则 没法使用: sh bin/zkServer.sh status 可以查看 当前zkserver 是leader还是follower
sh bin/zkServer.sh start 启动即可
注意在使用 sh bin/zkCli.sh -server 127.0.0.1:8181 连接zk时,如果状态是CONNECTING 那么对zk的操作是不会成功的
状态为 CONNECTED 可以操作
*************************************************************************************************************************************
Do it,Insist it,Enjoy it
*************************************************************************************************************************************
zookeeper 的官方开速使用文档
点击打开链接