4.16.09 回滚过程

如果在更新到 Edge 4.16.09 期间发生错误,您可以回滚导致错误的组件,然后再次尝试更新。例如,如果更新到 Postgres 9.4 失败,您可以仅回滚 Postgres 节点,然后再次尝试更新。

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

  1. 回滚到旧版本。例如,从 4.16.09 降级到 4.16.05。
  2. 回滚到同一版本中的旧版本。

请按照以下步骤针对这两种情况执行回滚。

谁可以执行回滚

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

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

哪些组件可以回滚

执行回滚时,您应注意以下情况:

  • 下面列出的五个 Edge 组件共享通用代码。因此,如需回滚节点上的五个组件中的任何一个,您必须回滚节点上安装的五个组件中的任何一个。例如,如果您在节点上安装了管理服务器、路由器和消息处理器,则要回滚其中任何一个,您必须回滚所有这三个组件。
    共享代码的五个组件如下:
    • 管理服务器
    • 路由器
    • 消息处理器
    • Qpid 服务器
    • Postgres 服务器
  • 如果您要从 Edge 4.16.01 进行更新,请勿回滚 Cassandra。此版本的 Edge 包含 Cassandra 的更新版本。如果您回滚任何组件,请将 Cassandra 保持在 4.16.09 版本。
  • 此版本不包含新版 qpidd。因此,您无需回滚 qpidd。

正在回滚 4.16.09

本部分介绍了将 Edge 4.16.09 回滚到先前版本的步骤。本部分分为两个部分:

  • 将 Postgres 更新回滚到 9.4 版
    每个更新过程的最后一部分是将 Postgres 节点更新到 9.4 版。如果该更新失败,您可以使用此过程回滚更新。
  • 回滚所有其他 Edge 组件
    使用此过程可回滚任何其他 Edge 组件。

回滚 Postgres 9.4 更新

如需在主备配置中更新 Postgres 时回滚 Postgres 更新,请执行以下操作:

  • 将新的备用节点提升为 Postgres 主节点。新的 Postgres 主实例将与之前的 Edge 安装版本相同。
  • 将旧备用节点配置为新主节点的备用节点。旧备用节点将与之前的 Edge 安装版本相同。
  • 向分析和使用方群组注册新的主节点和备用节点。

回滚完成后,旧主节点将不再必要。然后,您可以停用旧的主节点。

  1. 确保新的备用 Postgres 节点正在运行:
    > /opt/apigee/apigee-service/bin/apigee-all status

    如果 Postgres 未运行,请启动它:
    > /opt/apigee/apigee-service/bin/apigee-all start
  2. 确保在旧主节点和旧备用节点上停止 Postgres:
    > /opt/apigee/apigee-service/bin/apigee-all status

    如果 Postgres 正在运行,请将其停止:
    > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
  3. 如果已安装,请在旧备用节点上启动 Qpid:
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start

    注意:在许多配置中,旧备用节点将仅托管 Postgres,而不托管 Qpid。
  4. 将新的备用节点提升为 Postgres 主节点:
    1. 将新的备用节点提升为新主节点:
      > apigee-service apigee-postgresql promote-standby-to-master new_standby_IP

      如果出现提示,请输入“apigee”用户的 Postgres 密码,默认为“postgres”。
    2. 修改用于安装当前 Edge 版本的配置文件,以指定以下内容:
      # 新主实例的 IP 地址:
      PG_MASTER=new_standby_IP
      # 旧备用节点的 IP 地址
      PG_STANDBY=old_standby_IP
    3. 配置新主节点:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
  5. 重新构建旧备用节点:
    1. 修改用于安装当前 Edge 版本的配置文件,以指定以下内容:
      # new master 的 IP 地址:
      PG_MASTER=new_standby_IP
      # old standby 节点的 IP 地址
      PG_STANDBY=old_standby_IP
    2. 移除旧备用节点上的数据目录:
      > cd /opt/apigee/data/apigee-postgresql/pgdata
      > rm -rf *
    3. 将旧备用节点重新配置为新主节点的备用节点:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
    4. 确保 Postgres 在旧备用节点上运行:
      > /opt/apigee/apigee-service/bin/apigee-all status

      如果未运行,请启动它:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
  6. 通过查看新主节点上的 /opt/apigee/apigee-postgresql/conf/pg_hba.conf 文件,验证是否已添加新的备用节点。
  7. 在管理服务器上运行以下命令,查看当前的分析和使用方群组信息:
    > curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax

    此命令会在 name 字段中返回分析群组名称,并在 consumer-groups 下的 name 字段中返回使用方群组名称。它还会在 postgres-server 字段和 datastores 字段中返回旧 Postgres 主节点和备用节点的 UUID。您应该会看到以下形式的输出:

    {
    "name" : "axgroup-001",
    "properties" : {
    },
    "scopes" : [ "VALIDATE~test", "sgilson~prod" ],
    "uuids" : {
    "qpid-server" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
    "postgres-server" : [ "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256" ]
    },
    "consumer-groups" : [ {
    "name" : "consumer-group-001",

    "consumers" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
    "datastores" : [ "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256" ],
    "properties" : { }
    } ],
    "data-processors" : {
    }
    }
  8. 在旧主节点上运行以下 cURL 命令,获取旧主节点的 UUID 地址:
    > curl -u sysAdminEmail:password http://<node_IP>:8084/v1/servers/self

    您应该会在输出末尾看到节点的 UUID,格式如下:
    "type" : [ "postgres-server" ],
    "uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"


    注意:edge-postgres-server 服务必须正在运行。如果 Postgres 服务器未运行,您可以在管理服务器上运行以下命令来确定 UUID:
    > curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/servers?pod=analytics

    此命令的输出会列出每个 Postres 节点的 IP 地址的 UUID。
  9. 重复上一步,获取旧备用节点和新主节点的 IP 地址。
  10. 从使用方群组中移除旧的主节点和备用节点:
    > curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores/masterUUID,standbyUUID" -v

    其中 axgroup-001 和 consumer-group-001 是分析和使用方群组的默认名称。 masterUUID,standbyUUID 的顺序与您在上面查看当前分析和使用方群组信息时显示的顺序相同。您可能需要将其指定为 standbyUUID,masterUUID。

    consumer-groups 的 datastores 属性现在应该为空。
  11. 从分析组中移除旧的主节点和备用节点:
    > curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v

    uuids 下的 postgres-server 属性现在应为空。
  12. 向分析和使用方组注册新的 PG 主节点和备用节点:
    > curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v

    > curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores?uuid=masterUUID,standbyUUID" -v
  13. 验证分析组:
    > curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax

    您应该会看到分析组和使用方组中列出的新主节点和备用节点的 UUID。
  14. 重启 Edge Management Server:
    > /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  15. 重启所有 Qpid 服务器:
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  16. 重启所有 Postgres 服务器:
    > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  17. 在两台服务器上运行以下脚本,验证复制状态。系统应在两个服务器上显示相同的结果,以确保复制成功:

    在新的主服务器上,运行以下命令:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

    验证它是否显示为主服务器。

    在旧备用节点上:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

    验证它是否显示为备用节点。
  18. 在发出多个 API 请求后,重复上一步,以确保节点同步。
  19. 使用将 Apigee Edge 更新到 4.16.09 中的过程停用旧 Postgres 主节点。

    注意:如果旧主节点正在运行 Qpid,您可以让该服务器继续运行 Qpid。确保其正在运行。如果未启动,请启动它:
    > /opt/apigee/apigee-service/bin/apigee-service edge-management-server start

    或者,您可以从旧主节点卸载 Qpid,并在新主节点上安装 Qpid,如下所述。卸载 Qpid 后,您可以停用旧的主节点。

从旧主节点卸载 Qpid,并在新主节点上安装 Qpid

请按照以下步骤从旧主节点中卸载 Qpid,并将其安装在新主节点上:

  1. 在所有消息处理器上运行以下命令,阻止消息处理器访问旧主节点上的 Qpid 端口 5672:
    > iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP
  2. 运行以下命令,确保 Qpid 消息队列为空。在 Qpid 处理完所有待处理消息之前,您无法将其卸载:
    > qpid-stat -q

    此命令会显示一个表格,其中包含 msg、msgIn 和 msgOut 的计数。当 msg=0 且 msgIn=msgOut 时,所有消息都将得到处理。
  3. 在旧主节点上运行以下命令,确定旧主节点上的 Qpid 服务器的 UUID。保存此信息,以便稍后在过程中使用:
    > curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self
  4. 在旧主节点上停止 Qpid:
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    > /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop
  5. 卸载 Qpid 服务器:
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
    > /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall
  6. 从分析和使用方群组中移除旧 Qpid 服务器:
    > curl -u sysAdminEmail:password -X DELETE -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers/qpid_UUID" -v

    > curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v
  7. 从 Zookeeper 中移除旧 Qpid 服务器:
    > curl -u sysAdminEmail:password -X DELETE http://<ms_IP>:8080/v1/servers/qpid_UUID
  8. 在新的主节点上安装 Qpid:
    > /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile
  9. 通过在新主服务器上运行以下命令,确定新主服务器上的 Qpid 服务器的 UUID。保存此信息,以便稍后在过程中使用:
    > curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self
  10. 向分析和使用方组注册新的 Qpid 服务器:
    > curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v

    > curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers?uuid=qpid_UUID" -v
  11. 重启所有消息处理器:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  12. 在新的 Qpid 服务器上运行以下命令,检查队列是否已创建:
    > qpid-stat -q

    确保在 Qpid 服务器处理消息时看到 msg、msgIn 和 msgOut 正在更新。

如需将各个组件从 4.16.09 回滚

在执行回滚的过程中,您必须下载当前 Edge 版本的 bootstrap.sh 文件:

  • 如需回滚到 4.16.05,请下载 bootstrap_4.16.05.sh
  • 如需回滚到 4.16.01,请下载 bootstrap.sh

对于托管要回滚的组件的每个节点:

  1. 停止要回滚的组件:
    1. 如果您要回滚节点上的以下任一组件,则必须停止所有组件:Management Server、Router、消息处理器、Qpid Server 或 Postgres Server:
      • > apigee-service edge-management-server stop
      • > apigee-service edge-router stop
      • > apigee-service edge-message-processor stop
      • > apigee-service edge-qpid-server stop
      • > apigee-service edge-postgres-server stop
    2. 如果您要回滚节点上的任何其他组件,请仅停止该组件:
      • > apigee-service comp stop
  2. 如果您要回滚变现功能,请从所有管理服务器和消息处理器节点中卸载该功能:
    > apigee-service edge-mint-gateway uninstall
  3. 卸载组件以在节点上回滚:
    1. 如果您要回滚节点上的以下任何组件,请将其全部卸载:Management Server、路由器、消息处理器、Qpid Server 或 Postgres Server:
      > apigee-service edge-gateway uninstall
    2. 如果您要回滚节点上的任何其他组件,请仅卸载该组件:
      > apigee-service comp uninstall
  4. 如果您要回滚路由器,则必须删除 /opt/nginx/conf.d 的内容:
    > cd /opt/nginx/conf.d
    > rm -rf *
  5. 如需回滚组件,请执行以下操作:
    1. 卸载 4.16.09 版本的 apigee-setup:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
    2. 下载 4.16.01 或 4.16.05 版本的 bootstrap.sh:
      对于 4.16.01:
      > curl https://software.apigee.com/bootstrap.sh -o /tmp/bootstrap.sh

      对于 4.16.05:
      > curl https://software.apigee.com/bootstrap_4.16.05.sh -o /tmp/bootstrap.sh
    3. 安装 4.16.01 或 4.16.05 apigee-service 实用程序和依赖项:
      > sudo bash /tmp/bootstrap.sh apigeeuser=uName apigeepassword=pWord

      其中,uName 和 pWord 是您从 Apigee 收到的用户名和密码。如果您省略 pWord,系统会提示您输入该密码。
    4. 安装 4.16.01 或 4.16.05 版本的 apigee-setup:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
    5. 安装 4.16.01 或 4.16.05 版本的组件:
      > /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile

      其中 comp 是要安装的组件,configFile 是您的 4.16.01 或 4.16.05 配置文件。
  6. 如需将组件回滚到 4.16.05 版本的特定版本,请执行以下操作:
    1. 下载特定组件版本:
      > /<instal_dir>/apigee/apigee-service/bin/apigee-service comp-version install

      其中 comp-version 是要安装的组件和版本。例如:
      > /<instal_dir>/apigee/apigee-service/bin/apigee-service edge-ui-4.16.05-0.0.3649 install

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

      例如:
      > yum --showduplicates list edge-ui
    2. 使用 apigee-setup 安装组件:
      > /<install_dir>/apigee/apigee-setup/bin/setup.sh -p comp -f configFile

      例如:
      > /<install_dir>/apigee/apigee-setup/bin/setup.sh -p ui -f configFile

      请注意,在执行安装时,您只需指定组件名称。

如果您在回滚时遇到问题,请与 Apigee 支持团队联系。