Edge for Private Cloud v. 4.17.01
如果在更新到 Edge 4.17.01 时出错,您可以回滚导致错误的组件,然后再次尝试更新。例如,如果对 Postgres 9.4 的更新失败,您可以仅回滚 Postgres 节点并再次尝试更新。
在以下两种情况下,您可能需要执行回滚:
- 回滚到较低版本。例如,从 4.17.01 到 4.16.09。
- 回滚到同一版本的较低版本。
请使用以下步骤针对这两种情况执行回滚。
谁可以执行回滚
执行回滚的用户应与最初更新 Edge 的用户相同,或以 root 身份运行的用户相同。
默认情况下,Edge 组件以用户“apigee”的身份运行。在某些情况下,您可能以不同的用户身份运行 Edge 组件。例如,如果路由器必须访问特权端口(例如低于 1000 的端口),则必须以 root 用户或有权访问这些端口的用户身份运行路由器。或者,您也可以以一个用户身份运行一个组件,以另一个用户身份运行另一个组件。
哪些组件可以回滚
执行回滚时,您应注意以下情况:
- 下列五个 Edge 组件共用一个通用代码。因此,如需回滚节点上的五个组件中的任何一个,您必须回滚安装在节点上的五个组件中的任何一个。例如,如果您在节点上安装了管理服务器、路由器和消息处理器,如需回滚其中任何一个,您必须全部回滚。
五个共享代码的组件包括:- 管理服务器
- 路由器
- 消息处理器
- Qpid 服务器
- Postgres 服务器
- 如果您是从 Edge 4.16.01 进行更新,请勿回滚 Cassandra。此版本的 Edge 包含 Cassandra 的更新版本。如果您要回滚任何组件,请将 Cassandra 保留为 4.17.01 版本。
4.17.01 回滚
本部分包含将 Edge 4.17.01 回滚到先前版本的过程。本部分分为两部分:
- 如果您仅从 4.16.01 或 4.16.05 进行更新 - 将 Postgres 更新回滚到 9.4 版
从 4.16.01 或 4.16.05 开始,每个更新过程的最后一部分都是将 Postgres 节点更新到版本 9.4。如果该更新失败,您可以使用此过程回滚更新。 - 回滚所有其他 Edge 组件
此过程可用于回滚任何其他 Edge 组件。
如需回滚 Postgres 9.4 更新,请执行以下操作:
如需在主备用配置中更新 Postgres 时回滚 Postgres 更新,请执行以下操作:
- 将新的备用节点提升为 Postgres 主节点。新的 Postgres 主实例与之前安装的 Edge 的版本相同。
- 将旧备用节点配置为新主节点的备用节点。旧备用节点的版本与之前安装的 Edge 相同。
- 向分析群组和使用方群组注册新的主节点和备用节点。
完成回滚后,将不再需要旧的主节点。然后,您可以停用旧的主节点。
- 确保新的备用 Postgres 节点正在运行:
> /opt/apigee/apigee-service/bin/apigee-all status
如果 Postgres 未运行,请启动:
> /opt/apigee/apigee-service/bin/apigee-all start - 请确保在旧主节点和旧备用节点上停止 Postgres:
> /opt/apigee/apigee-service/bin/apigee-all 状态
如果 Postgres 正在运行,请停止:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-postgres-server stop
/opt/apigee/apigee-service/apigee/apigee/apigee/ - 如果已安装,请在旧备用节点上启动 Qpid:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-qpid-server start
注意:在许多配置中,旧备用节点将仅托管 Postgres,而不托管 Qpid。 - 将新的备用节点升级为 Postgres 主实例:
- 将新的备用节点升级为新主节点:
> apigee-service apigee-postgresql 升级-standby-to-master new_standby_IP
如果看到提示,请输入“apigee”用户的 Postgres 密码,默认密码为“postgres”。 - 修改用于安装当前版本 Edge 的配置文件以指定以下内容:
新主实例的# IP 地址:
PG_MASTER=new_standby_IP
# 旧备用节点的 IP 地址
PG_STANDBY=old_standby_IP - 配置新的主实例:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
- 将新的备用节点升级为新主节点:
- 重新构建旧的备用节点:
- 修改用于安装当前版本 Edge 的配置文件,以指定以下内容:
新主实例的# IP 地址:
PG_MASTER=new_standby_IP
# 旧备用节点的 IP 地址
PG_STANDBY=old_standby_IP - 移除旧备用节点上的数据目录:
> cd /opt/apigee/data/apigee-postgresql/pgdata
> rm -rf * - 将旧备用节点重新配置为新主节点的备用节点:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile - 确保 Postgres 在旧备用节点上运行:
> /opt/apigee/apigee-service/bin/apigee-all status
如果未在运行,请启动:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-postgres-server start
- 修改用于安装当前版本 Edge 的配置文件,以指定以下内容:
- 查看新主节点上的 /opt/apigee/apigee-postgresql/conf/pg_hba.conf 文件,以验证是否已添加新的备用节点。
- 通过在管理服务器上运行以下命令,查看当前的分析和使用方群组信息:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax
此命令会在 name 字段中返回分析群组名称,并在 consumername-groups 字段中返回使用方群组名称。它还会在 postgres-server 字段和 datastores 字段中返回旧 Postgres 主节点和备用节点的 UUID。您应该会看到以下输出内容:
{
"name-82f56"a-8"2"72"86"a"2"72"8.2"72"8.2.2"7.2"在 8.2.2 向在向 8.2.2.2.2.2.3.6.6.6.6.6.6.6.6.6.6.6.7.7.并在处于活动状态的工作原理结合使用的向内容创建工具 b6-82"7-8.. - 通过在旧主节点上运行以下 c网址 命令,获取旧主实例的 UUID 地址:
> curl -u sysAdminEmail:password http://<node_IP>:8084/v1/servers/self
您应在输出末尾看到运行该节点的 UUID,该位置的格式如下:[serviceu-bfe5]<type-bf7:
如果 Postgres 服务器没有运行,您可以在管理服务器上运行以下命令来确定 UUID:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/servers?pod=analytics
此命令的输出会列出每个 Postres 节点 IP 地址的 UUID。 - 重复执行上一步,获取旧备用节点和新主节点的 IP 地址。
- 从使用方组中移除旧的主节点和备用节点:
> curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-consumer-groups/consumer-group-consumer-001/consumer-group-001/consumer-group-001/consumer-group-001consumer-group-consumer-001
masterUUID,standbyUUID 的顺序与上面查看当前的分析和使用方群组信息时显示的顺序相同。您可能必须将它们指定为 standbyUUID,masterUUID。
consumer-groups 的 datastores 属性现在应为空。 - 从分析组中移除旧的主节点和备用节点:
> curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standby UUID&type - 向 Analytics 和使用方群组注册新的 PG 主节点和备用节点:
> curl/analytics/consumergroup>sysAdminEmail:passwordsysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup/0000axgroup/0.0.0.0axgroup/0.0 - 验证分析组:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax
您应该会看到分析组和使用方群组中列出的新主节点和备用节点的 UUID。 - 重启边缘管理服务器:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-management-server restart - 重启所有 Qpid 服务器:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-qpid-server restart - 重启所有 Postgres 服务器:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-postgres-server restart - 通过在两台服务器上发出以下脚本来验证复制状态。系统应在两个服务器上显示相同的结果,以确保复制成功:
在新的主实例上,运行以下命令:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
验证其是否为主服务器。
在旧备用节点上:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby
验证是否为备用节点。 - 在发出多个 API 请求后重复执行上一步,以确保节点已同步。
- 按照将 Apigee Edge 更新到 4.16.09 中的步骤停用旧的 Postgres 主实例。
注意:如果旧的主节点正在运行 Qpid,则您可以让该服务器保持运行 Qpid。确保它正在运行。如果不是,请启动:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-management-server start
或者,你也可以从旧的主节点卸载 Qpid,并在新的主节点上安装 Qpid,如下所述。卸载 Qpid 后,您可以停用旧的主节点。
从旧主实例中卸载 Qpid,并在新主实例上安装 Qpid
按照以下步骤从旧的主实例中卸载 Qpid,并将其安装在新的主实例上:
- 通过在所有消息处理器上运行以下命令,阻止消息处理器访问旧主节点上的 Qpid 端口 5672:
> iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP - 运行以下命令,确保 Qpid 消息队列为空。在 Qpid 处理完所有待处理消息之前,您无法卸载它:
> qpid-stat -q
此命令会显示一个表,其中包含 msg、msgIn 和 msgOut 计数。当 msg=0 且 msgIn=msgOut 时,所有消息均已处理。 - 在旧主实例上运行以下命令,确定旧主实例上 Qpid 服务器的 UUID。保存此信息,以便稍后执行下述操作:
> curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self - 在旧主实例上停止 Qpid:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-qpid-server stop
> /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop - 卸载 Qpid 服务器:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-qpid-server 完整卸载
> /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall - 从 Analytics(分析)和使用方群组中移除旧的 Qpid 服务器:
> curl/analytics/consumer.0.0sysAdminEmail/password -X DELETE -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-consumer-groupsaxgroup/consumer-groups - 从 ZooKeeper 中移除旧的 Qpid 服务器:
> curl -u sysAdminEmail:password -X DELETE http://<ms_IP>:8080/v1/servers/qpid_UUID - 在新主实例上安装 Qpid:
> /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile - 在新主实例上运行以下命令,确定新主实例上 Qpid 服务器的 UUID。保存此信息,以便稍后执行下述操作:
> curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self - 向 analytics 和 consumer groups 注册新的 Qpid 服务器:
> curl/analytics/consumer-group0 sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup/cloud-groups<ms_IP><ms_IP>:<b><ms_IP>:<b><ms_IP> - 重启所有消息处理器:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-message-processor restart - 在新的 Qpid 服务器上运行以下命令,检查是否已创建队列:
> qpid-stat -q
确保当 Qpid 服务器处理消息时,您可以看到 msg、msgIn 和 msgOut 不断更新。
从 4.17.01 回滚各个组件
在执行回滚的过程中,您必须下载当前版本的 Edge 的 bootstrap.sh 文件:
- 如需回滚到 4.16.09,请下载 bootstrap_4.16.09.sh
- 如需回滚到 4.16.05,请下载 bootstrap_4.16.05.sh
- 如需回滚到 4.16.01,请下载 bootstrap.sh
对于托管要回滚的组件的每个节点:
- 停止要回滚的组件:
-
如果您要在节点上回滚以下任一组件,则必须停止所有组件:管理服务器、路由器、消息处理器、Qpid 服务器或 Postgres 服务器:
- > apigee-service Edge-management-server stop
- > apigee-service 边缘路由器停止
- > apigee-service Edge-message-processor 停止
- > apigee-service Edge-qpid-server 停止
- > apigee-service edge-postgres-server 停止
-
如果您要回滚节点上的任何其他组件,请仅停止该组件:
- > apigee-service comp 停止
-
如果您要在节点上回滚以下任一组件,则必须停止所有组件:管理服务器、路由器、消息处理器、Qpid 服务器或 Postgres 服务器:
- 如果您要回滚创收功能,请从所有管理服务器和消息处理器节点中卸载该应用:
> apigee-serviceedge-mint-这是卸载 - 卸载组件以在节点上回滚:
- 如果要回滚节点上的以下任何组件,请将其全部卸载:管理服务器、路由器、消息处理器、Qpid 服务器或 Postgres 服务器:
> apigee-serviceedge-该代码 卸载 - 如果要回滚节点上的任何其他组件,请仅卸载该组件:
> apigee-service comp每项卸载 - 如果您回滚路由器,则必须删除 /opt/nginx/conf.d 的内容:
> cd /opt/nginx/conf.d
> rm -rf *
- 如果要回滚节点上的以下任何组件,请将其全部卸载:管理服务器、路由器、消息处理器、Qpid 服务器或 Postgres 服务器:
-
如需回滚组件,请执行以下操作:
- 卸载 4.17.01 版本的 apigee-setup:
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall - 下载适用于 4.16.01、4.16.05 或 4.16.09 版本的 bootstrap.sh:
例如,对于 4.16.09:
> curl https://software.apigee.com/bootstrap_4.16.09.sh -o /tmp/bootst6. - 安装 4.16.01、4.16.05 或 4.16.09 apigee-service 实用程序和依赖项。
例如,对于 4.16.09:
> sudo bash /tmp/bootstrap_4.16.09.sh apigeeuser=uName apigeepassword=pWord
其中 uName 和 pWord 是您从 Apigee 收到的用户名和密码。
如果您省略 pWord,系统会提示您输入该密码。 - 安装 4.16.01、4.16.05 或 4.16.09 版的 apigee-setup:
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup install - 安装 4.16.01、4.16.05 或 4.16.09 版本的组件:
> /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
其中 comp 是要安装的组件,或者 comp.6.6.1.6.1.6.1 是要安装的组件。 - 如果您要回滚 Qpid,请刷新 iptables:
> sudo iptables -F
- 卸载 4.17.01 版本的 apigee-setup:
-
如需将该组件回滚到特定版本的 4.17.01,请执行以下操作:
- 下载特定的组件版本:
> /opt/apigee/apigee-service/bin/apigee-service comp-version install
其中 comp-version 是要安装的组件和版本。例如:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-ui-4.17.01-0.0.3749 install
如果您使用的是 Apigee 在线代码库,可以使用以下命令确定可用的组件版本:
> yum --showDuplicates list comp
> For - 使用 apigee-setup 安装该组件:
> /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
例如:
> /opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile。
- 下载特定的组件版本:
如果您在回滚时遇到问题,请与 Apigee 支持团队联系。