検索

第9章 AMQ Streams のダウングレード

download PDF

アップグレードしたバージョンの AMQ Streams で問題が発生した場合は、インストールを直前のバージョンに戻すことができます。

以下のダウングレードを実行できます。

  1. Cluster Operator を以前の AMQ Streams バージョンに戻します。

  2. すべての Kafka ブローカーとクライアントアプリケーションを、以前の Kafka バージョンにダウングレードします。

以前のバージョンの AMQ Streams では使用している Kafka バージョンがサポートされない場合、メッセージに追加されるログメッセージ形式のバージョンが一致すれば Kafka をダウングレードすることができます。

9.1. Cluster Operator の以前のバージョンへのダウングレード

AMQ Streams で問題が発生した場合は、インストールを元に戻すことができます。

この手順では、Cluster Operator デプロイメントを以前のバージョンにダウングレードする方法を説明します。

前提条件

手順

  1. 既存の Cluster Operator リソース (/install/cluster-operator ディレクトリー内) に追加した設定変更を覚えておきます。すべての変更は、以前のバージョンの Cluster Operator によって上書きされます。
  2. カスタムリソースを元に戻して、ダウングレードする AMQ Streams バージョンで利用可能なサポート対象の設定オプションを反映します。
  3. Cluster Operator を更新します。

    1. Cluster Operator を実行している namespace に従い、以前のバージョンのインストールファイルを編集します。

      Linux の場合は、以下を使用します。

      sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml

      MacOS の場合は、以下を使用します。

      sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
    2. 既存の Cluster Operator Deployment で 1 つ以上の環境変数を編集した場合、install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml ファイルを編集し、これらの環境変数を使用します。
  4. 設定を更新したら、残りのインストールリソースとともにデプロイします。

    oc replace -f install/cluster-operator

    ローリングアップデートが完了するのを待ちます。

  5. Kafka Pod のイメージを取得して、アップグレードが正常に完了したことを確認します。

    oc get pod my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'

    イメージタグには、新しい AMQ Streams バージョンと Kafka バージョンが順に示されます。例: NEW-STRIMZI-VERSION-kafka-CURRENT-KAFKA-VERSION

Cluster Operator は以前のバージョンにダウングレードされました。

9.2. Kafka のダウングレード

Kafka バージョンのダウングレードは、Cluster Operator によって実行されます。

9.2.1. ダウングレードでの Kafka バージョンの互換性

Kafka のダウングレードは、互換性のある現在およびターゲットの Kafka バージョン と、メッセージがログに記録された状態に依存します。

そのバージョンが、クラスターでこれまで使用された inter.broker.protocol.version 設定をサポートしない場合、または新しい log.message.format.version を使用するメッセージメッセージにメッセージが追加された場合は、下位バージョンの Kafka に戻すことはできません。

inter.broker.protocol.version は、__consumer_offsets に書き込まれたメッセージのスキーマなど、ブローカーによって保存される永続メタデータに使用されるスキーマを判断します。クラスターで以前使用された inter.broker.protocol.version を認識しない Kafka バージョンにダウングレードすると、ブローカーが認識できないデータに遭遇します。

ダウングレードする Kafka のバージョンの関係は次のとおりです。

  • ダウングレードする Kafka バージョンの log.message.format.version が現行バージョンと 同じ である場合、Cluster Operator は、ブローカーのローリング再起動を 1 回実行してダウングレードを行います。
  • ダウングレードする Kafka バージョンの log.message.format.version異なる 場合、稼働するクラスターの log.message.format.version常にダウングレードされたバージョンによって使用されるバージョンに設定された場合のみダウングレードが可能になります。通常は、アップグレードの手順が log.message.format.version の変更前に中止された場合にのみ該当します。その場合、ダウングレードには以下が必要です。

    • 2 つのバージョンで Interbroker プロトコルが異なる場合、ブローカーのローリング再起動が 2 回必要です。
    • 両バージョンで同じ場合は、ローリング再起動が 1 回必要です。

以前のバージョンでサポートされない log.message.format.version が新バージョンで使われていた場合 (log.message.format.versionのデフォルト値が使われていた場合など)、ダウングレードは実行 できません。たとえば以下のリソースの場合、log.message.format.version が変更されていないので、Kafka バージョン 2.6.0 にダウングレードできます。

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
  # ...
  kafka:
    version: 2.7.0
    config:
      log.message.format.version: "2.6"
      # ...

log.message.format.version"2.7" に設定されているかまたは値がない (このためパラメーターに 2.7.0 ブローカーのデフォルト値 2.7 が採用される) 場合は、ダウングレードは実施できません。

9.2.2. Kafka ブローカーおよびクライアントアプリケーションのダウングレード

この手順では、AMQ Streams Kafka クラスターを Kafka の下位 (以前の) バージョンにダウングレードする方法 (2.7.0 から 2.6.0 へのダウングレードなど) を説明します。

前提条件

Kafka リソースをダウングレードするには、以下を確認します。

  • 重要: Kafka バージョンの互換性
  • 両バージョンの Kafka をサポートする Cluster Operator が稼働している。
  • Kafka.spec.kafka.config に、ダウングレードする Kafka バージョンでサポートされていないオプションが含まれていない。
  • Kafka.spec.kafka.config に、ダウングレードする Kafka バージョンでサポートされる log.message.format.version および inter.broker.protocol.version がある。

手順

  1. Kafka クラスター設定を更新します。

    oc edit kafka KAFKA-CONFIGURATION-FILE
  2. Kafka.spec.kafka.version を変更して、以前のバージョンを指定します。

    たとえば、Kafka 2.7.0 から 2.6.0 へのダウングレードは以下のようになります。

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      # ...
      kafka:
        version: 2.6.0 1
        config:
          log.message.format.version: "2.6" 2
          inter.broker.protocol.version: "2.6" 3
          # ...
    1
    Kafka のバージョンが以前のバージョンに変更されます。
    2
    メッセージ形式のバージョンは変更されません。
    3
    ブローカー間のプロトコルバージョンは変更されません。
    注記

    log.message.format.version および inter.broker.protocol.version の値は、浮動小数点数として解釈されないように文字列にする必要があります。

  3. Kafka バージョンのイメージが Cluster Operator の STRIMZI_KAFKA_IMAGES に定義されているイメージとは異なる場合は、Kafka.spec.kafka.image を更新します。

    「Kafka バージョンおよびイメージマッピング」 を参照してください。

  4. エディターを保存して終了し、ローリングアップデートの完了を待ちます。

    更新をログで確認するか、または Pod 状態の遷移を監視して確認します。

    oc logs -f CLUSTER-OPERATOR-POD-NAME | grep -E "Kafka version downgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    oc get pod -w

    Cluster Operator のログで INFO レベルのメッセージを確認します。

    Reconciliation #NUM(watch) Kafka(NAMESPACE/NAME): Kafka version downgrade from FROM-VERSION to TO-VERSION, phase 1 of 1 completed
  5. すべてのクライアントアプリケーション (コンシューマー) をダウングレードして、以前のバージョンのクライアントバイナリーを使用します。

    これで、Kafka クラスターおよびクライアントは以前の Kafka バージョンを使用するようになります。

  6. トピックメタデータの保存に ZooKeeper を使用する 0.22 よりも前のバージョンの AMQ Streams に戻す場合は、Kafka クラスターから内部トピックストアのトピックを削除します。

    oc run kafka-admin -ti --image=registry.redhat.io/amq7/amq-streams-kafka-27-rhel7:1.7.0 --rm=true --restart=Never -- ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic __strimzi-topic-operator-kstreams-topic-store-changelog --delete && ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic __strimzi_store_topic --delete

その他のリソース

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.