2.5. Kafka MirrorMaker 集群配置


使用 KafkaMirrorMaker 资源配置 Kafka MirrorMaker 部署。KafkaMirrorMaker 在 Kafka 集群之间复制数据。

第 6.2.108 节 “KafkaMirrorMaker 模式参考” 描述 KafkaMirrorMaker 资源的完整模式。

您可以将 AMQ Streams 与 MirrorMaker 或 MirrorMaker 2 搭配使用。MirrorMaker 2 是最新版本,提供更有效地在 Kafka 集群间镜像数据的方法。

重要

Kafka MirrorMaker 1 (称为文档中的 MirrorMaker )已在 Apache Kafka 3.0.0 中弃用,并将在 Apache Kafka 4.0.0 中删除。因此,在 AMQ Streams 中还已弃用了用于部署 Kafka MirrorMaker 1 的 KafkaMirrorMaker 自定义资源。当我们采用 Apache Kafka 4.0.0 时,KafkaMirrorMaker 资源将从 AMQ Streams 中删除。作为替代方法,在 IdentityReplicationPolicy 中使用 KafkaMirrorMaker2 自定义资源。

2.5.1. 配置 Kafka MirrorMaker

使用 KafkaMirrorMaker 资源的属性来配置 Kafka MirrorMaker 部署。

您可以使用 TLS 或 SASL 身份验证为生产者和使用者配置访问控制。此流程显示在消费者和制作者一侧使用 TLS 加密和 mTLS 身份验证的配置。

先决条件

  • 有关运行的步骤,请参阅在 OpenShift 中部署和升级 AMQ Streams 指南:

  • 源和目标集群必须可用

流程

  1. 编辑 KafkaMirrorMaker 资源的 spec 属性。

    您可以配置的属性显示在以下示例配置中:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaMirrorMaker
    metadata:
      name: my-mirror-maker
    spec:
      replicas: 3 
    1
    
      consumer:
        bootstrapServers: my-source-cluster-kafka-bootstrap:9092 
    2
    
        groupId: "my-group" 
    3
    
        numStreams: 2 
    4
    
        offsetCommitInterval: 120000 
    5
    
        tls: 
    6
    
          trustedCertificates:
          - secretName: my-source-cluster-ca-cert
            certificate: ca.crt
        authentication: 
    7
    
          type: tls
          certificateAndKey:
            secretName: my-source-secret
            certificate: public.crt
            key: private.key
        config: 
    8
    
          max.poll.records: 100
          receive.buffer.bytes: 32768
          ssl.cipher.suites: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 
    9
    
          ssl.enabled.protocols: TLSv1.2
          ssl.protocol: TLSv1.2
          ssl.endpoint.identification.algorithm: HTTPS 
    10
    
      producer:
        bootstrapServers: my-target-cluster-kafka-bootstrap:9092
        abortOnSendFailure: false 
    11
    
        tls:
          trustedCertificates:
          - secretName: my-target-cluster-ca-cert
            certificate: ca.crt
        authentication:
          type: tls
          certificateAndKey:
            secretName: my-target-secret
            certificate: public.crt
            key: private.key
        config:
          compression.type: gzip
          batch.size: 8192
          ssl.cipher.suites: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 
    12
    
          ssl.enabled.protocols: TLSv1.2
          ssl.protocol: TLSv1.2
          ssl.endpoint.identification.algorithm: HTTPS 
    13
    
      include: "my-topic|other-topic" 
    14
    
      resources: 
    15
    
        requests:
          cpu: "1"
          memory: 2Gi
        limits:
          cpu: "2"
          memory: 2Gi
      logging: 
    16
    
        type: inline
        loggers:
          mirrormaker.root.logger: "INFO"
      readinessProbe: 
    17
    
        initialDelaySeconds: 15
        timeoutSeconds: 5
      livenessProbe:
        initialDelaySeconds: 15
        timeoutSeconds: 5
      metricsConfig: 
    18
    
       type: jmxPrometheusExporter
       valueFrom:
         configMapKeyRef:
           name: my-config-map
           key: my-key
      jvmOptions: 
    19
    
        "-Xmx": "1g"
        "-Xms": "1g"
      image: my-org/my-image:latest 
    20
    
      template: 
    21
    
        pod:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                - labelSelector:
                    matchExpressions:
                      - key: application
                        operator: In
                        values:
                          - postgresql
                          - mongodb
                  topologyKey: "kubernetes.io/hostname"
        connectContainer: 
    22
    
          env:
            - name: JAEGER_SERVICE_NAME
              value: my-jaeger-service
            - name: JAEGER_AGENT_HOST
              value: jaeger-agent-name
            - name: JAEGER_AGENT_PORT
              value: "6831"
      tracing: 
    23
    
        type: jaeger
    1
    2
    面向消费者和生成器的 bootstrap 服务器
    3
    4
    5
    6
    TLS 加密,使用密钥名称,其中 TLS 证书存储为 X.509 格式供消费者或生成者使用 。如果证书存储在同一 secret 中,它可以多次列出。
    7
    消费者或生成者的身份验证,指定为 mTLS基于令牌的 OAuth、基于 SASL 的 SCRAM-SHA-256/SCRAM-SHA-512,或 PLAIN
    8
    使用者制作者 的 Kafka 配置选项。
    9
    外部监听程序的 SSL 属性 使用 TLS 版本的特定 密码套件 运行。
    10
    通过设置为 HTTPS 来启用主机名验证。空字符串禁用验证。
    11
    如果 abortOnSendFailure 属性设为 true,则 Kafka MirrorMaker 将退出,容器将在消息的发送失败后重启。
    12
    外部监听程序的 SSL 属性 使用 TLS 版本的特定 密码套件 运行。
    13
    通过设置为 HTTPS 来启用主机名验证。空字符串禁用验证。
    14
    包含的主题 从源镜像到目标 Kafka 集群。
    15
    支持的资源、当前 cpu 和内存的 保留请求,以及指定可消耗的最大资源的限制。
    16
    指定 日志记录器和日志级别 直接(内联)或通过 ConfigMap 间接添加(外部)。自定义 ConfigMap 必须放在 log4j.propertieslog4j2.properties 键下。MirrorMaker 具有一个名为 mirrormaker.root.logger 的日志记录器。您可以将日志级别设置为 INFO、ERROR、WARN、TRACE、DEBUG、FATAL 或 OFF。
    17
    使用 HealthCheck 可以知道何时重启一个容器(存活度)以及何时一个容器可以开始接受流量(就绪度)。
    18
    Prometheus metrics,通过引用本例中的 Prometheus JMX exporter 配置的 ConfigMap 来启用。您可以使用对在 metricsConfig.valueFrom.configMapKeyRef.key 下包含空文件的 ConfigMap 的引用来启用指标。
    19
    JVM 配置选项 优化运行 Kafka MirrorMaker 的虚拟机(VM)的性能。
    20
    ADVANCED OPTION: 容器镜像配置,这只在特殊情况下建议使用。
    21
    模板自定义.这里的 pod 使用反关联性调度,因此 pod 不会调度到具有相同主机名的节点。
    22
    为分布式追踪设置环境变量。
    23
    为 Jaeger 启用分布式追踪。
    警告

    abortOnSendFailure 属性设置为 false 时,生产者会尝试在主题中发送下一个消息。原始消息可能会丢失,因为没有尝试重新发送失败的消息。

  2. 创建或更新资源:

    oc apply -f <your-file>

2.5.2. Kafka MirrorMaker 集群资源列表

以下资源由 OpenShift 集群中的 Cluster Operator 创建:

<mirror-maker-name>-mirror-maker
负责创建 Kafka MirrorMaker Pod 的部署。
<mirror-maker-name>-config
包含 Kafka MirrorMaker 的辅助配置的 ConfigMap,并由 Kafka 代理 Pod 作为一个卷挂载。
<mirror-maker-name>-mirror-maker
为 Kafka MirrorMaker worker 节点配置的 Pod Disruption Budget。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部