7.2. 配置监听程序以连接到 Kafka 代理


使用监听程序进行与 Kafka 代理的客户端连接。AMQ Streams 提供了一个通用的 GenericKafkaListener 模式,它带有通过 Kafka 资源配置监听程序的属性。GenericKafkaListener 提供了灵活的监听程序配置方法。您可以指定属性来配置 内部监听程序 以在 OpenShift 集群内连接,或 外部监听程序 用于在 OpenShift 集群外部连接。

指定在监听器配置中公开 Kafka 的 连接类型。选择的类型取决于您的要求,以及您的环境和基础架构。支持以下监听程序类型:

内部监听程序
  • 在同一 OpenShift 集群内连接的内部
  • cluster-ip 使用每个代理 ClusterIP 服务公开 Kafka
外部监听程序
  • NodePort 使用 OpenShift 节点上的端口
  • LoadBalancer 使用负载均衡器服务
  • ingress 使用 Kubernetes IngressIngress NGINX Controller for Kubernetes (仅限 Kubernetes)
  • route 使用 OpenShift Route 和默认的 HAProxy 路由器(仅限 OpenShift)
重要

不要在 OpenShift 上使用 ingress,改为使用 route 类型。Ingress NGINX Controller 仅适用于 Kubernetes。路由类型 只在 OpenShift 中被支持。

内部 类型的监听程序配置使用无头服务和提供给代理 pod 的 DNS 名称。您可能需要将 OpenShift 网络加入到外部网络。在这种情况下,您可以配置 内部 类型监听程序(使用 useServiceDnsDomain 属性),以便不使用 OpenShift 服务 DNS 域(通常为 .cluster.local)。您还可以配置基于每个代理的 ClusterIP 服务的 Kafka 集群的 cluster-ip 类型。当您无法通过无头服务路由或者您希望纳入自定义访问机制时,这个选项是一个实用的选项。例如,您可以在为特定 Ingress 控制器或 OpenShift 网关 API 构建自己的类型的外部监听程序时使用此监听程序。

外部监听程序从需要不同身份验证机制的网络处理对 Kafka 集群的访问。您可以使用指定的连接机制(如 loadbalancer 或 route)为 OpenShift 环境外部访问配置外部监听程序。例如,负载均衡器可能不适用于某些基础架构,如裸机,节点端口提供更好的选项。

每个监听器都定义为 Kafka 资源中的一个数组。

侦听器配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
        configuration:
          useServiceDnsDomain: true
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
      - name: external
        port: 9094
        type: route
        tls: true
        configuration:
          brokerCertChainAndKey:
            secretName: my-secret
            certificate: my-certificate.crt
            key: my-key.key
    # ...
Copy to Clipboard Toggle word wrap

您可以根据需要配置多个监听程序,只要它们的名称和端口是唯一的。您还可以使用身份验证为安全连接配置监听程序。

如果要了解更多有关每种连接类型的 pros 和 cons,请参阅在 Strimzi 中访问 Apache Kafka

注意

如果您在使用外部监听程序时需要扩展 Kafka 集群,可能会触发所有 Kafka 代理的滚动更新。这取决于配置。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat