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>
如果 <hostname>
为空,则 Kafka 将使用 java.net.InetAddress.getCanonicalHostName()
类作为主机名。
多个监听器的配置示例
listeners=internal-1://:9092,internal-2://:9093,replication://:9094
当 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
公告的监听程序的名称必须与监听程序
属性中列出的名称匹配。
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
控制器监听程序
控制器配置用于连接和与协调集群的控制器通信,并管理用于跟踪代理和分区状态的元数据。
默认情况下,控制器和代理之间的通信使用专用的控制器监听程序。控制器负责协调管理任务,如分区领导变化,因此需要一个或多个这些监听器。
使用 controller.listener.names
属性指定用于控制器的监听程序。您可以使用 controller.quorum.voters
属性指定控制器投票的仲裁。仲裁(仲裁)为管理任务启用领导后续结构,领导人主动管理操作,并将后续者作为热待机,确保内存中的元数据一致性并促进故障转移。
listeners=CONTROLLER://0.0.0.0:9090 controller.listener.names=CONTROLLER controller.quorum.voters=1@localhost:9090
控制器 voters 的格式是 < cluster_id>@<hostname>:<port>
。
5.3.2. 提交日志
Apache Kafka 将其从制作者接收的所有记录存储在提交日志中。提交日志包含 Kafka 需要提供的记录形式的实际数据。请注意,这些记录与应用程序日志文件不同,该文件详细说明了代理的活动。
日志目录
您可以使用 log.dirs
属性文件配置日志目录,将提交日志存储在一个或多个日志目录中。它应设置为在安装过程中创建的 /var/lib/kafka
目录:
log.dirs=/var/lib/kafka
出于性能考虑,您可以将 log.dirs 配置为多个目录,并将其每个目录放在不同的物理设备中,以提高磁盘 I/O 性能。例如:
log.dirs=/var/lib/kafka1,/var/lib/kafka2,/var/lib/kafka3
5.3.3. 节点 ID
节点 ID 是集群中每个节点的唯一标识符(代理或控制器)。您可以分配一个大于或等于 0 的整数作为节点 ID。节点 ID 用于在重启或崩溃后识别节点,因此 ID 稳定,且不会随时间变化。
节点 ID 在 Kafka 配置属性文件中配置:
node.id=1