24.2. Kafka のダウングレード
Kafka バージョンのダウングレードは、Cluster Operator によって実行されます。
24.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 回実行してダウングレードを行います。 別の
log.message.format.versionの場合、ダウングレード後の Kafka バージョンが使用するバージョンに設定された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 バージョン 3.5.0 にダウングレードできます。
log.message.format.version が "3.6" に設定されているか、値が指定されていない場合、パラメーターが 3.6.0 ブローカーのデフォルト値 3.6 を取得した場合、ダウングレードは不可能です。
Kafka 3.0.0 以降、inter.broker.protocol.version が 3.0 以上に設定されていると、log.message.format.version オプションは無視されるため、設定する必要はありません。
24.2.2. Kafka ブローカーおよびクライアントアプリケーションのダウングレード リンクのコピーリンクがクリップボードにコピーされました!
AMQ Streams Kafka クラスターを Kafka の下位 (以前の) バージョンにダウングレードします (3.6.0 から 3.5.0 へのダウングレードなど)。
前提条件
- Cluster Operator が稼働しています。
AMQ Streams Kafka クラスターをダウングレードする前に、
Kafkaリソースについて以下を確認してください。- 重要: Kafka バージョンの互換性。
-
Kafka.spec.kafka.configに、ダウングレードする Kafka バージョンでサポートされていないオプションが含まれていない。 Kafka.spec.kafka.configに、ダウングレード先の Kafka バージョンでサポートされるlog.message.format.versionとinter.broker.protocol.versionがある。Kafka 3.0.0 以降、
inter.broker.protocol.versionが3.0以上に設定されていると、log.message.format.versionオプションは無視されるため、設定する必要はありません。
手順
Kafka クラスター設定を更新します。
oc edit kafka KAFKA-CONFIGURATION-FILE
oc edit kafka KAFKA-CONFIGURATION-FILECopy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka.spec.kafka.versionを変更して、以前のバージョンを指定します。たとえば、Kafka 3.6.0 から 3.5.0 にダウングレードする場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記log.message.format.versionおよびinter.broker.protocol.versionの値は、浮動小数点数として解釈されないように文字列である必要があります。Kafka バージョンのイメージが Cluster Operator の
STRIMZI_KAFKA_IMAGESに定義されているイメージとは異なる場合は、Kafka.spec.kafka.imageを更新します。エディターを保存して終了し、ローリング更新の完了を待ちます。
更新をログで確認するか、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 logs -f CLUSTER-OPERATOR-POD-NAME | grep -E "Kafka version downgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -w
oc get pod -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow Cluster Operator ログで
INFOレベルのメッセージを確認します。Reconciliation #NUM(watch) Kafka(NAMESPACE/NAME): Kafka version downgrade from FROM-VERSION to TO-VERSION, phase 1 of 1 completed
Reconciliation #NUM(watch) Kafka(NAMESPACE/NAME): Kafka version downgrade from FROM-VERSION to TO-VERSION, phase 1 of 1 completedCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのクライアントアプリケーション (コンシューマー) をダウングレードして、以前のバージョンのクライアントバイナリーを使用します。
これで、Kafka クラスターおよびクライアントは以前の Kafka バージョンを使用するようになります。
トピックメタデータの保存に ZooKeeper を使用する 1.7 よりも前のバージョンの AMQ Streams に戻す場合は、Kafka クラスターから内部トピックストアのトピックを削除します。
oc run kafka-admin -ti --image=registry.redhat.io/amq-streams/kafka-36-rhel8:2.6.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
oc run kafka-admin -ti --image=registry.redhat.io/amq-streams/kafka-36-rhel8:2.6.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 --deleteCopy to Clipboard Copied! Toggle word wrap Toggle overflow