5.3. 配置 Kafka


Kafka 使用属性文件来存储静态配置。配置文件的建议位置为 /opt/kafka/config/kraft/。该配置文件必须可由 kafka 用户读取。

Apache Kafka 的流包括示例配置文件,它突出显示了该产品的基本和高级功能。您可以在 Apache Kafka 安装的 Streams 中的 config/kraft/ 下找到,如下所示:

  • (默认)在组合模式下运行的节点的 config/kraft/server.properties
  • 用于作为代理运行的节点的 config/kraft/broker.properties
  • config/kraft/controller.properties,用于作为控制器运行的节点

本章解释了最重要的配置选项。

5.3.1. 监听器

监听器用于连接到 Kafka 代理。每个 Kafka 代理都可以配置为使用多个监听程序。每个侦听器都需要不同的配置,以便它可以侦听不同的端口或网络接口。

要配置监听程序,请编辑 Kafka 配置属性文件中的 listeners 属性。以逗号分隔列表的形式将 监听程序添加到监听程序 属性。配置每个属性,如下所示:

<listener_name>://<hostname>:<port>
Copy to Clipboard Toggle word wrap

如果 <hostname> 为空,则 Kafka 将使用 java.net.InetAddress.getCanonicalHostName() 类作为主机名。

多个监听器的配置示例

listeners=internal-1://:9092,internal-2://:9093,replication://:9094
Copy to Clipboard Toggle word wrap

当 Kafka 客户端连接到 Kafka 集群时,它首先连接到 bootstrap 服务器,这是集群节点之一。bootstrap 服务器为客户端提供集群中所有代理的列表,客户端会单独连接到每个代理。代理列表基于配置 的监听程序

advertised 监听程序

另外,您可以使用 advertised.listeners 属性为客户端提供不同于监听程序属性中给出的一系列不同的监听程序地址。如果其他网络基础架构(如代理)在客户端和代理之间,或者会使用外部 DNS 名称而不是 IP 地址,这很有用。

advertised.listeners 属性的格式与 listeners 属性相同。

公告监听程序的配置示例

listeners=internal-1://:9092,internal-2://:9093
advertised.listeners=internal-1://my-broker-1.my-domain.com:1234,internal-2://my-broker-1.my-domain.com:1235
Copy to Clipboard Toggle word wrap

注意

公告的监听程序的名称必须与监听程序属性中列出的名称匹配。

inter-broker 监听程序

inter-broker 监听程序 用于 Kafka 代理之间的通信。需要代理间通信:

  • 在不同代理间协调工作负载
  • 在存储在不同代理中的分区间复制消息

inter-broker 侦听器可以分配给您选择的端口。当配置了多个监听程序时,您可以在代理配置的 inter.broker.listener.name 属性中定义 inter-broker 监听程序的名称。

在这里,inter-broker 侦听器被命名为 REPLICATION

listeners=REPLICATION://0.0.0.0:9091
inter.broker.listener.name=REPLICATION
Copy to Clipboard Toggle word wrap

控制器监听程序

控制器配置用于连接和与协调集群的控制器通信,并管理用于跟踪代理和分区状态的元数据。

默认情况下,控制器和代理之间的通信使用专用的控制器监听程序。控制器负责协调管理任务,如分区领导变化,因此需要一个或多个这些监听器。

使用 controller.listener.names 属性指定用于控制器的监听程序。您可以使用 controller.quorum.voters 属性指定控制器投票的仲裁。仲裁(仲裁)为管理任务启用领导后续结构,领导人主动管理操作,并将后续者作为热待机,确保内存中的元数据一致性并促进故障转移。

listeners=CONTROLLER://0.0.0.0:9090
controller.listener.names=CONTROLLER
controller.quorum.voters=1@localhost:9090
Copy to Clipboard Toggle word wrap

控制器 voters 的格式是 < cluster_id>@<hostname>:<port>

5.3.2. 数据日志

Apache Kafka 将从生成者接收的所有记录存储在日志中。日志包含 Kafka 需要交付的实际数据,格式为记录。请注意,这些记录与应用程序日志文件不同,该文件详细说明了代理的活动。

日志目录

您可以使用服务器配置属性文件中的 log.dirs 属性配置日志目录,将日志存储在一个或多个日志目录中。它应设置为在安装过程中创建的 /var/lib/kafka 目录:

数据日志配置

log.dirs=/var/lib/kafka
Copy to Clipboard Toggle word wrap

出于性能考虑,您可以将 log.dirs 配置为多个目录,并将它们分别放在不同的物理设备中,以提高磁盘 I/O 性能。例如:

配置多个目录

log.dirs=/var/lib/kafka1,/var/lib/kafka2,/var/lib/kafka3
Copy to Clipboard Toggle word wrap

5.3.3. 元数据日志

控制器在每个节点上使用作为单分区主题(__cluster_metadata)存储的元数据日志。它记录集群的状态,在代理、副本、主题和分区上存储信息,包括不同步副本和分区领导状态。

元数据日志目录

您可以使用 metadata.log.dir 属性配置用于存储元数据日志的目录。默认情况下,如果没有设置此属性,Kafka 使用 log.dirs 属性来决定数据日志和元数据日志的存储目录。元数据日志放置在为 log.dirs 指定的第一个目录中。

从数据操作隔离元数据操作可以提高可管理性,并可能导致性能提高。要为元数据日志设置特定的目录,请在服务器配置属性文件中包含 metadata.log.dir 属性。

例如:

元数据日志配置

log.dirs=/var/lib/kafka
metadata.log.dir=/var/lib/kafka-metadata
Copy to Clipboard Toggle word wrap

注意

Kafka 工具可用于检查和调试元数据日志。如需更多信息,请参阅 Apache Kafka 文档

5.3.4. 节点 ID

节点 ID 是集群中每个节点的唯一标识符(代理或控制器)。您可以分配一个大于或等于 0 的整数作为节点 ID。节点 ID 用于在重启或崩溃后识别节点,因此 ID 稳定,且不会随时间变化。

节点 ID 在 Kafka 配置属性文件中配置:

node.id=1
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat