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 架构,减少了外部依赖,提高了部署效率。

相关推荐
听麟15 分钟前
HarmonyOS 6.0+ PC端多设备文件拖拽协同开发实战:手眼同行增强与分布式软总线深度应用
分布式·华为·harmonyos
indexsunny1 小时前
互联网大厂Java面试实战:从Spring Boot到Kafka的技术与业务场景解析
java·spring boot·redis·面试·kafka·技术栈·microservices
前端世界1 小时前
鸿蒙分布式网络性能优化实战:从通信建连到多设备协同
网络·分布式·harmonyos
雪碧聊技术2 小时前
什么是Zookeeper?
分布式·zookeeper
李白你好2 小时前
基于腾讯云函数 (SCF) 的分布式 IP 代理池.
分布式·tcp/ip·腾讯云
鱼跃鹰飞2 小时前
大厂面试真题-说说Kafka消息的不重复和不丢失
java·分布式·kafka
冷崖2 小时前
消息队列-kafka的安装(二)
分布式·kafka
冷崖2 小时前
消息队列-kafka的操作(三)
分布式·kafka
冷崖18 小时前
消息队列-kafka(一)
分布式·kafka
不光头强21 小时前
kafka学习要点
分布式·学习·kafka