回滚 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 Cassandra、Zookeeper、Qpid
4.51.00 Cassandra、Zookeeper、Qpid、Postgres

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

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

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

回滚顺序

回滚组件应按照升级的反向顺序进行,但管理服务器应在 Cassandra 之后回滚。

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

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

例如,假设您已将整个 Cassandra 集群、所有管理服务器和几个 RMP 从 4.52.01 升级到 4.52.02,并且希望回滚。在这种情况下,您需要执行以下操作:

  1. 逐个回滚所有 RMP
  2. 使用备份回滚整个 Cassandra 集群
  3. 逐个回滚 Edge 管理服务器节点

哪些人可以执行回滚

执行回滚的用户应与最初更新 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 会修改存储在节点上的数据的架构,因此无法直接回滚。回滚有两种方法。您将根据要回滚到的升级状态,使用以下方法之一。

回滚方法

清除集群中的现有节点,并使用这些节点重新构建节点

如果集群中至少有一个仍在使用旧版 Cassandra(Cassandra 2.1.22)且完全正常运行的数据中心,则可以按照此过程操作。如果您升级了整个 Cassandra 集群并想回滚,则必须按照清除并恢复备份或虚拟机快照中的步骤操作。

回滚步骤

  1. 从要回滚的节点开始
    • 在节点上停止 Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
    • 从节点卸载 Cassandra 软件:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
    • 从节点中移除数据目录:
      rm -rf /opt/apigee/data/apigee-cassandra
    • 下载并运行您要回滚到的较低版本 Edge for Private Cloud 的引导加载程序。

    示例:如需回滚到 4.52.01,请执行以下操作:

    • 下载 4.52.01 的引导加载程序:
      curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
    • 执行 4.52.01 的引导加载程序:
      sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord

    • 在节点上设置 Cassandra:
      /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
    • 通过提供正常运行的数据中心的名称,在节点上执行重新构建:
      /opt/apigee/apigee-cassandra/bin/nodetool rebuild -h <node-IP> <functional-dc>
    • 对要回滚的每个节点重复上述步骤,一次一个。
  2. 所有节点都回滚并重建后
    • 运行任何管理服务器节点的设置。确保管理服务器使用的是回滚的版本。如果没有,请同时回滚管理服务器。
    • 停止管理服务器:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
    • 如果您使用创收功能,请一并卸载创收功能:
      /opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
    • 卸载 management-server:
      /opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
    • 下载并执行旧版的引导加载程序。例如,请执行以下步骤下载并执行版本 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
    • 运行一个管理服务器节点的设置:
      /opt/apigee/apigee-setup/bin/setup.sh -p mt -f configFile

重新构建后的优化

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

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

  1. 按照文档中记录的步骤操作,直到第 6 步,以便在本地数据中心内重新构建副本。
  2. 对于其余节点,请逐个按照以下步骤操作每个节点。
    • 恢复您在此节点上捕获的备份(注意:由于此备份是在您开始 Cassandra 升级之前创建的,因此可能包含过时数据):
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file
    • 如果您有节点的虚拟机快照,则可以恢复快照,而不是恢复 Cassandra 备份。
    • 备份恢复后,请在节点上启动 Cassandra 服务:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
    • 对节点执行修复,以便从现有数据中心流式传输最新数据:
      /opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -dc <local-dc-name>
    • 对要修复的每个节点重复第 3 步至第 6 步。

清除和恢复备份/虚拟机快照

如果您升级了整个 Cassandra 集群并希望回滚,则只能执行此过程。

此外,Apigee 备份因节点而异。您无法将从一个节点创建的备份恢复到另一个节点。Cassandra 备份包含节点元数据信息(例如 IP 地址、环位置等)。

  1. 从集群中 1 个 Cassandra 节点开始
    • 停止节点上的 Cassandra 服务:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
    • 从节点卸载 Cassandra 软件:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
    • 从节点中移除数据目录:
      rm -rf /opt/apigee/data/apigee-cassandra
    • 下载并运行您要回滚到的旧版 Edge for Private Cloud 的引导加载程序。

    示例:回滚到 4.52.01

    • 下载 4.52.01 的引导加载程序:
      curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
    • 执行 4.52.01 的引导加载程序:
      sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord

    • 在节点上设置 Cassandra:
      /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
    • 使用从备份恢复中的步骤在节点上恢复备份。
    • 在节点上停止 Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
    • 删除数据目录:
      rm -rf /opt/apigee/data/apigee-cassandra/data
    • 恢复备份:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file
    • 在节点上启动 Cassandra 服务:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
    • 对每个 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
      curl https://software.apigee.com/bootstrap_4.51.00.sh -o /tmp/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-gateway 组件组来将其全部卸载,如以下示例所示:
      /opt/apigee/apigee-service/bin/apigee-service edge-gateway 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 comp

    例如:

    yum --showduplicates list edge-ui
  2. 使用 apigee-setup 安装该组件:
    /opt/apigee/apigee-setup/bin/setup.sh -p comp -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