4.2. 监听器
监听器用于连接到 Kafka 代理。每个 Kafka 代理都可以配置为使用多个监听程序。每个侦听器都需要不同的配置,以便它可以侦听不同的端口或网络接口。
要配置监听程序,请编辑配置文件中的 监听程序
属性(/opt/kafka/config/server.properties
)。以逗号分隔列表的形式将 监听程序添加到监听程序
属性。配置每个属性,如下所示:
<listenerName>://<hostname>:<port>
<listenerName>://<hostname>:<port>
如果 <hostname>
为空,则 Kafka 将使用 java.net.InetAddress.getCanonicalHostName()
类作为主机名。
多个监听器的配置示例
listeners=internal-1://:9092,internal-2://:9093,replication://:9094
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
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
listeners=REPLICATION://0.0.0.0:9091
inter.broker.listener.name=REPLICATION
control plane 监听程序
默认情况下,控制器和其他代理之间的通信使用 inter-broker 侦听器。控制器负责协调管理任务,如分区领导变化。
您可以为控制器连接启用专用 control plane 侦听器。control plane 侦听器可以分配给您选择的端口。
要启用 control plane 侦听程序,请使用监听程序名称配置 control.plane.listener.name
属性:
listeners=CONTROLLER://0.0.0.0:9090,REPLICATION://0.0.0.0:9091 ... control.plane.listener.name=CONTROLLER
listeners=CONTROLLER://0.0.0.0:9090,REPLICATION://0.0.0.0:9091
...
control.plane.listener.name=CONTROLLER
启用 control plane 侦听程序可能会提高集群性能,因为控制器通信不会因为代理中的数据复制不会延迟。数据复制通过 inter-broker 侦听器继续。
如果没有配置 control.plane.listener
,控制器连接将使用 inter-broker 侦听器。
如需更多信息,请参阅 附录 A, 代理配置参数。