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

相关推荐
数翊科技37 分钟前
深度解析 HexaDB分布式 DDL 的全局一致性
分布式
Tony Bai4 小时前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
雨中飘荡的记忆11 小时前
Kafka入门:从零开始掌握消息队列
kafka
txinyu的博客11 小时前
HTTP服务实现用户级窗口限流
开发语言·c++·分布式·网络协议·http
独自破碎E11 小时前
RabbitMQ中的Prefetch参数
分布式·rabbitmq
深蓝电商API12 小时前
Scrapy+Rredis实现分布式爬虫入门与优化
分布式·爬虫·scrapy
indexsunny13 小时前
互联网大厂Java面试实战:Spring Boot与微服务在电商场景的应用解析
java·spring boot·redis·微服务·kafka·gradle·maven
回家路上绕了弯13 小时前
定期归档历史数据实战指南:从方案设计到落地优化
分布式·后端
rchmin15 小时前
Distro与Raft协议对比分析
分布式·cap
小辉笔记15 小时前
kafka原理总结
分布式·kafka