Edge for Private Cloud v4.18.05
如果您在更新到 Edge 4.18.05 期间遇到错误,可以回滚导致错误的组件,然后再次尝试更新。
您可以将 Edge 4.18.05 回滚到以下功能发布版本:
- 版本 4.18.01
- 版本 4.17.09*
- 版本 4.17.05*
* 如需从 4.18.05 回滚到 4.17.09 或 4.17.05,除了回滚每个节点上的组件之外,您还必须回滚 Postgres。如果您回滚到 4.18.01,则无需回滚 Postgres,因为升级过程不包含 Postgres 更新。
在以下两种情况下,您可能需要执行回滚:
- 回滚到之前的 Feature Release。例如,从 4.18.05 降级到 4.18.01。
- 回滚到同一版本中的先前更新版本。例如,从 4.18.05.02 降级到 4.18.05.01。
如需了解详情,请参阅 Apigee 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 服务器)
例如,如果您在节点上安装了管理服务器、路由器和消息处理器,则要回滚其中任何一个,您必须回滚所有这三个组件。
回滚到先前的功能版本
如需从 4.18.05 回滚到 4.17.09 或 4.17.05,除了回滚每个节点上的组件之外,您还必须回滚 Postgres。如果您从 4.18.01 回滚,则无需回滚 Postgres,因为升级过程不包含 Postgres 更新。
如需回滚到之前的特性版本,请在托管该组件的每个节点上执行以下操作:
-
下载要回滚到的版本的
bootstrap.sh文件:- 如需回滚到 4.18.01,请下载
bootstrap_4.18.01.sh:curl https://software.apigee.com/bootstrap_4.18.01.sh -o /tmp/bootstrap_4.18.01.sh
- 如需回滚到 4.17.09,请下载
bootstrap_4.17.09.sh:curl https://software.apigee.com/bootstrap_4.17.09.sh -o /tmp/bootstrap_4.17.09.sh
- 如需回滚到 4.17.05,请下载
bootstrap_4.17.05.sh:curl https://software.apigee.com/bootstrap_4.17.05.sh -o /tmp/bootstrap_4.17.05.sh
- 如需回滚到 4.18.01,请下载
- 停止要回滚的组件:
- 如需回滚节点上具有通用代码的任何组件,您必须停止所有这些组件,如以下示例所示:
/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 - 如需回滚节点上的任何其他组件,请仅停止该组件:
/opt/apigee/apigee-service/bin/apigee-service component stop
- 如需回滚节点上具有通用代码的任何组件,您必须停止所有这些组件,如以下示例所示:
- 如果您要回滚创收功能,请从所有管理服务器和消息处理器节点中卸载该功能:
/opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
- 卸载要在节点上回滚的组件:
- 如需回滚节点上具有通用代码的任何组件,您必须通过卸载
edge-gateway组件组来卸载所有组件,如以下示例所示:/opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
- 如需回滚节点上的任何其他组件,请仅卸载该组件,如以下示例所示:
/opt/apigee/apigee-service/bin/apigee-service component uninstall
其中,component 是组件名称。
- 如需回滚 Edge 路由器,除了卸载
edge-gateway组件组之外,您还必须删除/opt/nginx/conf.d文件的内容:cd /opt/nginx/conf.d
rm -rf *
- 如需回滚节点上具有通用代码的任何组件,您必须通过卸载
- 卸载 4.18.05 版本的
apigee-setup:/opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
- 安装 4.18.01、4.17.09 或 4.17.05 版本的
apigee-service实用程序及其依赖项。以下示例安装 4.17.09 版本的apigee-service:sudo bash /tmp/bootstrap_4.17.09.sh apigeeuser=uName apigeepassword=pWord
其中,uName 和 pWord 是您从 Apigee 收到的用户名和密码。如果您省略 pWord,系统会提示您输入。
如果您收到错误消息,请确保您已在第 1 步中下载
bootstrap.sh文件。 - 安装
apigee-setup:/opt/apigee/apigee-service/bin/apigee-service apigee-setup install
- 安装旧版组件:
/opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile
其中,component 是要安装的组件,configFile 是旧版本的配置文件。
- 如果您要回滚 Qpid,请刷新 iptables:
sudo iptables -F
- 对托管要回滚的组件的每个节点重复此过程。
如需从 4.18.05 回滚到 4.17.09 或 4.17.05,除了回滚每个节点上的组件之外,您还必须回滚 Postgres。如果您从 4.18.01 回滚,则无需回滚 Postgres,因为升级过程不包含 Postgres 更新。
回滚到先前的更新版本
如需将组件回滚到特定版本的发布版本,请在托管该组件的每个节点上执行以下操作:
- 下载特定组件版本:
/opt/apigee/apigee-service/bin/apigee-service component_version install
其中,component_version 是要安装的组件和更新版本。例如:
/opt/apigee/apigee-service/bin/apigee-service edge-ui-4.17.09-0.0.3749 install
如果您使用的是 Apigee 在线代码库,则可以使用以下命令确定可用的组件版本:
yum --showduplicates list comp
例如:
yum --showduplicates list edge-ui
- 使用
apigee-setup安装该组件:/opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
例如:
/opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile
请注意,安装组件时,您只需指定组件名称,而无需指定版本。
- 对托管要回滚的组件的每个节点重复此过程。
如需从 4.18.05 回滚到 4.17.09 或 4.17.05,除了回滚每个节点上的组件之外,您还必须回滚 Postgres。如果您从 4.18.01 回滚,则无需回滚 Postgres,因为升级过程不包含 Postgres 更新。
回滚 Postgres 9.6 更新
如果您从 4.17.05 或 4.17.09 版升级到 4.18.05,则除了 Edge 组件之外,还必须回滚 Postgres 更新。
如需在主备配置中更新 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 status
如果 Postgres 正在运行,请将其停止:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
- 如果已安装,请在旧备用节点上启动 Qpid:
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
- 将新的备用节点提升为 Postgres 主节点:
- 将新的备用节点提升为新的主节点:
apigee-service apigee-postgresql promote-standby-to-master new_standby_IP
如果出现提示,请输入“apigee”用户的 Postgres 密码,默认为“postgres”。
- 修改用于安装当前 Edge 版本的配置文件,以指定以下内容:
# IP address of the new master: PG_MASTER=new_standby_IP # IP address of the old standby node PG_STANDBY=old_standby_IP
- 配置新主实例:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
- 将新的备用节点提升为新的主节点:
- 重新构建旧备用节点:
- 修改用于安装当前 Edge 版本的配置文件,以指定以下内容:
# IP address of the new master: PG_MASTER=new_standby_IP # IP address of the old standby node 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-service edge-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字段中返回分析组名称,并在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" : { } } - 在旧主节点上运行以下
curl命令,获取旧主节点的 UUID 地址:curl -u sysAdminEmail:password http://node_IP:8084/v1/servers/self
您应该会在输出末尾看到节点的 UUID,格式如下:
"type" : [ "postgres-server" ], "uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"
- 重复上一步,获取旧备用节点和新主节点的 IP 地址。
- 从使用方群组中移除旧的主节点和备用节点:
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属性现在应为空。 - 从分析组中移除旧的主节点和备用节点:
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属性现在应为空。 - 向分析和使用方群组注册新的 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 - 验证分析组:
curl -u sysAdminEmail:password http://ms_IP:8080/v1/analytics/groups/ax
您应该会在分析组和使用方组中看到新主节点和备用节点的 UUID。
- 重启 Edge Management Server:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 重启所有 Qpid 服务器:
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
- 重启所有 Postgres 服务器:
/opt/apigee/apigee-service/bin/apigee-service edge-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.01/4.16.05 更新到 4.17.09 中的过程停用旧 Postgres 主实例。
或者,您可以从旧主节点卸载 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, and 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-service edge-qpid-server stop
/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop - 卸载 Qpid 服务器:
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall - 从分析和使用方群组中移除旧 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 - 从 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
- 向分析和使用方群组注册新的 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 - 重启所有消息处理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 在新 Qpid 服务器上运行以下命令,检查队列是否已创建:
qpid-stat -q
确保您看到
msg、msgIn和msgOut在 Qpid 服务器处理消息时更新。
如果您在回滚时遇到问题,请与 Apigee Edge 支持团队联系。