17.4. 升级 Kafka 代理和 ZooKeeper
在主机机器上升级 Kafka 代理和 ZooKeeper,以使用最新版本的 AMQ Streams。您可以更新安装文件,然后配置并重启所有 Kafka 代理以使用新的 inter-broker 协议版本。执行这些步骤后,会使用新的 inter-broker 协议版本在 Kafka 代理间传输数据。
从 Kafka 3.0.0 开始,消息格式版本值被假定为与 inter.broker.protocol.version
匹配,不需要设置。这些值反映了使用的 Kafka 版本。
先决条件
-
以
kafka
用户身份登录到 Red Hat Enterprise Linux。 您已在单独的主机上安装 Kafka 和其他 Kafka 组件。
更多信息请参阅 第 3.1 节 “安装环境”。
- 您已下载了 安装文件。
流程
对于 AMQ Streams 集群中的每个 Kafka 代理,一次一个:
从 AMQ Streams 软件下载页面 下载 AMQ Streams 归档。
注意出现提示时,登录到您的红帽帐户。
在命令行中,创建一个临时目录并提取
amq-streams-<version>-bin.zip
文件的内容。mkdir /tmp/kafka unzip amq-streams-<version>-bin.zip -d /tmp/kafka
mkdir /tmp/kafka unzip amq-streams-<version>-bin.zip -d /tmp/kafka
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果正在运行,停止在主机上运行的 ZooKeeper 和 Kafka 代理。
/opt/kafka/bin/zookeeper-server-stop.sh /opt/kafka/bin/kafka-server-stop.sh jcmd | grep zookeeper jcmd | grep kafka
/opt/kafka/bin/zookeeper-server-stop.sh /opt/kafka/bin/kafka-server-stop.sh jcmd | grep zookeeper jcmd | grep kafka
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您在多节点集群中运行 Kafka,请参阅 第 4.3 节 “执行 Kafka 代理的安全滚动重启”。
从现有安装中删除
libs
和bin
目录:rm -rf /opt/kafka/libs /opt/kafka/bin
rm -rf /opt/kafka/libs /opt/kafka/bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从临时目录中复制
libs
和bin
目录:cp -r /tmp/kafka/kafka_<version>/libs /opt/kafka/ cp -r /tmp/kafka/kafka_<version>/bin /opt/kafka/
cp -r /tmp/kafka/kafka_<version>/libs /opt/kafka/ cp -r /tmp/kafka/kafka_<version>/bin /opt/kafka/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果需要,更新
config
目录中的配置文件,以反映新版本的任何更改。 删除临时目录。
rm -r /tmp/kafka
rm -r /tmp/kafka
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/opt/kafka/config/server.properties
属性文件。将
inter.broker.protocol.version
和log.message.format.version
属性设置为当前版本。例如,如果从 Kafka 版本 3.3.1 升级到 3.4.0,则当前版本为 3.3:
inter.broker.protocol.version=3.3 log.message.format.version=3.3
inter.broker.protocol.version=3.3 log.message.format.version=3.3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您要升级的 Kafka 版本使用正确的版本(
3.2
、3.3
等)。在当前设置中,使inter.broker.protocol.version
保持不变,可确保代理可以在整个升级过程中继续相互通信。如果没有配置属性,请将它们与当前版本一起添加。
如果您要从 Kafka 3.0.0 或更高版本升级,则只需要设置
inter.broker.protocol.version
。重启更新的 ZooKeeper 和 Kafka 代理:
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka 代理和 ZooKeeper 开始使用最新 Kafka 版本的二进制文件。
有关在多节点集群中重启代理的详情,请参考 第 4.3 节 “执行 Kafka 代理的安全滚动重启”。
验证重启的 Kafka 代理带有分区副本,如下所示。
使用
kafka-topics.sh
工具来确保代理中包含的所有副本都重新同步。具体步骤请参阅 列出和描述主题。在以下步骤中,将您的 Kafka 代理更新为使用新的 inter-broker 协议版本。
一次更新每个代理。
警告在完成以下步骤后,无法降级 AMQ Streams。
- 根据您选择 升级客户端的策略,升级所有客户端应用程序以使用客户端二进制文件的新版本。
在
/opt/kafka/config/server.properties
文件中将inter.broker.protocol.version
属性设置为3.4
:inter.broker.protocol.version=3.4
inter.broker.protocol.version=3.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在命令行中停止您修改的 Kafka 代理:
/opt/kafka/bin/kafka-server-stop.sh
/opt/kafka/bin/kafka-server-stop.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Kafka 没有运行:
jcmd | grep kafka
jcmd | grep kafka
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启您修改的 Kafka 代理:
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Kafka 是否正在运行:
jcmd | grep kafka
jcmd | grep kafka
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您要从 Kafka 3.0.0 之前的版本升级,请在
/opt/kafka/config/server.properties
文件中将log.message.format.version
属性设置为3.4
:log.message.format.version=3.4
log.message.format.version=3.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在命令行中停止您修改的 Kafka 代理:
/opt/kafka/bin/kafka-server-stop.sh
/opt/kafka/bin/kafka-server-stop.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Kafka 没有运行:
jcmd | grep kafka
jcmd | grep kafka
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启您修改的 Kafka 代理:
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Kafka 是否正在运行:
jcmd | grep kafka
jcmd | grep kafka
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证重启的 Kafka 代理带有分区副本,如下所示。
使用
kafka-topics.sh
工具来确保代理中包含的所有副本都重新同步。具体步骤请参阅 列出和描述主题。-
如果在升级前使用了它,请从
server.properties
文件中删除传统的log.message.format.version
配置。