回滚 Apigee Edge 4.52.02

如果您在更新到 Edge 4.52.02 期间遇到错误,可以回滚导致错误的组件,然后再次尝试更新。

您可以将 Edge 4.52.02 回滚到以下任一主要版本:

  • 版本 4.52.01
  • 版本 4.52.00
  • 版本 4.51.00

还原版本需要还原您可能已升级的每个组件。此外,根据您开始使用的版本,您可能需要在回滚某些软件组件之前考虑采取特殊步骤。下表列出了在回滚期间可能需要执行特殊步骤的各种软件组件:

回滚到版本 软件的特殊注意事项
4.52.01 Cassandra
4.52.00 ZookeeperCassandraQpid
4.51.00 ZookeeperPostgresCassandraQpid

在以下两种情况下,您可能需要执行回滚:

  1. 回滚到先前的主要版本或次要版本。例如,从 4.52.02 改为 4.52.00。
  2. 回滚到同一版本中的上一个补丁版本。例如,从 4.52.00.02 更新为 4.52.00.01。

如需了解详情,请参阅 Apigee Edge 发布流程

回滚顺序

组件的回滚应遵循升级的反向顺序,但管理服务器应在 Cassandra 之后回滚。应使用按数据中心 (DC-by-DC) 的方法回滚 Cassandra、运行时组件和管理服务器,暂时将流量重定向到正常运行的数据中心。

私有云 4.52.02 的典型一般回滚顺序如下所示:

单数据中心

对于单个数据中心设置,回滚过程将对运行时流量和某些管理 API 产生重大影响。

  1. 回滚 Qpid 和其他与分析相关的组件
  2. 回滚路由器和消息处理器
  3. 回滚 Cassandra
  4. 回滚管理服务器
  5. 回滚 Postgres 和 Zookeeper

多个数据中心

在多数据中心设置中,回滚应遵循按数据中心 (DC-by-DC) 的方法,即暂时将流量重定向到正常运行的数据中心。这样可以确保流量连续性、避免停机,并为 Cassandra管理服务器运行时节点启用受控回滚流程。

  1. 在所有数据中心回滚 Qpid 和其他与分析相关的组件。
  2. 屏蔽第一个数据中心中的流量,并将流量重新路由到其他数据中心。
  3. 回滚第一个数据中心中的路由器和消息处理器。
  4. 在第一个数据中心回滚 Cassandra。
  5. 第一个数据中心中的回滚管理服务器。
  6. 取消屏蔽第一个数据中心中的流量,然后按照第 2 步到第 6 步操作,直到最后一个数据中心的运行时节点、Cassandra 和管理服务器都回滚完毕。
  7. 在所有数据中心回滚 Postgres、Zookeeper 和 LDAP。

举个例子,假设您已将整个 Cassandra 集群、所有管理服务器和一些运行时消息处理程序 (RMP) 从版本 4.52.01 升级到 4.52.02,并且需要执行回滚。在这种情况下,应按如下方式执行回滚:

  1. 屏蔽流量,将流量重定向到其他活跃的 DC,以确保服务连续性。
  2. 在第一个数据中心回滚路由器和消息处理器
  3. 通过从备份或虚拟机快照恢复,在第一个数据中心回滚 Cassandra
  4. 在第一个数据中心回滚管理服务器
  5. 取消屏蔽流量,使其流向第一个数据中心。
  6. 对每个剩余的数据中心重复第 1 步到第 5 步,直到所有运行时节点、Cassandra 和管理服务器都已回滚。

哪些人可以执行回滚

执行回滚的用户应与最初更新 Edge 的用户相同,或者是运行以 root 身份运行的用户。

默认情况下,Edge 组件以用户“apigee”的身份运行。在某些情况下,您可能需要以不同的用户身份运行 Edge 组件。例如,如果路由器必须访问特权端口(例如低于 1000 的端口),则您必须以 root 用户身份或具有对这些端口访问权限的用户身份运行路由器。或者,您可以以一个用户身份运行一个组件,以另一个用户身份运行另一个组件。

包含通用代码的组件

以下 Edge 组件共享通用代码。因此,如需回滚节点上的任何这些组件,您必须回滚该节点上的所有这些组件。

  • edge-management-server(管理服务器)
  • edge-message-processor(消息处理器)
  • edge-router(路由器)
  • edge-postgres-server(Postgres 服务器)
  • edge-qpid-server(Qpid 服务器)

例如,如果您在节点上安装了管理服务器、路由器和消息处理器,则若要回滚其中任何一个,您必须回滚所有三个。

Cassandra 的回滚

在特定 Cassandra 节点上执行 Cassandra 重大升级时,Cassandra 会修改存储在节点上的数据的架构,因此无法直接回滚。回滚有两种方法。您将根据要回滚到的升级状态,使用以下方法之一。

回滚方法

回滚场景

Edge for Private Cloud 4.52.02 升级了 Cassandra 以及消息处理器和管理服务器用于连接到 Cassandra 的驱动程序。因此,这 3 个组件的升级和回滚密切相关。下表列出了这三个特定组件的回滚场景的一般示例。回滚其他组件时,应遵循回滚顺序部分中的说明。

本部分根据上述方法,简要介绍了各种回滚场景以及建议遵循的方法。

场景 回滚策略
单个数据中心,部分 Cassandra 节点已升级 备份恢复
单个数据中心,所有 Cassandra 节点均已升级 备份恢复
单个数据中心,所有节点(Cassandra、管理服务器和运行时节点)均已升级
多个数据中心,第一个数据中心中的部分/所有 Cassandra 节点已升级 从现有数据中心重新构建
升级了多个数据中心、第一个数据中心中的所有 Cassandra 节点、管理服务器和运行时节点

此操作应一次在一个数据中心执行。

多个数据中心,最后一个数据中心的部分/所有 Cassandra 节点都已升级
  • 使用备份回滚上一个数据中心
  • 使用备份重新构建一次一个数据中心地回滚其余数据中心。
在所有数据中心升级了多个数据中心、所有 Cassandra 节点、管理服务器和运行时节点

此操作应一次执行一个数据中心。

一般来说,在回滚 Cassandra 时,您应考虑以下事项:

  1. 运行时或管理组件的回滚

    如果您需要将 Edge Management Server 或 Edge Message Processor 等组件回滚到任何数据中心 (DC) 中的旧版 Edge Private Cloud,请确保同时在该特定数据中心回滚 Cassandra。这对于防止管理和运行时流量故障至关重要。

  2. 使用备份进行回滚

    从 Cassandra 3.11.x 创建的备份与 Cassandra 2.1.x 创建的备份不兼容。如需使用备份恢复功能实现回滚,请确保在执行升级之前备份 Cassandra 2.1.x。

  3. 隔离数据中心以进行回滚

    为避免服务中断,请确保将流量重定向到功能正常的数据中心,并阻止流量进入正在进行回滚的数据中心。

使用重新构建功能回滚 Cassandra

前提条件

  1. 您在多个数据中心运行 Edge for Private Cloud 4.51.00 / 4.52.00 / 4.52.01 集群
  2. 您正在将 Cassandra 从 2.1.X 升级到 3.11.X,但在升级过程中遇到了问题
  3. 集群中至少有 1 个仍在使用旧版 Cassandra (Cassandra 2.1.X) 且正常运行的数据中心

简要步骤

  1. 选择要回滚的一个数据中心(部分或完全升级)。将此数据中心的所有应用流量重定向到另一个完全正常运行的数据中心。
  2. 如果路由器和消息处理器已升级,请一次回滚数据中心中的所有路由器和消息处理器节点。
  3. 在一个节点上停止 Cassandra,将其卸载,并清理所有关联数据。
  4. 安装旧版引导加载程序,并在已清理的节点上设置 Cassandra 2.1.x 版本。
  5. 从仍在运行 Cassandra 2.1.x 的现有正常数据中心重新构建节点。
  6. 对数据中心中剩余的每个 Cassandra 节点执行第 3 步到第 5 步,一次一个节点。
  7. 在数据中心内重新运行 Management Server 设置。
  8. 进行测试以验证回滚。验证完毕后,将应用流量重定向回恢复的数据中心。
  9. 对需要回滚的其他数据中心重复上述步骤,每次只针对一个数据中心。

有关清除集群中的现有节点并使用这些节点重新构建节点的详细步骤:

从要回滚的节点开始

  1. 请确保流量已重定向到功能齐全的数据中心,然后再继续执行后续步骤。
  2. 如果路由器和消息处理器已升级,请一次滚回数据中心中的所有路由器和消息处理器节点到旧版本
  3. 在节点上停止 Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
  4. 从节点卸载 Cassandra 软件:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
  5. 从节点中移除数据目录:
    rm -rf /opt/apigee/data/apigee-cassandra
  6. 下载并运行您要回滚到的较低版本 Edge for Private Cloud 的引导加载程序:

    示例:回滚到 4.52.01

  7. 下载 4.52.01 的引导加载程序:
    curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
  8. 执行 4.52.01 的引导加载程序:
    sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord
  9. 在节点上安装 Cassandra 软件:
    apigee-service apigee-cassandra install
  10. /opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh 文件中添加以下属性。
    JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=<cass_ip-address>"

    示例

    JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=10.0.0.1"

  11. 在节点上设置 Cassandra:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  12. 在 Cassandra 正常运行后,从以下文件中移除上述 CWC:/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh 文件。
  13. 重启 Cassandra 节点
    apigee-service apigee-cassandra restart
  14. 通过提供正常运行的数据中心的名称,在节点上执行重新构建:
    /opt/apigee/apigee-cassandra/bin/nodetool rebuild -h <node-IP> <functional-dc>

    示例

    /opt/apigee/apigee-cassandra/bin/nodetool rebuild -h 10.0.0.1 dc-2

  15. 在数据中心中,对要回滚的每个节点重复上述步骤,一次一个。

数据中心中的所有 Cassandra 节点都已回滚并重建

  1. 在要回滚的数据中心内,运行任何管理服务器节点的设置。确保管理服务器使用的是回滚的版本。如果没有,请同时回滚管理服务器
  2. 将管理服务器回滚到旧版

  3. 停止管理服务器:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
  4. 如果您使用创收功能,请一并卸载创收功能:
    /opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
  5. 卸载 edge-gateway 和 apigee-cassandra-client:
    /opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra-client uninstall
  6. 下载并执行旧版的引导加载程序。例如,请执行以下步骤下载并执行版本 4.52.01 的引导加载程序
    curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
    sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord
  7. 管理服务器设置

  8. 运行一个管理服务器节点的设置:
    /opt/apigee/apigee-setup/bin/setup.sh -p mt -f configFile
  9. 完成上述步骤后,将流量重定向回已回滚的数据中心。

重新构建后的优化

在上述步骤中,节点中的所有数据都会在重新构建期间从远程数据中心流式传输。您可以在所有副本都流式传输到本地数据中心后使用修复功能来优化此流程。这样可以避免跨数据中心流式传输,并且应该比从远程数据中心重新构建所有节点更快。

示例:假设您在本地数据中心有 6 个 Cassandra 节点。默认情况下,Apigee 的复制因子为 3,因此每个节点都拥有 50% 的数据。在这种情况下,您可以按照上述步骤重新构建节点 1 和 4。对于节点 2、3、5 和 6,请按照以下步骤恢复备份并运行修复。

  1. 按照上述步骤操作,重建本地数据中心中的副本。
  2. 对于其余节点,请逐一按照以下步骤操作每个节点。
  3. 恢复您在此节点上捕获的备份(注意:由于此备份是在您开始 Cassandra 升级之前创建的,因此可能包含过时数据):
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file

    如果您有节点的虚拟机快照,则可以恢复快照,而不是恢复 Cassandra 备份。

  4. 恢复备份后,请在节点上启动 Cassandra 服务:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
  5. 对节点执行修复,以便从现有数据中心流式传输最新数据:
    /opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -dc <local-dc-name>

    示例

    /opt/apigee/apigee-cassandra/bin/nodetool -h 10.0.0.1 repair -dc dc-1

  6. 对要修复的每个节点重复第 2 步中提到的所有上述步骤

使用备份 / 虚拟机快照回滚 Cassandra

如果您升级了整个 Cassandra 集群并希望回滚,则只能执行此过程。此外,Apigee 备份因节点而异。您无法将从一个节点创建的备份恢复到另一个节点。Cassandra 备份包含节点元数据信息(例如 IP 地址、环位置等)。

前提条件

  1. 您正在将最后一个数据中心中的 Cassandra 从 2.1.X 升级到 3.11.X,但在升级过程中遇到了问题。
  2. 您有要回滚的升级之前的节点备份。备份是在尝试将 2.1.X 升级到 3.11.X 之前进行的。

简要步骤

  1. 选择要回滚的数据中心(部分或完全升级)。将此数据中心的所有运行时流量重定向到另一个完全正常运行的数据中心。
  2. 如果路由器和消息处理器已升级,请一次滚回数据中心中的所有路由器和消息处理器节点
  3. 在一个节点上停止 Cassandra,将其卸载,并清理所有关联数据。
  4. 安装旧版引导加载程序,并在已清理的节点上设置 Cassandra 2.1.x 版本。
  5. 停止 Cassandra 节点并清理所有关联数据。
  6. 从升级前创建的备份恢复 Cassandra 节点。
  7. 对数据中心中剩余的每个 Cassandra 节点重复第 3 步到第 6 步,一次一个节点。
  8. 在数据中心内重新运行 Management Server 设置。
  9. 执行测试以验证回滚。验证完毕后,将运行时流量重定向回恢复的数据中心。
  10. 对需要回滚的其他数据中心重复上述步骤,每次只针对一个数据中心。
  11. (可选)如果所有数据中心之间的数据不一致,请在所有数据中心的所有 Cassandra 节点上执行修复命令。

使用备份/虚拟机快照回滚 Cassandra 的详细步骤

集群中开始只有 1 个 Cassandra 节点

  1. 请确保流量已重定向到功能齐全的数据中心,然后再继续执行后续步骤。
  2. 如果路由器和消息处理器已升级,请一次滚回数据中心中的所有路由器和消息处理器节点到旧版本
  3. 在节点上停止 Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
  4. 从节点卸载 Cassandra 软件:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
  5. 从节点中移除数据目录:
    rm -rf /opt/apigee/data/apigee-cassandra
  6. 下载并运行您要回滚到的较低版本 Edge for Private Cloud 的引导加载程序:

    示例:回滚到 4.52.01

  7. 下载 4.52.01 的引导加载程序:
    curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
  8. 执行 4.52.01 的引导加载程序:
    sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord
  9. 在节点上设置 Cassandra:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  10. 在节点上停止 Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
  11. 删除节点上的数据目录:
    rm -rf /opt/apigee/data/apigee-cassandra/data
  12. 恢复备份:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file
  13. 在节点上启动 Cassandra 服务
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
  14. 对每个 Cassandra 节点重复上述步骤(一次一个)。
  15. 在要回滚的数据中心内,运行任何管理服务器节点的设置。确保管理服务器使用的是回滚的版本。如果没有,请同时回滚管理服务器
  16. 完成上述步骤后,将流量重定向回已回滚的数据中心。
  17. (可选)如果所有数据中心之间的数据不一致,请在所有数据中心的所有 Cassandra 节点上执行修复命令。
    /opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -pr

回滚 Zookeeper 3.8.3 更新

如果您要回滚到版本 4.52.00 或 4.51.00,则需要先参考一些特殊步骤,然后才能回滚 Zookeeper。这些步骤列在回滚中。

如果您要回滚到版本 4.52.01,请像回滚任何软件一样回滚 Zookeeper,如以下回滚到先前的主要版本或次要版本部分所列。

回滚 Qpid

如果您要回滚到 4.52.00 或 4.51.00 版本,则需要先参考一些特殊步骤,然后才能回滚 Qpid。这些步骤列在回滚中。

如果您要回滚到版本 4.52.01,请按照回滚到先前的主要版本或次要版本中所列的任何软件回滚 Qpid

回滚 Postgres 10.17 更新

如果您要回滚到版本 4.51.00,则需要在回滚 Postgres 之前参考一些特殊步骤。这些步骤列在回滚中。

如果您要回滚到版本 4.52.01 或 4.52.00,请像回滚任何软件一样回滚 Postgres,如以下回滚到之前的主要版本或次要版本部分所列。

回滚到先前的主要版本或次要版本

如需回滚到之前的主要版本或次要版本,请在托管该组件的每个节点上执行以下操作:

  1. 下载要回滚到的版本的 bootstrap.sh 文件:

    • 如需回滚到 4.51.00,请下载 bootstrap_4.51.00.sh
  2. 停止组件以进行回滚:
    1. 如需回滚节点上的任何包含通用代码的组件,您必须全部停止这些组件,如以下示例所示:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
      /opt/apigee/apigee-service/bin/apigee-service edge-router stop
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor stop
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    2. 如需回滚节点上的任何其他组件,只需停止该组件即可:
      /opt/apigee/apigee-service/bin/apigee-service component stop
  3. 如果您要回滚创收功能,请从所有管理服务器和消息处理器节点中卸载该功能:
    /opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
  4. 在节点上卸载要回滚的组件:
    1. 如需回滚节点上的任何包含通用代码的组件,您必须通过卸载 edge-gatewayapigee-cassandra-client 组件组来将其全部卸载,如以下示例所示:
      /opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra-client uninstall
    2. 如需回滚节点上的任何其他组件,请仅卸载该组件,如以下示例所示:
      /opt/apigee/apigee-service/bin/apigee-service component uninstall

      其中 component 是组件名称。

    3. 如需回滚边缘路由器,除了卸载 edge-gateway 组件组之外,您还必须删除 /opt/nginx/conf.d 文件的内容:
      cd /opt/nginx/conf.d
      rm -rf *
  5. 卸载 4.52.02 版 apigee-setup
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
  6. 安装 4.51.00 版的 apigee-service 实用程序及其依赖项。以下示例安装了 4.51.00 版的 apigee-service
    sudo bash /tmp/bootstrap_4.51.00.sh apigeeuser=uName apigeepassword=pWord

    其中,uNamepWord 是您从 Apigee 收到的用户名和密码。如果您省略 pWord,系统会提示您输入该值。

    如果您收到错误消息,请确保您已在第 1 步中下载 bootstrap.sh 文件。

  7. 安装 apigee-setup
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
  8. 安装旧版组件:
    /opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile

    其中,component 是要安装的组件,configFile 是旧版的配置文件。

  9. 如果您要回滚 Qpid,请清空 iptables:
    sudo iptables -F
  10. 对托管要回滚的组件的每个节点重复此过程。

回滚到先前的补丁版本

如需将组件回滚到特定补丁版本,请在托管该组件的每个节点上执行以下操作:

  1. 下载特定组件版本:
    /opt/apigee/apigee-service/bin/apigee-service component_version install

    其中 component_version 是要安装的组件和补丁版本。例如:

    /opt/apigee/apigee-service/bin/apigee-service edge-ui-4.51.05-0.0.3749 install

    如果您使用的是 Apigee 在线代码库,则可以使用以下命令确定可用的组件版本:

    yum --showduplicates list component

    例如:

    yum --showduplicates list edge-ui
  2. 使用 apigee-setup 安装该组件:
    /opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile

    例如:

    /opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile

    请注意,在安装组件时,您只需指定组件名称,而无需指定版本。

  3. 对托管要回滚的组件的每个节点重复此过程。

回滚 mTLS

如需回滚 mTLS 更新,请在所有主机上执行以下步骤:

  1. 停止 Apigee:
    apigee-all stop
  2. 停止 mTLS:
    apigee-service apigee-mtls uninstall
  3. 重新安装 mTLS:
    apigee-service apigee-mtls install
    apigee-service apigee-mtls setup -f /opt/silent.conf