zookeeper-zookeeper在windows上部署

1. 安装与配置

zookeeper下载地址:

1https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.7.0/ 2 3

zookeeper解压到目标位置:
在这里插入图片描述
修改zookeeper配置文件:
在zookeeper包目录下的conf文件夹下创建一个zoo.cfg配置文件或者复制z_sample.cfg文件并进行修改

1// 心跳间隔 2tickTime=2000 3// 镜像数据位置 4dataDir=D:\\apache-zookeeper-3.7.0-bin\\data1 5// 日志输出位置 6dataLogDir=D:\\apache-zookeeper-3.7.0-bin\\log1 7// 客户端链接端口 8clientPort=2181 9initLimit = 5 10syncLimit = 2 11 12

创建对应的数据存储目录与日志输出目录
在这里插入图片描述
两个文件夹的位置必须与配置文件中的一致。

2. 运行测试

启动测试
进入到bin目录
在这里插入图片描述
运行zkService.cmd
在这里插入图片描述
在这里插入图片描述
使用JPS测试查看进程:
在这里插入图片描述
运行后可以查看到QuorumPeerMain的进程,zookeeper启动成功!

3.伪集群配置

上述内容为zookeeper的单个应用搭建。一下内容将实现zookeeper的单机集群搭建。
所谓单机搭建zookeeper集群其实就是在一台机器上启动多个zookeeper,在启动每个zookeeper时分别使用不同的配置文件zoo.cfg来启动,每个配置文件使用不同的配置参数(clientPort端口号、dataDir数据目录、dataLogDir数据日志目录)在同一台机器上启动多次。

3.1配置zoo文件

首先在zookeeper配置目录下创建需要集群数量的zoo.cfg文件(以2个为例)分别为:zoo1.cfg,zoo2.cfg
在这里插入图片描述
配置内容设置
zoo1.cfn配置

1tickTime=2000 2dataDir=D:\\apache-zookeeper-3.7.0-bin\\data1 3dataLogDir=D:\\apache-zookeeper-3.7.0-bin\\log1 4clientPort=2181 5initLimit = 5 6syncLimit = 2 7 8server.1=localhost:2887:3887 9server.2=localhost:2888:3888 10 11

zoo2.cfn配置

1tickTime=2000 2dataDir=D:\\apache-zookeeper-3.7.0-bin\\data2 3dataLogDir=D:\\apache-zookeeper-3.7.0-bin\\log2 4clientPort=2182 5initLimit = 5 6syncLimit = 2 7 8server.1=localhost:2887:3887 9server.2=localhost:2888:3888 10 11
  • tickTime: 基本事件单元,以毫秒为单位。这个时间是作为zookeeper服务器之间或客户端与服务器间维持心跳的时间。也就是每隔tickTime时间就会发送一个心跳
  • dataDir: 存储内存中数据库快照的位置,就是zookeeper保存数据的目录,默认情况下,zookeeper将数据的日志问也保存在这个目录里
  • clientPort: 客户端连接zookeeper服务器的端口,默认是2181,zookeeper会监听这个端口,接收客户端的访问请求
  • initLimit: 这个配置项是用来配置zookeeper接收客户端初始化连接能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(tickTime)长度后,zookeeper服务器还没有接收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000 = 20 秒
  • syncLimit: 这个配置项标识Leader和Follower之间发送消息,请求和应答的长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是 5 * 2000 = 10秒
  • server.myid=IP:Port1:Port2, myid是服务器的编号,一个正整数,port1表示的是服务器与集群中的Leader服务器交换信息的端口,一般用2288(具体自己定义),Port2表示的是万一集群中的Leader服务器宕机了,需要一个端口来重新进行宣讲,选出一个新的Leader,一般用3388(具体自己定义)

3.2配置log与data目录

分别在zookeeper目录下创建data1,data2,log1,log2文件夹,并在data目录下创建myid文件,用于服务启动运行时通过服务编码找到数据存放位置。所以myid中的编码与对应配置文件中的服务编号为一致。
data1/myid

11 2 3

data2/myid

12 2 3

3.3 配置zookeeper服务启动器

在此处将创建两个zookeeper服务启动器,并分别绑定到对应的服务上。
在这里插入图片描述
zkServer1.cmd配置

1setlocal 2call "%~dp0zkEnv.cmd" 3 4set ZOOCFG=D:/apache-zookeeper-3.7.0-bin/conf/zoo1.cfg // 指定启动的服务 5set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain 6set ZOO_LOG_FILE=zookeeper-%USERNAME%-server-%COMPUTERNAME%.log 7 8echo on 9call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %* 10 11endlocal 12 13

zkServer2.cmd配置

1setlocal 2call "%~dp0zkEnv.cmd" 3 4set ZOOCFG=D:/apache-zookeeper-3.7.0-bin/conf/zoo2.cfg 5set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain 6set ZOO_LOG_FILE=zookeeper-%USERNAME%-server-%COMPUTERNAME%.log 7 8echo on 9call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %* 10 11endlocal 12 13

到此配置完毕

4.伪集群测试

分别启动上述两个服务

1.\skServer1.cmd 2 3.\skServer2.cmd 4 5

在这里插入图片描述
使用jsp测试:
在这里插入图片描述

代码交流 2021