背景
虚拟机:centos7
jdk:jdk8
kafka:3.0.0
配置一台kafka以kraft模式启动
首先我们先去kafka官网下载对应的安装包,Scala1.2/1.3都ok无所谓。我是安装了一个图形化界面更加直观了一一点至于怎么安装我就不做赘述。
1.解压安装包
tar -zxvf 安装包
2.解压之后我们首先是获取uuid
sh kafka-storage.sh random-uuid
解释:
这个生成的uuid是用于格式化kafka的,网上有[[:uuid]]这个命令就是生成带-的那种命令是不适用于格式化kafka的因为格式问题
这个文件在bin目录中
3.将kafka格式化
sh kafka-storage.sh format -t uuid -c ../config/kraft/server.properties
4.修改 config/kraft中的server.properties文件(不要害怕!基本上都是注释而且只有几行是需要修改的。)
主要修改kafka角色、broker的端口和ip、controller的端口和ip、对外暴露的端口的ip
############################# Server Basics #############################
# kafka的角色选择
process.roles=broker
# 角色的节点
node.id=1
# 这里用于配置controller的候选人
controller.quorum.voters=1@localhost:9093
############################# Socket Server Settings #############################
# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
# FORMAT:
# listeners = listener_name://host_name:port
# EXAMPLE:
# listeners = PLAINTEXT://your.host.name:9092
#这一条说明这个broker的监听端口为9092,作为conroller时候为9093
listeners=PLAINTEXT://localhost:9092,CONTROLLER://localhost:9093
#说明broker之间的通信为明文通信
inter.broker.listener.name=PLAINTEXT
# Hostname and port the broker will advertise to producers and consumers. If not set,
# it uses the value for "listeners" if configured. Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
#这里是外部访问kafka集群的端口,这里则表示是本地的9092端口
advertised.listeners=PLAINTEXT://localhost:9092
这里是后面的配置这里必须要改这里是存储日志的位置默认是机器的零时文件我们需要修改一个。
# A comma separated list of directories under which to store log files
log.dirs=a 原本(/tmp/kraft-combined-logs)
我这里的a表示它运行后会在bin目录下创建一个a目录去存储运行日志什么的
解释:
process.roles= 一个kafka既可以做broker又可以做controller(可填broker、controller、broker,controller)
node.id=1 在一个集群中可以有多个id这个是每一个broker都不一样的也就是说集群的时候我们需要修改这个地方
controller.quorum.voters 这个的意思是kraft模式下的候选人就比如候选人有三个就按【node.id@host:port,....】这样的格式去配置
listeners 这个是配置你的kafka在本机中的端口而前面的PLAINTEXT是一种通信方式有加密的但是我是作为练习就没有设置,那么为什么一个是controller呢?因为一个kafka既可以当broker也可也当controller分别用不同的端口去进行一个通信。
advertised.listeners 这个是对外暴露的端口一般与broker端口一致,对外暴露就是比如我们可视化连接集群,springboot集成kafka的时候就是写这个端口。只需这一个即可连接到整个集群。
这只是配置文件的一部分后面也有相应的配置但是没用展示出来。
5.这样一台kraft模式下的kafka就可以运行了
#开启kafka
sh kafak-server-start.sh ../config/kraft/server.properties
集群模式
博主是用一台虚拟机上配置三台kafka从而达到一个伪集群的效果
解释:我们一共配置三台kafka,一台是broker和controller的集合体用于存储集群的信息。剩下两台当broker去存储信息。
集群配置
首先我们三台kafka都必须以kraft模式启动,一定要用同一个uuid去格式化!!!然后再配置文件中添加配置cluster.id=uuid.这样就能达到我们的集群效果。
监控工具--offsetExplorer
由于我们没用zookeeper所以第一张图这个就不需要管他不用删报错也不用管,在第二张图的第一个Bootstrapservers这个位置去填写我们设置的controller对外暴露的ip地址加端口。
至此我们就已经配置了一个集群而且可以通过监控工具去操作kafka!
补充问题:
advertised.listeners和listeners的区别,前者是用于和外部对接,后者是用于集群内部通信。
大致的思路首先配置一台kafka-----》复制三份,修改配置文件-----》下载offsetExplorer进行监控