11.2. 降级 Kafka
Kafka 版本降级由 Cluster Operator 执行。
11.2.1. 降级的 Kafka 版本兼容性 复制链接链接已复制到粘贴板!
Kafka 降级依赖于兼容当前和目标 Kafka 版本,以及记录信息的状态。
如果该版本不支持该集群中 已使用的 inter.broker.protocol.version
设置,或者消息添加到使用较新的 log.message.format.version
的消息日志中,则无法恢复到之前的 Kafka 版本。
inter.broker.protocol.version
决定用于代理存储持久元数据的 schema,如写入 __consumer_offsets
的消息的 schema。如果您降级到不了解前已在集群中使用的 inter.broker.protocol.version
的 Kafka 版本,则该代理将遇到它无法理解的数据。
如果目标降级版本 Kafka 具有:
-
与当前版本 相同的
log.message.format.version
,通过执行代理的单一滚动重启来降级 Cluster Operator。 一个不同的
log.message.format.version
,只有运行的集群始终有log.message.format.version
设置为降级版本使用的版本时,才可以下载。在更改log.message.format.version
之前,升级过程才会被终止。在这种情况下,降级需要:- 如果两个版本的 interbroker 协议不同,则代理的两个滚动重启
- 如果滚动重启相同
如果新版本使用了之前版本 不支持的 log.message.format.version
,则无法降级,包括在使用 log.message.format.version
的默认值时。例如,这个资源可以降级到 Kafka 版本 3.2.3,因为 log.message.format.version
还没有改变:
如果 log.message.format.version
设置为 "3.3"
或没有值,则参数会为一个 3.3 代理 3.3.1 使用默认值,这会导致降级无法进行。
从 Kafka 3.0.0,当 inter.broker.protocol.version
设置为 3.0
或更高版本时,logging.message.format.version
选项会被忽略,不需要设置。
11.2.2. 降级 Kafka 代理和客户端应用程序 复制链接链接已复制到粘贴板!
将 AMQ Streams Kafka 集群降级为 Kafka 的较低(以前)版本,如从 3.3.1 降级到 3.2.3。
先决条件
- Cluster Operator 已启动并在运行。
在降级 AMQ Streams Kafka 集群前,检查以下
Kafka
资源:- 重要信息 : Kafka 版本的兼容性
-
Kafka.spec.kafka.config
不包含将 Kafka 版本降级到的 Kafka 版本不支持的选项。 Kafka.spec.kafka.config
有一个log.message.format.version
和inter.broker.protocol.version
,被降级到的 Kafka 版本支持。从 Kafka 3.0.0,当
inter.broker.protocol.version
设置为3.0
或更高版本时,logging.message.format.version
选项会被忽略,不需要设置。
流程
更新 Kafka 集群配置。
oc edit kafka KAFKA-CONFIGURATION-FILE
oc edit kafka KAFKA-CONFIGURATION-FILE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改
Kafka.spec.kafka.version
以指定上一个版本。例如,如果从 Kafka 3.3.1 降级到 3.2.3:
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 -w
Copy 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 completed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 降级所有客户端应用程序(使用者),以使用之前版本的客户端二进制文件。
Kafka 集群和客户端现在使用之前的 Kafka 版本。
如果您恢复到 1.7 之前的 AMQ Streams 版本,该版本使用 ZooKeeper 作为存储主题元数据,请删除 Kafka 集群的内部主题存储主题。
oc run kafka-admin -ti --image=registry.redhat.io/amq7/amq-streams-kafka-33-rhel8:2.3.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/amq7/amq-streams-kafka-33-rhel8:2.3.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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow