关于zookeeper和kafka的配置安装

关于zookeeper和kafka有两天了,今天终于测试成功了,下面来说说zookeeper和Kafka在window环境下的安装和配置,以及这两天踩到的坑。

一:关于zookeeper

去网上下载zookeeper安装包,然后解压缩。我下载的是zookeeper-3.4.8.rar,本来想上传的,可是文件有点大上传不上去。话不多说,我们接着看看如何配置zookeeper。话说楼主只有一台机器,所以只能给大家讲zookeeper的单点配置,和伪集群的配置方法。关于zookeeper和kafka的配置安装

如上图所示,zookeepersingle是单点配置。zookeeper0,zookeeper1,zookeeper2是我配置的伪集群。

我们先看看zookeepersingle单点配置:

关于zookeeper和kafka的配置安装

第一步:进入zookeepersingle中的config配置,将配置文件名称改成zoo.cfg。

第二步:我们进入zoo.cfg中看里面的配置信息

tickTime=2000    #心跳时间间隔,作为服务器之间或客户端与服务器之间维持心跳的间隔

initLimit=5 #这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 

syncLimit=2    #这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 

dataDir=E://ruanjian/zookeeper-3.4.8/zookeepersingle/data    #存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录

dataLogDir=E://ruanjian/zookeeper-3.4.8/zookeepersingle/logsZookeeper     #写数据的日志文件目录。

clientPort=2181    #这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

server=127.0.0.1:8640:8920    #127.0.0.1是本地,8640是维持服务的端口号,8920是当本地服务挂了之后备用的端口号

第三步:进入bin中直接运行zkServer.cmd。没问题就说明基本配置好了

这里我们可以在环境变量中配置一下zkServer,以后如果要启动zookeeper的话直接使用命令zkserver就可以了,具体步骤先创建一个

ZOOKEEPER_HOME=E:\ruanjian\zookeeper-3.4.8\zookeepersingle(这里是你自己zookeepersingle的目录)然后再加到path变量中

%ZOOKEEPER_HOME%\bin(这里我是window10所以可以直接加,如果是其他的系统,你们自己注意一下符号)。弄好之后直接在cmd中输入

zkserver就可以直接开启了。

我们再说说伪集群。要配置的地方跟只有部分地方会有差别,由于有zookeeper0,zookeeper1,zookeeper2三个,我就说一个,另外两个

基本一样。首先呢就是zoo.cfg,对于这三个我是按名字来配置的分别取zoo0.cfg,zoo1.cfg,zoo2.cfg。改了之后要把对应的zkserver.cmd中的set ZOOCFG

改成set ZOOCFG=E:\ruanjian\zookeeper-3.4.8\zookeeper0\conf\zoo0.cfg,另外两个一样

关于zookeeper和kafka的配置安装

这里有些地方要注意一下,由于是一台机器,所以我这里的端口号都没有设置为一样,记住,不要选择电脑中已有的端口号,

不然会报错。server.A=BCD:其中 是一个数字,表示这个是第几号服务器;是这个服务器的 ip 地址;表示的是这

个服务器与集群中的 Leader 服务器交换信息的端口;表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进

行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 

都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。这里有个server.0,server.1,server.2。

这里分别对应的是zookeeper0,zookeeper1,zookeeper2。可能有人会问了,

它是通过端口号来判断的。在这里我要跟大家说的第二个注意的地方在E:\ruanjian\zookeeper-3.4.8\zookeeper0\data下面需要你

创建一个文档名字为myid,后缀名为空,里面只需要写一个0作为zookeeper0的标记,来对应上面server.0,zookeeper1,zookeeper2也是一样。

然后分别进入三个bin目录下开启zkserver.cmd,但你运行一个时会报错,运行第二个时错误会减少,都开始后才会正常。这是由于他会

自动进行检测关联的机器。开始运行的时候他会自动选出一个leader。关于zookeeper有什么用,怎么选举的我想大部分的博客都会提到。

我这里就不细说了。

总结一下坑:dataDir,dataLogDir里面的路径可能开始可能没有文件夹,可以自己手动创建。zoo.cfg的名字要与zkserver.cmd中的

set ZOOCFG=E:\ruanjian\zookeeper-3.4.8\zookeeper0\conf\zoo0.cfg路径名要匹配。要在对应的data目录下面创建一个myid后缀名为空

的文件。里面写上对应的server值。

二:关于kafka的配置

这个kafka卡了我一整天,很简单的一些配置,可就是报错。看着网上那么多的教程,然后跟着他们一步步的配置,最后终于发现了

他们说的到底是什么玩意,完全看不懂。今天我终于尝试成功了,这让我明白了一个道理,一代版本一代神。写这个的由于版本升级导致

之前的问题都已经直接被修复了。唉,那我说说我配置kafka的步骤和坑。

1:把kafka从官网下载下来之后,解压缩,我下载的是kafka_2.12-0.11.0.0版本,这里有个问题要记住,到官网下二进制版本的。进入

到config文件夹把server.properties和zookeeper.properties

复制到bin\window目录下,因为是window版本所以我们使用的.bat批处理。

2:通过cmd命令,进入到windows文件夹里面运行下面这句代码

zookeeper-server-start.bat zookeeper.properties

如果成功开启,然后再开一个cmd进入到windows文件夹里面运行下面这句代码

kafka-server-start.bat server.properties

关于网上出现的各种混乱的bug,楼主都没有遇到过,就碰到过一个bug,见下图

关于zookeeper和kafka的配置安装

如上图所示,出现了一个版本异常。这是问题是因为jdk版本过低的原因,我现在用的jdk是1.7所以我在官网下载了一个1.8版本的,然后就可以运行了。

总结一下kafka的坑:1.如果下载最新版本的kafka,就千万不要去到网上按他们的教程走,不然你会一脸懵逼,因为你的配置文件根本没有任何问题。2.下载kafka最新版本时,要下载二进制的,不知道哪个是二进制的?没关系,下个谷歌浏览器然后中文翻译你就知道了。3.jdk版本要对应上我现在下载的是1.8的jdk,官网下载很慢。我本来想在csdn上下载,可是没有c币唉。

接下来我会将zookeeper,kafka,spring整合配上其他的技术模拟一个秒杀系统,唉,新手多艰难。