7.3. Kafka 集群配置


kafka 集群包含一个或多个代理。要使生产者和消费者能够访问代理中的主题,Kafka 配置必须定义如何存储数据,以及如何访问数据。您可以将 Kafka 集群配置为使用多个代理节点在机架之间运行。

存储

Kafka 和 ZooKeeper 将数据存储到磁盘上。

AMQ Streams 需要通过 StorageClass 置备块存储。存储的文件系统格式为 XFSEXT4。支持三种类型的数据存储:

Ephemeral (推荐只在开发时使用)
临时存储在实例生命周期内存储数据。实例重启时数据会丢失。
持久性
持久性存储与独立于实例生命周期的长期数据存储相关。
JBOD (Just a Bunch Disks,仅适用于 Kafka)
JBOD 允许您使用多个磁盘将提交日志存储到每个代理中。

如果基础架构支持,可以增加现有 Kafka 集群使用的磁盘容量。

监听器

侦听器配置客户端如何连接到 Kafka 集群。

通过在 Kafka 集群中为每个监听程序指定唯一名称和端口,您可以配置多个监听程序。

支持以下监听程序类型:

  • 用于在 OpenShift 中访问的内部监听程序
  • 用于在 OpenShift 外部进行访问的 外部监听器

您可以为监听器启用 TLS 加密,并配置身份验证

内部监听程序通过指定一个 internal 类型来公开 Kafka:

  • 在同一 OpenShift 集群内连接的内部
  • cluster-ip 使用针对每个代理的 ClusterIP 服务公开 Kafka

外部监听程序通过指定一个外部 类型 来公开 Kafka:

  • 使用 OpenShift 路由和默认 HAProxy 路由器的路由
  • LoadBalancer 使用负载均衡器服务
  • NodePort 使用 OpenShift 节点上的端口
  • Ingress 使用 OpenShift IngressIngress NGINX Controller for Kubernetes
注意

使用 cluster-ip 类型可以添加您自己的访问机制。例如,您可以将监听程序与自定义 Ingress 控制器或 OpenShift 网关 API 搭配使用。

如果您使用 OAuth 2.0 进行基于令牌的身份验证,您可以将监听程序配置为使用授权服务器。

机架感知
机架代表数据中心,或数据中心中的机架,或可用性区域。配置机架感知,以在机架之间分发 Kafka 代理 pod 和主题副本。使用 rack 属性启用机架感知,以指定 topologyKeytopologyKey 是分配给 OpenShift worker 节点的标签的名称,用于标识机架。AMQ Streams 为每个 Kafka 代理分配一个机架 ID。Kafka 代理使用 ID 在机架间分布分区副本。您还可以指定 RackAwareReplicaSelector 选择器插件,以用于机架感知。该插件与代理和消费者的机架 ID 匹配,以便消息从最接近的副本消耗。要使用插件,消费者还必须启用机架感知。您可以在 Kafka Connect、M MirrorMaker 2 和 Kafka Bridge 中启用机架感知。

显示 Kafka 配置的 YAML 示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    listeners:
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
      - name: external1
        port: 9094
        type: route
        tls: true
        authentication:
          type: tls
    # ...
    storage:
      type: persistent-claim
      size: 10000Gi
    # ...
    rack:
      topologyKey: topology.kubernetes.io/zone
    config:
      replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector
    # ...
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.