基于kraft部署kafka集群

kafka介绍

Apache Kafka 是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
Kafka是一个拥有高吞吐、可持久化、可水平扩展,支持流式数据处理等多种特性的分布式消息流处理中间件,采用分布式消息发布与订阅机制,在日志收集、流式数据传输、在线/离线系统分析、实时监控等领域有广泛的应用。
在这里插入图片描述

基于kraft部署集群

集群节点规划

主机名 IP 地址 角色 node-id OS
kafka01 192.168.72.31 broker/controller 1 Ubuntu22.04
kafka02 192.168.72.32 broker/controller 2 Ubuntu22.04
kafka03 192.168.72.33 broker/controller 3 Ubuntu22.04

准备3个节点,每个节点同时作为broker和controller运行。

集群架构如下:
在这里插入图片描述

基础环境配置

以下操作在所有节点执行。

配置主机名

hostnamectl set-hostname kafka01
hostnamectl set-hostname kafka02
hostnamectl set-hostname kafka03

配置hosts解析,提前部署zookeeper集群:

cat > /etc/hosts <<EOF
192.168.72.31 kafka01
192.168.72.32 kafka02
192.168.72.33 kafka03
EOF

安装java环境

apt update -y
apt install -y openjdk-21-jdk

创建Kafka用户

sudo groupadd kafka
sudo useradd -m -s /bin/bash -g kafka kafka
sudo passwd kafka

安装kafka

以下操作在所有节点执行。

wget https://dlcdn.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
tar -zxvf kafka_2.13-3.9.0.tgz -C /opt
ln -s /opt/kafka_2.13-3.9.0 /opt/kafka

配置环境变量

cat > /etc/profile.d/kafka.sh <<'EOF'
export KAFKA_HOME=/opt/kafka
export PATH=$KAFKA_HOME/bin:$PATH
EOF
source /etc/profile

修改配置文件

为broker设置角色,以便他们也可以成为控制器。使用配置属性文件应用broker配置,包括角色设置。broker配置根据角色有所不同。KRaft 提供了三个示例broker配置属性文件。

  • /opt/kafka/config/kraft/broker.properties 有一个broker角色的示例配置,如果正在配置broker节点,那么需要选择该配置文件
  • /opt/kafka/config/kraft/controller.properties 有一个控制器角色的示例配置,如果正在配置控制器节点,那么需要选择该配置文件
  • /opt/kafka/config/kraft/server.properties 有一个组合角色的示例配置,如果正在配置broker和控制器节点,那么需要选择该配置文件

可以根据这些示例属性文件来配置broker,本示例使用 server.properties 配置。

修改kafka01节点配置文件

cp /opt/kafka/config/kraft/server.properties{
   
   ,.bak}
cat <<EOF > /opt/kafka/config/kraft/server.properties
process.roles=broker,controller
node.id=1
num.partitions=6
default.replication.factor=2
min.insync.replicas=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=2
transaction.state.log.min.isr=1
controller.quorum.voters=1@kafka01:9093,2@kafka02:9093,3@kafka03:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://kafka01:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
log.dirs=/data/kafka/kraft-combined-logs
log.retention.hours=168 
EOF

修改kafka02节点配置文件

cp /opt/kafka/config/kraft/server.properties{
   
   ,.bak}
cat <<EOF > /opt/kafka/config/kraft/server.properties
process.roles=broker,controller
node.id=2
num.partitions=6
default.replication.factor=2
min.insync.replicas=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=2
transaction.state.log.min.isr=1
controller.quorum.voters=1@kafka01:9093,
### Kafka 集群部署方案:不使用 ZooKeeper 的替代方案 自 Apache Kafka 2.8 版本起,引入了 KRaft (Kafka Raft Metadata)[^1]模式作为元数据管理的新机制,从而允许 Kafka 不再依赖于外部的 ZooKeeper 实例来管理和协调集群中的元数据。 #### 启用 KRaft 模式的配置方法 为了启用 KRaft 模式,在启动 Kafka Broker 前需修改 `server.properties` 文件并设置如下参数: ```properties process.roles=broker,controller node.id=<unique_node_id> listeners=PLAINTEXT://<host>:9092 controller.quorum.voters=<comma_separated_list_of_controller_nodes> ``` 其中 `<unique_node_id>` 是每个节点唯一的标识符;而 `<comma_separated_list_of_controller_nodes>` 则指定了参与选举控制器的角色列表,格式为 `id@hostname:port,id@hostname:port,...`. 对于已有的基于 ZooKeeper 的 Kafka 安装环境来说,如果想要迁移到 KRaft 模式,则需要先备份现有数据,并按照官方文档指导完成迁移过程. #### 运行脚本调整 当采用 KRaft 方式时,不再通过 ZooKeeper 来创建或删除主题。此时应直接调用 Kafka 自带工具命令来进行这些操作: ```bash bin/kafka-topics.sh --create --topic my_topic_name \ --partitions 3 --replication-factor 2 \ --bootstrap-server localhost:9092 ``` 同样地,查看、描述以及删除 Topic 可以分别执行对应的子命令选项[--bootstrap-server 参数指定目标服务器地址][^2]: ```bash # 查看所有 topic bin/kafka-topics.sh --list --bootstrap-server localhost:9092 # 描述特定 topic bin/kafka-topics.sh --describe --topic my_topic_name --bootstrap-server localhost:9092 # 删除 topic bin/kafka-topics.sh --delete --topic my_topic_name --bootstrap-server localhost:9092 ``` 以上展示了如何在不需要 ZooKeeper 支持的情况下构建和维护一个完整的 Kafka 生产者/消费者消息传递平台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

willops

你的鼓励将是我创作的最大动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值