18.3. 升级 Kafka 集群
将基于 KRaft 的 Kafka 集群升级到更新支持的 Kafka 版本和 KRaft 元数据版本。您可以更新安装文件,然后配置并重启所有 Kafka 节点。执行这些步骤后,数据会根据新的元数据版本在 Kafka 代理之间传输。
当将基于 KRaft 的 Strimzi Kafka 集群降级为较低版本时,如从 3.7.0 移到 3.6.0 时,请确保 Kafka 集群使用的元数据版本是您要降级的 Kafka 版本。您从中降级的 Kafka 版本的元数据版本不能高于您要降级的版本。
流程
对于 Apache Kafka 集群流中的每个 Kafka 节点,从控制器节点开始,然后是代理,一次一个节点:
从 Apache Kafka 软件下载页面 的 Streams for Apache Kafka 归档下载。
注意如有提示,登录到您的红帽帐户。
在命令行中,创建一个临时目录并提取
amq-streams-<version>-bin.zip文件的内容。mkdir /tmp/kafka unzip amq-streams-<version>-bin.zip -d /tmp/kafka如果运行,请停止主机上运行的 Kafka 代理。
/opt/kafka/bin/kafka-server-stop.sh jcmd | grep kafka如果您在多节点集群中运行 Kafka,请参阅 第 3.6 节 “执行 Kafka 代理的安全滚动重启”。
从现有安装中删除
libs和bin目录:rm -rf /opt/kafka/libs /opt/kafka/bin从临时目录中复制
libs和bin目录:cp -r /tmp/kafka/kafka_<version>/libs /opt/kafka/ cp -r /tmp/kafka/kafka_<version>/bin /opt/kafka/-
如果需要,更新
config目录中的配置文件,以反映新的 Kafka 版本的任何更改。 删除临时目录。
rm -r /tmp/kafka重启更新的 Kafka 节点:
使用组合角色重启节点
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties重启控制器节点
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/controller.properties使用代理角色重启节点
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/broker.propertiesKafka 代理开始使用最新 Kafka 版本的二进制文件。
有关在多节点集群中重启代理的详情,请参考 第 3.6 节 “执行 Kafka 代理的安全滚动重启”。
检查 Kafka 是否正在运行:
jcmd | grep kafka更新 Kafka 元数据版本:
./bin/kafka-features.sh --bootstrap-server <broker_host>:<port> upgrade --metadata 3.7为您要升级到的 Kafka 版本使用正确的版本。
使用 kafka-topics.sh 工具验证重启的 Kafka 代理是否有分区副本,以确保代理中包含的所有副本都同步。具体步骤请参阅 列出和描述主题。
升级客户端应用程序
确保所有 Kafka 客户端应用程序都更新为在升级过程中使用客户端二进制文件的新版本,并验证其与 Kafka 升级的兼容性。如果需要,与负责管理客户端应用程序的团队协调。
要检查客户端是否使用最新的消息格式,请使用 kafka.server:type=BrokerTopicMetrics,name={Produce|Fetch}MessageConversionsPerSec 指标。如果使用最新的消息格式,指标会显示 0。