当前位置: 首页 > news >正文

Kafka Kraft模式集群 + ssl

文章目录

  • 启用集群
    • 资源规划
    • 准备证书
    • 创建相关文件夹
    • 配置文件
    • 启动各Kafka节点
  • 故障转移测试
  • spring boot集成

启用集群

配置集群时关键就是提前梳理好需要的网络资源,完成对应server.properties文件的配置。在执行前先把这些梳理好,可以方便后面的配置,也不容易出错,其他操作跟单机Kafka版都是一样的。
一般需要提前规划各节点所在服务器、端口、Kafka安装路径、数据存放位置、配置文件位置、ssl证书位置(需要配置的ssl的话才需要)。对于测试,如果所有节点都在同一台服务器上,直接使用同一个Kafka搭配多个不同配置文件启动多个实例就行。

资源规划

下面是通过一台服务器的多个端口仿照多台服务器,配置3个节点的集群,大概需要以下资源:

服务器地址broker端口controller端口安装位置配置文件数据证书位置
192.168.1.190929095/home/kafka-cluster/broker1/home/kafka-cluster/broker1/config/data/kafka/broker1/usr/ca/ssl
192.168.1.190939096/home/kafka-cluster/broker2/home/kafka-cluster/broker2/config/data/kafka/broker2/usr/ca/ssl2
192.168.1.190949097/home/kafka-cluster/broker3/home/kafka-cluster/broker3/config/data/kafka/broker3/usr/ca/ssl3

如果是在多台服务器上配置,可以直接配置好一台,复制server.properties或者整个kafka到其他服务器,这样可以减少很多重复性工作。只需要保证把证书生成到相同的路径下,就不用做重复其他工作了。

准备证书

证书生成可以参考上一篇单机Kafka配置ssl并在springboot使用
生成的各节点证书如下:
在这里插入图片描述

创建相关文件夹

Kafka及配置文件位置:
在这里插入图片描述
各节点数据位置:
在这里插入图片描述

配置文件

broker1配置文件:

#SSL配置部分
listeners=SSL://:9092
#下面的localhost需要改成ip,否则只有自己能连上
advertised.listeners=SSL://localhost:9092
security.inter.broker.protocol=SSL
ssl.endpoint.identification.algorithm=
ssl.keystore.location=/usr/ca/ssl/keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/usr/ca/ssl/truststore.jks
ssl.truststore.password=123456
#这里配置成双向认证
ssl.client.auth=required
# 不验证客户端证书
#ssl.client.auth=none# 在集群中的编号,只要保持唯一就行,
broker.id=1#Kraft模式的集群关键配置就是这一句,每个节点多配置了一个controller端口
controller.quorum.voters=1@kafka1:9095,2@kafka1:9096,3@kafka1:9097log.dirs=/data/kafka/broker1
#后面的配置都是默认的,可以不用管
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1 
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#虽然Kraft模式的集群不需要zookeeper,但是这个配置是必须要有的,否则会报错
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

broker2配置文件:

listeners=SSL://:9093
#下面的localhost需要改成ip,否则只有自己能连上
advertised.listeners=SSL://localhost:9093
security.inter.broker.protocol=SSL
ssl.endpoint.identification.algorithm=
ssl.keystore.location=/usr/ca/ssl2/keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/usr/ca/ssl/truststore.jks
ssl.truststore.password=123456
#这里配置成双向认证
ssl.client.auth=required
# 不验证客户端证书
#ssl.client.auth=none  broker.id=2controller.quorum.voters=1@kafka1:9095,2@kafka1:9096,3@kafka1:9097
log.dirs=/data/kafka/broker2#后面的配置都是默认的,可以不用管
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

broker3配置文件:

listeners=SSL://:9094
#下面的localhost需要改成ip,否则只有自己能连上
advertised.listeners=SSL://localhost:9094
security.inter.broker.protocol=SSL
ssl.endpoint.identification.algorithm=
ssl.keystore.location=/usr/ca/ssl3/keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/usr/ca/ssl/truststore.jks
ssl.truststore.password=123456
#这里配置成双向认证
ssl.client.auth=required
# 不验证客户端证书
#ssl.client.auth=none broker.id=3controller.quorum.voters=1@kafka1:9095,2@kafka1:9096,3@kafka1:9097
log.dirs=/data/kafka/broker3#后面的配置都是默认的,可以不用管
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

集群关键配置:

broker.id=3
controller.quorum.voters=1@kafka1:9095,2@kafka1:9096,3@kafka1:9097 

其他的配置项单机也要配置,集群只是保证broker id的唯一性且增加controller配置,controller配置中的kafka1为对应服务器hosts的主机名。

启动各Kafka节点

cd到对应Kafka路径下(比如broker1就cd /home/kafka-cluster/broker1)执行以下命令或者使用绝对路径执行,

./bin/kafka-server-start.sh   -daemon  config/server.properties

故障转移测试

故障前的集群状态:
在这里插入图片描述
原leader故障后从broker1转到broker2
在这里插入图片描述
恢复原来的leader节点之后,会自动切回去
在这里插入图片描述

spring boot集成

其他配置跟单机Kafka配置ssl并在springboot使用是一样的,只需要把bootstrap-servers改成多个节点的情况就行,其中kafka是项目服务器hosts配置的主机名

bootstrap-servers: kafka:9092,kafka:9093,kafka:9094

相关文章:

  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的产品驱动型增长策略研究
  • vs2022 调试时 控制台界面不出来
  • kafka实践与C++操作kafka
  • AI智能混剪核心技术解析(一):字幕与标题生成的三大支柱-字幕与标题生成-优雅草卓伊凡
  • 李宏毅NLP-7-CTC/RNN-T文本对齐
  • Jupyter Notebook 完全指南:从入门到高效使用
  • VS Code新手基础教程
  • MERIT:用于可靠且可解释的肝纤维化分期的多视图证据学习|文献速递-深度学习医疗AI最新文献
  • linux make使用方法
  • Rust 项目实战:命令行搜索工具 grep
  • 运动规划实战案例 | 图解基于状态晶格(State Lattice)的路径规划(附ROS C++/Python仿真)
  • 基于Flask实现豆瓣Top250电影可视化
  • [网页五子棋]项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)
  • 在 Windows 系统下使用 Qt 配置 OpenCV 和 MySql
  • 古腾堡编辑器教程:如何使用WordPress图库区块
  • 论文阅读: 2023 NeurIPS Jailbroken: How does llm safety training fail?
  • UE 5 C++设置物体位置和旋转,初始化虚幻引擎样条线、加载引用虚幻编辑器中的蓝图、设置虚幻编辑器中Actor大小
  • 微软技术赋能:解锁开发、交互与数据潜力,共探未来创新路
  • 频繁报FTPResponse 421 received.Server closed connection
  • pytorch问题汇总
  • 十大高端网站定制设计师/免费域名空间申请网址
  • 美食网站是怎么做的/营销型网站模板
  • 北京海淀月嫂家政公司/优化设计电子版
  • 想做cpa 没有网站怎么做/优化的意思
  • 建设银行温州支行官方网站/seo是指什么
  • 什么网站做的号/外贸企业网站设计公司