【kafka专栏】使用shell脚本快速搭建kafka单机版(含视频)

本小节的目的不是搭建一个高可用的、生产的kafka集群,而是提供给大家一个快速搭建方式,讲解搭建一个kafka的单机版的过程,方便大家用于学习使用

本文配套视频:https://www.bilibili.com/video/BV1Ri4y12731/

一、前置要求

本节使用的稳定版本2.8.0(3.0版本之后zookeeper会被去掉),目前绝大多数生产环境比较稳定的搭建方式仍然需要依赖于zookeeper,所以需要先下载好下面的两个安装包以及一个安装脚本(点这里)

后续文章会讲解3.0版本的搭建方式,从编码实验学习的角度而言,使用2.8或3.0的kafka服务并没有什么重要的区别。从kafka集群运维的角度差异会比较大。所以这篇文章我们暂时还是用2.8版本进行安装,对于学习来讲什么都不耽误。

  • kafka_2.13-2.8.0.tgz
  • apache-zookeeper-3.6.3-bin.tar.gz

下载完成之后,将kafka安装包、zookeeper安装包、setup.sh放到linux系统的一个独立目录里面。

注意:如果你想顺利的使用我在下文中提供的shell安装脚本setup.sh,就请不要随意下载其他的版本的kafka和zookeeper. 因为shell脚本里面版本号是写死的。当然如果你会自己修改shell,那就是另外一回事了。

  • 宿主机服务器JDK版本要求JDK8 或者 JDK11,Java -version命令能够正确执行。 请自行安装。
  • 确保linux操作系统内目前不存在这两个目录/opt/kafka /opt/zookeeper。shell脚本执行后,kafka和zookeeper将被安装在这两个目录里面 。
  • 如果安装失败需要重新安装,先执行 rm -fR /opt/kafka /opt/zookeeper

二、安装方法

setup.sh为安装脚本,需要root权限执行。为setup.sh设置可执行权限,命令为 chmod u+x /root/kafka-setup/setup.sh ,根据自己的主机环境修改setup.sh中的下面四个配置

  • IP_ADDRESS=kafka对外提供服务的ip,注意如果一个主机多个网卡多个ip,请配置为对外提供服务的ip。
  • ZOOKEEPER_DATADIR=zookeeper数据存放的目录,自己定义
  • ZOOKEEPER_LOGDIR=zookeeper日志存放的目录,自己定义
  • KAFKA_LOGDIR=kafka日志(即消息数据)存放的目录,自己定义

上面的配置完成之后,进入setup.sh及kafka、zookeeper安装包所在目录,执行./setup.sh,注意看输出日志,没有ERROR,kafka单机版就安装成功

三、启动、测试zookeeper的可用性

启动命令:/opt/zookeeper/default/bin/zkServer.sh start,启动成功状态如下

# /opt/zookeeper/default/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/default/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

状态查看:/opt/zookeeper/default/bin/zkServer.sh status 出现下面日志表示zookeeper服务正常运行

# /opt/zookeeper/default/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/default/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

四、启动测试kafka可用性

启动kafka命令:/opt/kafka/default/bin/kafka-server-start.sh -daemon /opt/kafka/default/config/server.properties

正常启动之后不会输出任何日志,但使用jps命令查看会发现kafka进程

[root@zimug1 kafka-setup]# jps
1941 QuorumPeerMain
2348 Kafka
2366 Jps

4.1.创建名为test的topic

一个partition分区,每个分区一个副本replication

/opt/kafka/default/bin/kafka-topics.sh --create \
--bootstrap-server 192.168.1.111:9092 \
--replication-factor 1 --partitions 1 --topic test

响应如下结果,表示test主题创建成功

Created topic test.

选项 说明:

  • –topic 定义topic名称
  • –replication-factor 定义副本数 (注意:单机版只能创建1个分区副本,因为只有一个broker,你创建多了kafka没地方放置)
  • –partitions 定义分区数

许多旧的kafka版本中只用--zookeeper ip:2181来连接zookeeper进而控制broker服务执行命令,在kafka较新的版本中虽然仍然支持该参数,但是已经不建议使用,因为在kafka的发展路线图中zookeeper会逐步被剔除。所以建议大家采用--bootstrap-server ip:9092方式进行服务连接。

4.2.查看已创建的topic主题及分区信息

查看test主题的命令,ip换成你自己的kafka服务ip

/opt/kafka/default/bin/kafka-topics.sh --describe \
--bootstrap-server 192.168.1.111:9092 --topic test

响应结果:

Topic: test     TopicId: POmPtQ70SNWVPVvgvbR1Og PartitionCount: 1       ReplicationFactor: 1    Configs: segment.bytes=1073741824
        Topic: test     Partition: 0    Leader: 1       Replicas: 1     Isr: 1

4.3.模拟生产者生产数据

下面的命令ip换成自己的kafka服务ip

/opt/kafka/default/bin/kafka-console-producer.sh --bootstrap-server 192.168.1.111:9092 --topic test

执行命令后随便输入一条消息,比如:11111111111,回车

4.4.模拟消费者

另外开一个终端,执行

/opt/kafka/default/bin/kafka-console-consumer.sh \
--bootstrap-server 192.168.1.111:9092 --from-beginning --topic test

消费者端收到消息11111111111,表示测试成功。--from-beginning用于把主题中历史所有的数据都读取出来。

四、停止kafka与zookeeper

执行下面命令,停止kafka进程。正常执行之后是没有任何响应结果的,可以用jps命令查看kafka进程是否还在(命令执行后完全停止进程,会有一点延时,稍等片刻再看)

/opt/kafka/default/bin/kafka-server-stop.sh

执行下面命令,停止zookeeper进程

/opt/zookeeper/default/bin/zkServer.sh stop

如下相应信息证明stop成功。

# /opt/zookeeper/default/bin/zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/default/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

猜你喜欢

转载自blog.csdn.net/hanxiaotongtong/article/details/124701768
今日推荐