Zookeeper-3.4.14 Win10 裸机运行(不包含命令) 教程

前言

本文只是针对win10能裸机够运行zk的教程,只保证最低的单机和集群的运行配置教程,不包含其他理论内容。本篇也会被收录到【Zookeeper 源码解读系列目录】中。
需要去官网下载zookeeper-3.4.14.tar.gz这里面有运行包zookeeper-3.4.14.jar,否则会报下面的错误,如果你是从git上拉下来的官方源码,那你一定会有这个错误。

D:\javaSelfDownloadRepositry\zookeeper-3.4.14\bin>call "F:\Java\jdk1.8.0_191"\bin\java "-
Dzookeeper.log.dir=D:\javaSelfDownloadRepositry\zookeeper-3.4.14\bin\.." "-
Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\javaSelfDownloadRepositry\zookeeper-
3.4.14\bin\..\build\classes;D:\javaSelfDownloadRepositry\zookeeper-
3.4.14\bin\..\build\lib\*;D:\javaSelfDownloadRepositry\zookeeper-
3.4.14\bin\..\*;D:\javaSelfDownloadRepositry\zookeeper-
3.4.14\bin\..\lib\*;D:\javaSelfDownloadRepositry\zookeeper-3.4.14\bin\..\conf" 
org.apache.zookeeper.server.quorum.QuorumPeerMain 
"D:\javaSelfDownloadRepositry\zookeeper-3.4.14\bin\..\conf\zoo.cfg"
错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain

了解内容

下载完毕以后,解压到自己喜欢的路径下,我们先看下里面都是什么东西,基本上就是
bin:里面是zk提供的官方脚本,也是这篇文章的主要操作的内容
conf:里面是zk的配置文件,也包含log4j等等的配置
lib:资源包,包含运行的必备jar包
后面是一堆源码包,C的源码和java的源码
再后面是自动化依赖转换文件
最后是运行时引用包
在这里插入图片描述

配置单机

运行zk前首先要配置zoo.cfg,进入\zookeeper-3.4.14\conf找到zoo_sample.cfg,修改为zoo.cfg打开
清理掉注释如下图,因为是单机模式我们关注的就只有dataDirclientPort,还可以配置dataLogDir=path作为log的专用目录和数据目录区分开,本文不做详解,保存退出。
在这里插入图片描述
进入bin目录,在地址栏输入cmd打开命令行,输入zkServer.cmd,之所以这样操作是因为一旦报错,命令窗口不会一闪而退,会一直保持在打开的状态,我们查看错误就比较方便了。
如下图,启动单机zkServer成功
在这里插入图片描述
如下图,启动单机zkClient成功
在这里插入图片描述

配置集群

集群和单机模式区别不大,但是和linxu的配置差别较大,首先我们先复制三份zk出来,如下:
在这里插入图片描述
然后创建三个目录给这三个zk使用
在这里插入图片描述
下面是分别配置各个zk的zoo.cfg文件
zk1中对应log2目录

dataDir=F:\\zookeeperLog\\log2
#配置socket port
clientPort=2181
#配置服务集群地址,数据传输port和ack port
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

zk2中对应log3目录

dataDir=F:\\zookeeperLog\\log3
clientPort=2182
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

zk3中对应log4目录

dataDir=F:\\zookeeperLog\\log4
clientPort=2183
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

那么说明下这些都是做什么的
首先server.1这里配置的就是你有多少的server,这里1,2,3就是myid;
然后localhost就是配置ip的地方,这里因为是演示全部用本机,如果资源充足可以替换为ip;
后面2887就是传输数据的port,也是服务器数据同步的端口,因为用的是本机所以必须切换不同的端口,如果这里大家用的是三个服务器则可以直接用各个服务器2887 port不需要这样递增添加;
最后3887就是客户端和服务器进行ack的port,也会用来做lead选举,同样资源充足不需要这样递增,三台都可以做下面这样的配置:

clientPort=2181
server.1=192.168.0.101:2887:3887
server.2=192.168.0.102:2887:3887
server.3=192.168.0.110:2887:3887

配置完以后保存退出,我们回到bin目录下,分别打开三个zk的zkServer.cmd因为是集群模式,打开一个一定会报错,至少启动三个才能保证运行。
如果发现报错myid file is missing,说明,没有创建myid,因为这里的myid是需要和server.1后面的数字匹配上的,所以我们自己去相应的目录创建一下。

org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing F:\zookeeperClust\zookeeper-3.4.14-1\bin\..\conf\zoo.cfg
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:156)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:104)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:81)
Caused by: java.lang.IllegalArgumentException: F:\zookeeperLog\log2\myid file is missing
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:408)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:152)
        ... 2 more
Invalid config, exiting abnormally

创建三个myid,这里只展示myid1作为例子,其他两个对应配置:
在这里插入图片描述
配置完毕以后回到bin里,启动每一个zkServer.cmd,如果启动不全就会报java.net.ConnectException: Connection refused: connect错误,如下图
在这里插入图片描述
三台机器启动以后,服务器正常如下,此时服务器会停下来等待client的链接:
在这里插入图片描述
去bin目录中运行zkCli.cmd启动client,这时不分zk,哪个都可以,也可以启动多个链接,如下
在这里插入图片描述
同时服务器端也会更新链接信息,自此,集群模式和单机模式裸机启动大功告成。
在这里插入图片描述

附:配置观察者机器

观察者和普通的集群配置类似,基于上述内容,我们再copy出来一份zk明明为zookeeper-3.4.14-ob,修改其中的zoo.cfg
在这里插入图片描述
内容修改为如下,然后保存,并且把前面所有的zoo.cfg文件的server更新成这样,然后给log5中创建对应的myid文件,然后启动即可。

#Observer里的配置
dataDir=F:\\zookeeperLog\\log5
#配置port
clientPort=2184
#配置观察者标识
peerType=observer
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.4=localhost:2890:3890:observer
#Zk1里的配置(follower/Leader)
dataDir=F:\\zookeeperLog\\log2
#配置port
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.4=localhost:2890:3890:observer

这里要说明下peerType这个属性,当你配置这个属性以后,服务器并不会认为这台服务器就是一个观察者,真正有作用的是在server.4这一行配置的:observer,源码里会对此进行检测,如果发现你的集群配置的最后有:observer那么这一行对应的机器就是Observer,如果没有就是follower,仅仅配置peerType=observer是没有用的。但是笔者建议加上这个属性,因为我们看刚刚配置的zk1的zoo.cfg到zkob的zoo.cfg几乎是没区别的,每个里面的集群配置都是一样的,第一眼很难区分出来哪一台是观察者机器,而添加上这句以后就很容易分别出来这台机器是不是一个Observer。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值