2021windows虚拟机搭建kafka集群详细步骤+可能出现的bug+重新部署(带图,超详细,亲测有效)

搭建kafka集群需要配合zookeeper使用,有两种选择,第一种是使用kafka自带的zookeeper,第二种是自己安装指定zookeeper,墙裂推荐使用第二种.

第一章 具体搭建步骤:

第一步:安装zookeeper

这里使用的是zookeeper-3.6.3,直接去管网下载即可

第二步:配置zookeeper

(1)下载解压完成后,来到conf文件夹下,有一个 zoo_sample.cfg 官方默认的配置文件。复制一份,重命名为 zoo.cfg

(2)配置,打开zoo.cfg 修改配置信息

dataDir=../zkData
dataLogDir=../zkLog
clientPort=2181

修改完新增下列属性:
admin.serverPort=8000
server.1=127.0.0.1:12888:1388
server.2=127.0.0.1:12889:1389
server.3=127.0.0.1:12887:1387

如下图所示:
在这里插入图片描述
这里值得留意的是:

127.0.0.1是服务器的地址
1288x指的是这个服务器与集群中的leader服务器交换信息的端口(集群与集群之间信息交互用的)
138x指的是leader挂掉时专门用来进行选举leader所用的端口

(3)复制两份刚刚配置好的zookeeper文件夹,命名如:

在这里插入图片描述

(4)分别修改刚粘贴文件夹下的zoo.cfg文件中的clientPort和admin.serverPort属性,保证唯一

clientPort=2182
admin.serverPort=8001
clientPort=2183
admin.serverPort=8002

(5)在配置的dataDir目录下面新建一个 myid 文件(无后缀),文件内容就是对应的id号

zookeeper-3.6.3程序 myid 文件的内容 为 1
zookeeper-3.6.3-2程序 myid 文件的内容 为 2
zookeeper-3.6.3-3程序 myid 文件的内容 为 3

我这边配置的目录是
在这里插入图片描述
注意,version-2是自动生成的,不用管它

(6)启动zookeeper

分别进入到各个zookeeper文件夹下的bin目录下,双击zkServer.cmd即可.

值得注意的是,当启动前面两个zookeeper时,会报如下错误
在这里插入图片描述
这是正常的,因为zookeeper本身就是相互注册的

第三步.安装kafka

这里使用的是kafka_2.12-2.5.0,直接去管网下载即可

第四步.配置kafka

解压后到config文件夹下 打开server.properties配置文件进行配置,修改或新增以下配置信息, 与zookeeper类似,复制两份出来,再更改它们不一样的地方即可.

broker.id=0(另外两个分别为1,2)
listeners=PLAINTEXT://192.168.2.99:9092(另外两个分别为9093,9094)
port=9092(另外两个分别为9093,9094)
host.name=192.168.2.99(服务器地址)
log.dirs=/tmp/kafka-logs-0(另外两个分别为/tmp/kafka-logs-1,/tmp/kafka-logs-2)
log.retention.hours=72
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

第五步.启动对应的kafka

进入到bin/windows目录下 启动kafka并指定配置文件:

kafka-server-start.bat ../../config/server.properties

至此,服务器搭建kafka集群就完成了.

第二章 校验kafka集群是否搭建成功

第一步.在kafka集群上创建一个topic

集群环境正确创建topic命令如下:

kafka-topics.bat --create --zookeeper 192.168.2.99:2181,192.168.2.99:2182,192.168.2.99:2183 --replication-factor 1 --partitions 1 --topic test600

第二步.查看是否创建成功

kafka-topics.bat --list --zookeeper 192.168.2.99:2181

第三步.往刚创建好的topic上发送(生产)消息

kafka-console-producer.bat --broker-list 192.168.2.99:9092,192.168.2.99:9093,192.168.2.99:9094 --topic test600

第四步.在任意节点上消费消息

kafka-console-consumer.bat --bootstrap-server 192.168.2.99:9092,192.168.2.99:9093,192.168.2.99:9094 --topic test600 --from-beginning

命令建议直接复制粘贴,否则很容易多一个或者少一个空格!

当消费者可以即时接收到生产者生产的消息时,代表kafka集群搭建成功,如下所示:
在这里插入图片描述

第三章 重新部署kafka集群

如果kafka集群出现问题,无需保留之前的消息数据时,则按如下步骤重新部署:

1.先删除C:\tmp\下的三个日志文件
2.再去到每个zookeeper配置文件中,删除掉zkData文件夹下的version-2文件夹(只保留myid文件)
3.再删除zkLog文件夹下的内容
4.先启动zookeeeper
      去到对应的bin目录下分别启动每个zookeeper:  zkServer.cmd(双击这个cmd文件即可, 启动前面两个会报Connection refused:connect错误为正常现象,因为三个zookeeper是互相注册的)
5.再启动kafka:
      进入到bin/windows目录下 启动kafka并指定配置文件: kafka-server-start.bat ../../config/server.properties

注意,必须是先启动zookeeper再启动kafka

第四章 不同环境可能出现的bug及解决方案

(1).存储空间不足,无法处理此命令

Caused by: java.io.I0Exception:存储空间不足,无法处理此命令.
       at java.io.FileOutputStream.writeBytes<Native Method>
       at java.io.FileOutputStream.write<FileOutputStream.java:326>
       at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221>

解决办法:

将三个kafka配置文件中log.retention.hours=72数值都改小一些,再重新部署即可

(2).页面文件太小,无法操作

Java HotSpot<TM> 64-bit SererVM warning:INFO: os::commit_memory<0x00000000c0000000,1073741824,0> failed;error='页面文件太小,无法操作。'......

解决办法:

打开kafka安装位置,在bin/windows下找到kafka-server-start.bat文件,将

set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G 改为

set KAFKA_HEAP_OPTS=-Xmx256M -Xms128M

注意:有操作系统位数的区别,是32位系统修改32位的,是64位修改64位的
在这里插入图片描述
(3).项目代码连kafka集群时,报Connection refused

java.net.ConnectException: Connection refused: no further information
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
    at org.apache.kafka.common.network.PlaintextTransportLayer.finishConnect(PlaintextTransportLayer.java:51)
    at org.apache.kafka.common.network.KafkaChannel.finishConnect(KafkaChannel.java:73)
    at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:323)
    at org.apache.kafka.common.network.Selector.poll(Selector.java:291)
    at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:260)
    at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:236)
    at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:148)
    at java.lang.Thread.run(Thread.java:745)

解决办法:

Kafka报Connection refused错,大半原因都是因为配置文件配置错误(要么配置ip有问题,要么是端口问题),IP和端口没错,那么确认防火墙是否关闭(防火墙开启也会Connection refused),如果确认防火墙已经关闭,那么根据第一章第四步,检查Kafka的配置是否正确

(4).项目代码尝试消费kafka集群消息时,获取不到却也不报错

解决办法:

启动时应先启动消费者,再启动生产者.

创作不易,感谢观看,记得保存收藏哦

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ManCxyster

一分也是爱,不为钱,交个朋友

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值