View a markdown version of this page

回滚至先前 KCL 版本 - Amazon Kinesis Data Streams

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

回滚至先前 KCL 版本

本主题说明了将 KCL 3.5.x 使用者回滚到先前版本的步骤。回滚过程取决于您的应用程序当前处于哪个迁移阶段。

重要

只有在从第 2 阶段 () 回滚到第 1 阶段 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) 时才需要 KCL 迁移工具。CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1如果您的应用程序仍处于第 1 阶段,则无需运行该工具即可通过重新部署之前的代码来回滚到之前的 KCL 版本。

从第 1 阶段回滚到之前的 KCL 版本

如果您的应用程序处于第 1 阶段 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1),则可以通过重新部署之前的代码来回滚到之前的 KCL 版本。第 1 阶段向后兼容先前的 KCL 版本,并且不在租用表中创建任何特定于迁移的条目。无需迁移工具。

要从第 1 阶段回滚,请执行以下操作:

  1. 将以前的 KCL 版本的代码重新部署到所有工作人员。

从第 2 阶段回滚到第 1 阶段

如果您的应用程序处于第 2 阶段 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X),则必须使用 KCL 迁移工具回滚到第 1 阶段。这是一个包括两个步骤的过程:

  1. 运行 KCL Migration Tool

  2. 使用第 1 阶段配置重新部署代码(可选)。

重要

您无法回滚两个关卡(从第 2 阶段回滚到第 1 阶段,然后回滚到先前的 KCL 版本)。KCL 迁移工具仅处理第 2 阶段到第 1 阶段的回滚。

注意

KCL 迁移工具不会从租用表中删除非租赁条目。这些条目与以前的 KCL 版本不向后兼容,这就是为什么无法从第 2 阶段直接回滚到先前 KCL 版本的两级回滚的原因。

步骤 1:运行 KCL 迁移工具

当您需要从第 2 阶段 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) 回滚到第 1 阶段时,运行 KCL 迁移工具。该工具执行以下任务:

  • 它删除了 DynamoDB 租约表上的全球二级索引 (LeaseOwnerToLeaseKeyIndex)。此索引由 KCL 3.5.x 创建,但回滚到第 1 阶段时不需要此索引。

  • 它使所有工作程序在与 KCL 2.x 兼容的模式下运行,并开始使用先前 KCL 版本中使用的负载平衡算法。如果您在使用 KCL 3.5.x 中的新负载平衡算法时遇到问题,这将立即缓解问题。

重要

在迁移、回滚和前滚过程中,不得删除租用表中的协调器状态条目 (Migration3.0)。

注意

您的消费者应用程序中的所有工作人员都必须在给定时间使用相同的负载平衡算法。KCL 迁移工具可确保 KCL 3.5.x 使用者应用程序中的所有工作程序切换到 KCL 2.x 兼容模式,以便所有工作程序在回滚部署到第 1 阶段的过程中运行相同的负载平衡算法。

您可以在 KCL 存储库的脚本目录中下载 KCL GitHub 迁移工具。从您的任何工作人员或任何具有写入和更新租约表所需权限的主机上运行脚本。您可以参考以了解运行脚本KCL 消费端应用程序所必需的 IAM 权限所需的 IAM 权限。每个 KCL 应用程序只能运行该脚本一次。使用以下命令运行 KCL 迁移工具:

python3 ./KclMigrationTool.py --region <region> --mode rollback [--application_name <applicationName>] [--lease_table_name <leaseTableName>]

参数

  • --region:<region>替换为你的。 AWS 区域

  • --application_name:如果您使用租赁表的默认名称,则此参数是必需的。如果您为租赁表指定了自定义名称,则可以省略此参数。将 <applicationName> 替换为实际的 KCL 应用程序名称。如果未提供自定义名称,则该工具使用此名称来推导默认表名。

  • --lease_table_name(可选):如果您在 KCL 配置中为租约表设置了自定义名称,则需要此参数。如果您使用的是默认表名称,则可以忽略此参数。将 <leaseTableName> 替换为您为租约表指定的自定义表名称。

第 2 步:使用第 1 阶段配置重新部署代码(可选)

运行 KCL 迁移工具从第 2 阶段回滚到第 1 阶段后,您将看到以下消息之一:

  • 消息 1:“回滚已完成。您的应用程序正在运行第 2 阶段(兼容 2 倍)功能。请使用第 1 阶段配置部署 KCL 3.5.x 应用程序,回滚到第 1 阶段。”

    • 所需操作:您的工作人员正在第 2 阶段(兼容 2 倍)模式下运行。将具有第 1 阶段配置 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) 的 KCL 3.5.x 应用程序重新部署到您的工作人员。

  • 消息 2:“回滚已完成。您的 KCL 应用程序正在运行第 2 阶段(3x)功能,并已回滚到第 2 阶段(兼容 2x)模式。如果您在短时间内没有看到缓解措施,请使用第 1 阶段配置部署 KCL 3.5.x 应用程序,回滚到第 1 阶段。”

    • 所需操作:您的工作人员在第 2 阶段(3x)模式下运行,KCL 迁移工具将其回滚到第 2 阶段(兼容 2x)模式。如果问题得到解决,则无需重新部署。如果问题仍然存在,请将具有第 1 阶段配置 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) 的 KCL 3.5.x 应用程序重新部署到您的工作人员。