如果您在更新到 Edge 4.53.00 时遇到错误,可以回滚导致错误的组件,然后再次尝试更新。
您可以将 Edge 4.53.00 回滚到以下次要版本:
- 版本 4.52.02
还原版本涉及还原您可能已升级的每个组件。此外,在将 Cassandra 回滚到版本 4.52.02 时,您应考虑一些特殊注意事项。
在以下两种情况下,您可能需要执行回滚:
- 回滚到先前的主要版本或次要版本。例如,从 4.53.00 降级到 4.52.02。
- 回滚到同一版本中的先前补丁版本。例如,从 4.53.00.01 改为 4.53.00.00。
如需了解详情,请参阅 Apigee Edge 发布流程。
回滚顺序
回滚组件应按照升级的反向顺序进行,但管理服务器应在 Cassandra 之后回滚。
私有云 4.53.00 的典型一般回滚顺序如下所示:
- 回滚 Postgres、Qpid 和其他与分析相关的组件
- 回滚路由器和消息处理器
- 回滚 Cassandra、Zookeeper
- 回滚管理服务器
例如,假设您已将整个 Cassandra 集群、所有管理服务器和几个 RMP 从 4.52.02 升级到 4.53.00,并且希望回滚。在这种情况下,您需要执行以下操作:
- 逐个回滚所有 RMP
- 使用备份回滚整个 Cassandra 集群
- 逐个回滚 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 4.0.X 可与 Edge for Private Cloud 4.53.00 搭配使用,并且与 Private Cloud 4.52.02 的其他组件兼容。
请参阅下表,了解您可以使用的各种回滚策略的摘要:
场景 | 回滚策略 |
---|---|
单个数据中心,部分 Cassandra 节点已升级 | 使用备份 |
单个数据中心,所有 Cassandra 节点均已升级 | 请勿回滚 Cassandra。其他组件可以回滚。 |
单个数据中心,所有节点(Cassandra 及其他节点)均已升级 | 请勿回滚 Cassandra。其他组件可以回滚。 |
多个数据中心,其中一个数据中心中的部分节点已升级 | 从现有 DC 重新构建 |
多个数据中心,部分数据中心中的所有 Cassandra 节点都已升级 | 从现有 DC 重新构建 |
多个数据中心,升级最后一个数据中心的 Cassandra 节点 | 请尝试完成升级。如果不可行,请使用备份回滚 1 个数据中心。从回滚的 DC 重新构建其余 DC。 |
多个数据中心,所有 Cassandra 节点均已升级 | 请勿回滚 Cassandra。其他组件可以回滚。 |
多个数据中心,所有节点(Cassandra 及其他节点)均已升级 | 请勿回滚 Cassandra。其他组件可以回滚。 |
一般注意事项
考虑回滚时,请注意以下事项:
- 回滚运行时或管理组件:如果您想将 edge-management-server、edge-message-processor 或任何非 Cassandra 组件回滚到私有云版 4.52.02,建议您不要回滚 Cassandra。Private Cloud 4.53.00 附带的 Cassandra 与 Edge for Private Cloud 4.52.02 的所有非 Cassandra 组件兼容。您可以使用此处列出的方法回滚非 Cassandra 组件,同时让 Cassandra 保持 4.0.13 版。
- 在整个 Cassandra 集群升级到 4.0.X 后回滚:如果您的整个 Cassandra 集群在升级到私有云版 4.53.00 的过程中升级到了 4.0.X 版,建议您继续使用此集群设置,而不是回滚 Cassandra。私有云版本 4.52.02 的 edge-management-server、edge-message-processor、edge-router 等组件与 Cassandra 版本 4.0.X 兼容。
- Cassandra 升级期间的 Cassandra 回滚:如果您在 Cassandra 升级期间遇到问题,不妨考虑回滚。您可以根据升级过程中所处的状态,遵循本文中列出的回滚策略。
- 使用备份进行回滚:从 Cassandra 4.0.X 创建的备份与 Cassandra 3.11.X 的备份不兼容。如需使用备份恢复功能回滚 Cassandra,您必须先备份 Cassandra 3.11.X,然后才能尝试升级。
使用重新构建功能回滚 Cassandra
前提条件
- 您在多个数据中心运营 Edge for Private Cloud 4.52.02 集群。
- 您正在将 Cassandra 从 3.11.X 升级到 4.0.X,但在升级过程中遇到了问题。
- 集群中至少有一个仍在运行旧版 Cassandra(Cassandra 3.11.X)且完全正常运行的数据中心。
此过程依赖于来自现有数据中心的数据流。此过程可能需要很长时间,具体取决于 Cassandra 中存储的数据量。您应准备好在回滚期间将运行时流量从此数据中心转移出去。
简要步骤
- 选择要回滚的一个数据中心(已部分或完全升级)。将运行时流量转移到其他正常运行的数据中心。
- 确定数据中心中的种子节点,并从其中一个种子节点开始。
- 停止、卸载并清理 Cassandra 节点。
- 在节点上安装较低版本的 Cassandra,并根据需要对其进行配置。
- 移除之前添加的额外配置。
- 对数据中心中的所有种子节点逐个重复上述步骤。
- 对数据中心中所有剩余的 Cassandra 节点逐个重复上述步骤。
- 逐个重建现有正常运行的数据中心中的节点。
- 重启数据中心中连接到 Cassandra 的所有 edge-* 组件。
- 进行测试,并将流量转回此数据中心。
- 逐个对每个数据中心重复上述步骤。
详细步骤
-
选择一个升级了所有或部分 Cassandra 节点的数据中心。在该数据中心中的 Cassandra 节点进行回滚时,将该数据中心的所有运行时代理流量和管理流量转移到其他数据中心。
确保在对节点执行
nodetool ring
命令时,所有 Cassandra 节点都处于 UN(启动/正常)状态。如果某些节点处于停机状态,请先排查问题并使这些节点重新启动,然后再继续。请参见下面的示例:
/opt/apigee/apigee-cassandra/bin/nodetool status
Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN DC1-1IP1 456.41 KiB 1 100.0% 78fc4ddd-2ed9-4a8c-98a2-63a38c2f1920 ra-1 UN DC1-1IP2 870.93 KiB 1 100.0% 160db01a-64ab-43a7-b9ea-3b7f8f66d52b ra-1 UN DC1-1IP3 824.08 KiB 1 100.0% 21d61543-d59e-403a-bf5d-bfe7f664baa6 ra-1 Datacenter: dc-2 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN DC2-1IP1 802.08 KiB 1 100.0% 583e0576-336d-4ce7-9729-2ae74e0abde2 ra-1 UN DC2-1IP2 844.4 KiB 1 100.0% fef794d5-f4c2-4a4e-bb05-9adaeb4aea4b ra-1 UN DC2-1IP3 878.12 KiB 1 100.0% 3894b3d9-1f5a-444d-83db-7b1e338bbfc9 ra-1您可以在节点上运行
nodetool describecluster
,以了解整个集群的当前状态。例如,以下是 2 个数据中心集群的实例,其中所有 DC-1 节点均采用 Cassandra 版本 4,而所有 DC-2 节点均采用 Cassandra 版本 3:# On nodes where Cassandra is upgraded
/opt/apigee/apigee-cassandra/bin/nodetool describecluster
Cluster Information: Name: Apigee Snitch: org.apache.cassandra.locator.PropertyFileSnitch DynamicEndPointSnitch: enabled Partitioner: org.apache.cassandra.dht.RandomPartitioner Schema versions: 2eadcd74-0245-309a-9992-3625afa70038: [DC-1-IP1, DC-1-IP2, DC-1-IP3] 129dc15e-198e-3c11-b64c-701044a3a1ad: [DC-2-IP1, DC-2-IP2, DC-2-IP3] Stats for all nodes: Live: 6 Joining: 0 Moving: 0 Leaving: 0 Unreachable: 0 Data Centers: dc-1 #Nodes: 3 #Down: 0 dc-2 #Nodes: 3 #Down: 0 Database versions: 4.0.13: [DC-1-IP1:7000, DC-1-IP2:7000, DC-1-IP3:7000] 3.11.16: [DC-2-IP1:7000, DC-2-IP2:7000, DC-2-IP3:7000] Keyspaces: system_schema -> Replication class: LocalStrategy {} system -> Replication class: LocalStrategy {} auth -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} cache -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} devconnect -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} dek -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} user_settings -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} apprepo -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} kms -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} identityzone -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} audit -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} analytics -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} keyvaluemap -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} counter -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} apimodel_v2 -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} system_distributed -> Replication class: SimpleStrategy {replication_factor=3} system_traces -> Replication class: SimpleStrategy {replication_factor=2} system_auth -> Replication class: SimpleStrategy {replication_factor=1} # On nodes where Cassandra is not upgraded/opt/apigee/apigee-cassandra/bin/nodetool describecluster
Cluster Information: Name: Apigee Snitch: org.apache.cassandra.locator.PropertyFileSnitch DynamicEndPointSnitch: enabled Partitioner: org.apache.cassandra.dht.RandomPartitioner Schema versions: 2eadcd74-0245-309a-9992-3625afa70038: [DC-1-IP1, DC-1-IP2, DC-1-IP3] 129dc15e-198e-3c11-b64c-701044a3a1ad: [DC-2-IP1, DC-2-IP2, DC-2-IP3] - 确定数据中心中的种子节点:请参阅附录中的如何确定种子节点部分。在其中一个种子节点上执行以下步骤:
- 停止、卸载 Cassandra 节点并清理数据。
选择此数据中心中 Cassandra 版本 4 的第一个种子节点。别这样。
# Stop Cassandra service on the node
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
# Uninstall Cassandra software/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
# Wipe out Cassandra datarm -rf /opt/apigee/data/apigee-cassandra
- 在节点上安装较旧的 Cassandra 软件并设置一些配置。 执行 Edge for Private Cloud 4.52.02 的引导文件。
# Download bootstrap of 4.52.02curl https://software.apigee.com/bootstrap_4.52.02.sh -o /tmp/bootstrap_4.52.02.sh -u uName:pWord
# Execute bootstrap of 4.52.02sudo bash /tmp/bootstrap_4.52.02.sh apigeeuser=uName apigeepassword=pWord
设置 Cassandra 配置
- 创建或修改
/opt/apigee/customer/application/cassandra.properties
文件。 - 将以下内容添加到该文件中。
ipOfNode
是 Cassandra 用于与其他 Cassandra 节点通信的节点的 IP 地址:conf_jvm_options_custom_settings=-Dcassandra.replace_address=ipOfNode -Dcassandra.allow_unsafe_replace=true
- 确保该文件由 apigee 用户拥有且可供其读取:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- 安装并设置 Cassandra:
- 安装 Cassandra 版本 3.11.X:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra install
- 通过传递标准配置文件来设置 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f configFile
- 确保已安装 Cassandra 3.11.X 且服务正在运行:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra version
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra status
- 安装 Cassandra 版本 3.11.X:
- 验证节点是否已启动。在该节点和集群中的其他节点上检查以下命令。节点应报告其处于“UN”(启动/正常)状态:
/opt/apigee/apigee-cassandra/bin/nodetool status
- 从文件
/opt/apigee/customer/application/cassandra.properties
中移除之前添加的额外配置。 - 依次对数据中心中的所有 Cassandra 种子节点重复第 3 步到第 6 步。
- 依次对数据中心中所有剩余的 Cassandra 节点重复第 3 步到第 6 步。
- 从运行旧版 Cassandra 的数据中心重建数据中心中的所有节点。一次执行一个节点执行此步骤:
/opt/apigee/apigee-cassandra/bin/nodetool rebuild -dc <name of working DC>
此过程可能需要一些时间。您可以根据需要调整streamingthroughput
。使用以下命令查看状态:/opt/apigee/apigee-cassandra/bin/nodetool netstats
- 依次重启数据中心中的所有 edge-* 组件:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- 验证并将流量转回此数据中心。在此数据中心针对运行时流量和管理 API 运行一些验证,然后开始将代理和管理 API 流量重定向回此数据中心。
- 对要回滚的每个数据中心重复上述步骤。
使用备份回滚 Cassandra
前提条件
- 您正在将 Cassandra 从 3.11.X 升级到 4.0.X,但在升级过程中遇到了问题。
- 您有要回滚的节点的备份。备份是在尝试从 3.11.X 升级到 4.0.X 之前进行的。
步骤
选择要回滚的节点。如果您要使用备份回滚数据中心中的所有节点,请先从种子节点开始。请参阅附录中的“如何识别种子节点”部分。
停止、卸载并清理 Cassandra 节点:
# Stop Cassandra service on the node
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
# Uninstall Cassandra software/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
# Wipe Cassandra datarm -rf /opt/apigee/data/apigee-cassandra
在节点上安装较低版本的 Cassandra 软件并对其进行配置:
- 执行适用于 Edge for Private Cloud 4.52.02 的引导文件:
# Download bootstrap for 4.52.02
curl https://software.apigee.com/bootstrap_4.52.02.sh -o /tmp/bootstrap_4.52.02.sh -u ‘uName:pWord’
# Execute bootstrap for 4.52.02sudo bash /tmp/bootstrap_4.52.02.sh apigeeuser=uName apigeepassword=pWord
- 创建或修改
/opt/apigee/customer/application/cassandra.properties
文件: - 确保文件归 apigee 用户所有且可读:
- 安装并设置 Cassandra:
停止 Cassandra 服务并恢复备份。如需了解详情,请参阅备份和恢复文档:
# Stop Cassandra service on the node
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
# Wipe the data directory in preparation for restorerm -rf /opt/apigee/data/apigee-cassandra/data
# Restore the backup taken before the upgrade attempt/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backupFile
备份恢复后,请移除其他配置:
从文件
/opt/apigee/customer/application/cassandra.properties
中移除之前添加的配置。在节点上启动 Cassandra 服务:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
对您希望使用备份回滚的每个 Cassandra 节点重复上述步骤,一次一个。
恢复所有 Cassandra 节点后,依次重启所有 edge-* 组件:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
conf_jvm_options_custom_settings=-Dcassandra.replace_address=ipOfNode -Dcassandra.allow_unsafe_replace=true
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
# Install Cassandra version 3.11.X/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra install
# Set up Cassandra with the standard configuration file/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f configFile
# Verify Cassandra version and check service status/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra version
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra status
验证节点是否已启动。在该节点和集群中的其他节点上检查以下命令。节点应报告此节点处于“UN”状态:
/opt/apigee/apigee-cassandra/bin/nodetool status
备份优化(高级选项)
如果您有包含最新数据的可用副本,则可以在恢复备份时尽可能减少(或避免)数据丢失。如果有可用的副本,请在恢复备份后,对已恢复的节点运行修复操作。
附录
如何识别种子节点
在数据中心的任何 Cassandra 节点上,运行以下命令:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure -search conf_cassandra_seeds
该命令将输出多行内容。查看输出的最后一行。最后一行中列出的 IP 地址是种子节点。在以下示例中,DC-1-IP1
、DC-1-IP2
、DC-2-IP1
和 DC-2-IP2
是种子节点 IP:
Found key conf_cassandra_seeds, with value, "127.0.0.1", in /opt/apigee/apigee-cassandra/token/default.properties Found key conf_cassandra_seeds, with value, 127.0.0.1, in /opt/apigee/apigee-cassandra/token/application/cassandra.properties Found key conf_cassandra_seeds, with value, "DC-1-IP1, DC-1-IP2, DC-2-IP1, DC-2-IP2", in /opt/apigee/token/application/cassandra.properties apigee-configutil: apigee-cassandra: # OK
回滚到先前的主要版本或次要版本
如需回滚到之前的主要版本或次要版本,请在托管该组件的每个节点上执行以下操作:
-
下载要回滚到的版本的
bootstrap.sh
文件:- 如需回滚到 4.52.02,请下载
bootstrap_4.52.02.sh
:curl https://software.apigee.com/bootstrap_4.52.02.sh -o /tmp/bootstrap_4.52.02.sh
- 如需回滚到 4.52.02,请下载
- 停止组件以进行回滚:
- 如需回滚节点上的任何包含通用代码的组件,您必须停止所有这些组件,如以下示例所示:
/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-gateway
组件组之外,您还必须删除/opt/nginx/conf.d
文件的内容:cd /opt/nginx/conf.d
rm -rf *
- 如需回滚节点上的任何包含通用代码的组件,您必须通过卸载
- 卸载 4.53.00 版
apigee-setup
:/opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
- 安装 4.52.02 版的
apigee-service
实用程序及其依赖项。以下示例会安装 4.52.02 版的apigee-service
:sudo bash /tmp/bootstrap_4.52.02.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
- 对托管要回滚的组件的每个节点重复此过程。
回滚到先前的补丁版本
如需将组件回滚到特定补丁版本,请在托管该组件的每个节点上执行以下操作:
- 下载特定组件版本:
/opt/apigee/apigee-service/bin/apigee-service component_version install
其中 component_version 是要安装的组件和补丁版本。例如:
/opt/apigee/apigee-service/bin/apigee-service edge-ui-4.53.00-0.0.20254 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
请注意,在安装组件时,您只需指定组件名称,而无需指定版本。
- 对托管要回滚的组件的每个节点重复此过程。
回滚 mTLS
如需回滚 mTLS 更新,请在所有主机上执行以下步骤:
- 停止 Apigee:
apigee-all stop
- 停止 mTLS:
apigee-service apigee-mtls uninstall
- 重新安装 mTLS:
apigee-service apigee-mtls install
apigee-service apigee-mtls setup -f /opt/silent.conf