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测试: