bitnami/kafka环境变量讲解

复制代码
- KAFKA_CFG_NODE_ID=0
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
讲

这是一个 Kafka KRaft 模式(无 ZooKeeper)的配置。让我逐一解释这些环境变量的含义:

配置详解

1. 节点身份配置

bash 复制代码
KAFKA_CFG_NODE_ID=0
  • 设置 Kafka 节点的唯一标识符为 0

2. 节点角色配置

bash 复制代码
KAFKA_CFG_PROCESS_ROLES=controller,broker
  • 该节点同时担任 控制器(controller)代理(broker) 角色
  • 在 KRaft 模式中,控制器负责元数据管理,代理负责消息存储和传输

3. 监听器配置

bash 复制代码
KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
  • 定义两个监听器:
    • PLAINTEXT://:9092:客户端通信端口(broker 功能)
    • CONTROLLER://:9093:控制器间通信端口(controller 功能)

4. 安全协议映射

bash 复制代码
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  • 指定各监听器使用的安全协议
  • 这里都使用明文协议(PLAINTEXT),生产环境应使用 SSL/SASL

5. 控制器集群配置

bash 复制代码
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
  • 定义控制器投票成员
  • 格式:节点ID@主机:端口
  • 这里只有一个控制器节点(0)在 kafka:9093

6. 控制器监听器名称

bash 复制代码
KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  • 指定用于控制器通信的监听器名称

架构特点

这是一个 单节点 KRaft 集群

  • 集成了控制器和代理功能
  • 使用 KRaft 共识算法替代 ZooKeeper
  • 适用于开发和测试环境

生产环境建议

对于生产环境,建议:

bash 复制代码
# 多节点配置示例
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka1:9093,1@kafka2:9093,2@kafka3:9093
# 启用安全协议
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:SSL,PLAINTEXT:SASL_SSL

这种配置简化了 Kafka 架构,减少了外部依赖,提高了部署效率。

相关推荐
无心水2 小时前
【分布式利器:Kafka】Kafka基本原理详解:架构、流转机制与高吞吐核心(附实战配置)
分布式·架构·kafka·partition·零拷贝·broker·分布式流处理平台
踏浪无痕4 小时前
准备手写Simple Raft(一):想通Raft的核心问题
分布式·后端
千百元4 小时前
kafka验证消息时报错
分布式·kafka
c***V3235 小时前
后端消息队列选型:RabbitMQ与Kafka
分布式·kafka·rabbitmq
百***06016 小时前
RabbitMQ 的介绍与使用
分布式·rabbitmq·ruby
9***Y486 小时前
后端消息队列监控工具,Kafka Eagle
分布式·kafka
启明真纳6 小时前
用 Logstash 把 PostgreSQL 数据实时导出到 Kafka
数据库·postgresql·kafka
q***213813 小时前
分布式多卡训练(DDP)踩坑
分布式
槁***耿19 小时前
后端分布式事务解决方案,Seata与Hmily对比
分布式