zookeeper伪集群搭建及遇到的坑

今天搭建了zookeeper的单机伪集群,记录一下防止忘记

安装

从官网下载安装包解压到本地目录,比如D:/zookeeper-3.4.10

配置

为了运行3个 zookeeper 服务端进程,新建存放这3个进程运行和配置数据的目录,比如叫 z1z2z3 。在这3个目录下都建一个 data 目录用于存放进程运行时的数据,接着在这3个目录都新建一个叫 myid 的文件,内容分别为1、2、3(即 z1 下 myid 的内容是1、z2 下 myid 的内容是2、z3 下 myid 的内容是3),最后在这3个目录下都建一个 .cfg 结尾的配置文件。
z1 目录下的配置文件叫 z1.cfg,内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z1所在目录的全路径)/data
clientPort=2981
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445

z2 目录下的配置文件叫 z2.cfg,内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z2所在目录的全路径)/data
clientPort=2982
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
z3 目录下的配置文件叫 z3.cfg,内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z3所在目录的全路径)/data
clientPort=2983
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
tickTime:服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime 时间就会发送一个心跳,以毫秒为单位。也是 zookeeper 中的时间单元,zookeeper 中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session 的最小超时时间是 2*tickTime 。
initLimit 和 syncLimit:都是表示连接的心跳数,具体含义暂时可以不用管。
dataDir:zookeeper 保存数据的目录,默认情况下 zookeeper 写数据的日志文件也保存在这个目录里。
clientPort:客户端连接服务器的端口,zookeeper 会监听这个端口,接受客户端的访问请求。
server.N:XXXX:P1:P2 。其中 N 表示服务器编号,XXXX 表示该服务器的 IP 地址,P1 和 P2 是两个 TCP 端口号,分别用于仲裁和 Learder 选举。服务器编号也对应着上面配置的 myid 文件的内容,比如上面 z1 目录下的 myid 内容是 1 ,也就是这里的 server.

启动

分别启动3个 zookeeper 进程,启动时使用上面新建的配置文件
启动 z1 :
sh $(zookeeper压缩包解压后的全路径)/bin/zkServer.sh start $(z1所在目录的全路径)/z1.cfg
启动 z2 :
sh $(zookeeper压缩包解压后的全路径)/bin/zkServer.sh start $(z2所在目录的全路径)/z2.cfg
启动 z3 :
sh $(zookeeper压缩包解压后的全路径)/bin/zkServer.sh start $(z3所在目录的全路径)/z3.cfg
当看到如下信息表示 zookeeper 的进程启动好了

在启动的过程中遇到一个坑,在启动好后用sh $(zookeeper压缩包解压后的全路径)/bin/zkServer.sh status $(z2所在目录的全路径)/z2.cfg报错如下

解决过程如下:
使用./zkServer.sh start-foreground /mnt/d/zkData/z1/zoo.cfg使zookeeper前台运行,抛如下异常

但是我已经写了myid文件了,怎么找不到呢?
其实是这样,我在windows10的linux sub system里运行的,不能用windows里的路径格式,要改为这样的格式/mnt/d/{zookeeper myid路径},这个坑是windows的坑啊。。。

验证

用telnet连接客户端端口,如下说明成功

你可能感兴趣的:(zookeeper,java)