2.5. Kafka MirrorMaker クラスターの設定


KafkaMirrorMaker リソースを使用して Kafka MirrorMaker デプロイメントを設定します。KafkaMirrorMaker は、Kafka クラスター間でデータを複製します。

KafkaMirrorMaker スキーマ参照」 KafkaMirrorMaker リソースの完全なスキーマについて説明します。

AMQ Streams は MirrorMaker または MirrorMaker 2 で使用できます。MirrorMaker 2 は最新バージョンで、Kafka クラスター間でデータをミラーリングするためのより効率的な方法を提供します。

重要

Kafka MirrorMaker 1 (ドキュメントでは単に MirrorMaker と呼ばれる) は Apache Kafka 3.0.0 で非推奨となり、Apache Kafka 4.0.0 で削除されます。そのため、Kafka MirrorMaker 1 のデプロイに使用される KafkaMirrorMaker カスタムリソースも、AMQ Streams で非推奨となりました。Apache Kafka 4.0.0 を導入すると、KafkaMirrorMaker リソースは AMQ Streams から削除されます。代わりに、IdentityReplicationPolicyKafkaMirrorMaker2 カスタムリソースを使用します。

2.5.1. Kafka MirrorMaker の設定

KafkaMirrorMaker リソースのプロパティーを使用して、Kafka MirrorMaker デプロイメントを設定します。

TLS または SASL 認証を使用して、プロデューサーおよびコンシューマーのアクセス制御を設定できます。この手順では、コンシューマーおよびプロデューサー側で mTLS による暗号化および認証を使用する設定を説明します。

前提条件

  • 以下を実行する方法については、OpenShift での AMQ Streams のデプロイおよびアップグレード を参照すること。

  • ソースおよびターゲットの Kafka クラスターが使用できる必要があります。

手順

  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
    Copy to Clipboard Toggle word wrap
    1
    2
    コンシューマーおよびプロデューサーの ブートストラップサーバー
    3
    4
    5
    6
    コンシューマーまたはプロデューサーの TLS 証明書が X.509 形式で保存される、キー名のある TLS による暗号化。複数の証明書が同じシークレットに保存されている場合は、複数回リストできます。
    7
    mTLSトークンベースの OAuth、SASL ベース SCRAM-SHA-256/SCRAM-SHA-512、または PLAIN として指定されたコンシューマーまたはプロデューサーの認証。
    8
    コンシューマー および プロデューサー の Kafka 設定オプション。
    9
    TLS バージョンの特定の 暗号スイート と実行される外部リスナーの SSL プロパティー
    10
    HTTPS に設定することで、ホスト名の検証が有効 になります。空の文字列を指定すると検証が無効になります。
    11
    abortOnSendFailure プロパティーtrue に設定されている場合、メッセージの送信に失敗した後、Kafka MirrorMaker は終了し、コンテナーは再起動します。
    12
    TLS バージョンの特定の 暗号スイート と実行される外部リスナーの SSL プロパティー
    13
    HTTPS に設定することで、ホスト名の検証が有効 になります。空の文字列を指定すると検証が無効になります。
    14
    ソースからターゲット Kafka クラスターにミラーリングされた 含まれるトピック
    15
    サポートされているリソース (現在は cpumemory) の予約と、消費可能な最大リソースを指定するための制限を要求します。
    16
    指定された ロガーおよびログレベル が ConfigMap を介して直接的に (inline) または間接的に (external) に追加されます。カスタム ConfigMap は、log4j.properties または log4j2.properties キー下に配置する必要があります。MirrorMaker には mirrormaker.root.logger と呼ばれる単一のロガーがあります。ログレベルは INFO、ERROR、WARN、TRACE、DEBUG、FATAL、または OFF に設定できます。
    17
    コンテナーを再起動するタイミング (liveness) およびコンテナーがトラフィックを許可できるタイミング (readiness) を把握するための ヘルスチェック
    18
    Prometheus メトリクス。この例では、Prometheus JMX エクスポーターの設定が含まれる ConfigMap を参照して有効になります。metricsConfig.valueFrom.configMapKeyRef.key 配下に空のファイルが含まれる ConfigMap の参照を使用して、追加設定なしでメトリクスを有効にできます。
    19
    Kafka MirrorMaker を実行している仮想マシン (VM) のパフォーマンスを最適化するための JVM 設定オプション
    20
    高度な任意設定: 特別な場合のみ推奨される コンテナーイメージの設定
    21
    テンプレートのカスタマイズ。ここでは、Pod は非アフィニティーでスケジュールされるため、Pod は同じホスト名のノードではスケジュールされません。
    22
    分散トレース用に環境変数が設定されます。
    23
    Jaeger では分散トレースが有効になっています。
    警告

    abortOnSendFailure プロパティーが false に設定されると、プロデューサーはトピックの次のメッセージを送信しようとします。失敗したメッセージは再送されないため、元のメッセージが失われる可能性があります。

  2. リソースを作成または更新します。

    oc apply -f <your-file>
    Copy to Clipboard Toggle word wrap

2.5.2. Kafka MirrorMaker クラスターリソースの一覧

以下のリソースは、OpenShift クラスターの Cluster Operator によって作成されます。

<mirror-maker-name>-mirror-maker
Kafka MirrorMaker Pod の作成を担当するデプロイメント。
<mirror-maker-name>-config
Kafka MirrorMaker の補助設定が含まれ、Kafka ブローカー Pod によってボリュームとしてマウントされる ConfigMap。
<mirror-maker-name>-mirror-maker
Kafka MirrorMaker ワーカーノードに設定された Pod の Disruption Budget。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat