为了本地测试,又不得不在windows环境下,搭建kafka伪分布式集群,记录一下过程
注意:以下所有目录,都不要出现空格!!!
伪分布式集群节点个数配置:zookeeper 和 kafka 分别3个节点
现在,kafka安装包一般包含Zookeeper,kafka和Zookeeper的对应关系,一般可以找得到,如下图示。
本地测试环境,安装包的版本对应关系:
JDK 版本:1.8.0_151;
kafka版本:2.1.0;
Zookeeper版本:3.4.13
Kafka中就自带有Zookeeper的服务,但是为了数据的高可用性,最好选择自己搭建Zookeeper集群(官网也给出了同样的建议)
3.把zookeeper-3.4.12复制3份,用zookeeper-3.4.12A 、zookeeper-3.4.12B、zookeeper-3.4.12C进行区分;
4.修改zoo.cfg配置文件
zookeeper-3.4.12A中的zoo.cfg配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/BDLTools/Zookeeper/Data/1
dataLogDir=D:/BDLTools/Zookeeper/DataLog/1
clientPort=2181
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
zookeeper-3.4.12B中的zoo.cfg配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/BDLTools/Zookeeper/Data/2
dataLogDir=D:/BDLTools/Zookeeper/DataLog/2
clientPort=2182
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
zookeeper-3.4.12C中的zoo.cfg配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/BDLTools/Zookeeper/Data/3
dataLogDir=D:/BDLTools/Zookeeper/DataLog/3
clientPort=2183
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
配置文件说明:
服务器之间或客户端与服务端之间维持心跳的时间。就是每隔tickTime就会发送一次心跳。单位毫秒
- tickTime=2000
这个是配置Zookeeper接收客户端初始化连接最长能忍受initLimit心跳时间间隔。
- initLimit=10
Leader与follow之间发送消息和应答的时间 总时间=syncLimit*tickTime
- syncLimit=5
zookeeper数据保持路径 默认将log日志也保存在dataDir
- dataDir
zookeeper log日志保存地址 不设置默认是dataDir
- dataLogDir
客户端连接的端口
- clientPort=2181
因为我的集群都是在同一台电脑上配置的,所以这里端口不能一样
知道配置文件里的意思应该就知道如何修改了吧
- server.1=127.0.0.1:2887:3887
- server.2=127.0.0.1:2888:3888
- server.3=127.0.0.1:2889:3889
对于新手我们只需要该以下地方:
dataDirdataLogDir
clientPort
但是下面的server是Zookeeper配置里需要重点讲解的部分
上面的格式我们可以简单的总结为 server.num=B:C:D。
num:是正整数代表的服务的唯一标识。这个要和后面说道的myid文件保持一致。
B: 标识Zookeeper集群中某一个服务的ip或者域名 192.168.1.130C:表示server.num这个服务于集群中leader进行信息交流的端口。在kafka中我们leader和follower需要进行数据备份。具体服务就是通过这个地方制定的端口进行通信的。
D:表示万一leader宕机了,我们就通过这个端口来进行再follower中选举新的leader。
5.创建Data、DataLog目录,然后分别在Data和DataLog目录下,分别创建1 、2、3三个文件夹,如下图示:
在Zookeeper/Data/1目录下,创建myid文件,内容为:1,依次在2文件夹 3文件夹下创建myid,内容分别为2 3.
myid文件创建过程:在linux系统下,这是十分常见的命令,windows下,可以先创建txt文件,之后文件重命名,把.txt去掉;
myid存放位置说明:myid应该放在我们conf/zoo.cfg文件中指定的dataDir ;
6.编辑/zookeeper-3.4.12A/bin/zkServer.cmd文件,
7.验证
分别启动三个zkServer.cmd,并使用cmd命令切换到任意一个/bin目录下,执行命令 zkCli.cmd -server localhost:2181如下图:
出现 zk: localhost:2181
1.下载kafka包,并解压,复制三份,如下图示;
2.修改config目录下server.properties配置文件
配置文件修改内容:
kafka2.1A/config/server.properties修改内容:
# 以下几个配置是需要修改的,其余保持默认即可
broker.id=1
listeners=PLAINTEXT://127.0.0.1:9092
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
log.dirs=D:/BDLTools/Kafka/Logs/1
kafka2.1B/config/server.properties修改内容:
# 以下几个配置是需要修改的,其余保持默认即可
broker.id=2
listeners=PLAINTEXT://127.0.0.1:9093
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
log.dirs=D:/BDLTools/Kafka/Logs/2
kafka2.1C/config/server.properties修改内容:
# 以下几个配置是需要修改的,其余保持默认即可
broker.id=3
listeners=PLAINTEXT://127.0.0.1:9093
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
log.dirs=D:/BDLTools/Kafka/Logs/3
配置说明:
- broker.id在每个节点上是唯一的,在分布式集群中,有几个机器中安装了Kafka,那么那几个机器中的Kafka的broker.id一定是不同的,在伪分布式集群中,每个server.properties配置文件中的broker.id都是不同的
- listeners 监听端口号,因为是伪分布式,端口号必须修改
- log.dirs指定的kafka中的数据的存放位置,默认的tmp目录会定期清空,所以需要修改,而且指定的目录需要在启动kafka集群之前创建好
- zookeeper.connect如果不指定,将使用kafka自带的zookeeper
3.启动
先启动Zookeeper伪分布式集群;
通过cmd命令分别进入kafka2.1A/bin kafka2.1B/bin kafka2.1C/bin目录,执行如下命令
.\bin\windows\kafka-server-start.bat .\config\server.properties
4.展示
基本搭建完成,可以通过项目调用测试
参考:
Kafka集群配置---Windows版