双集群升级
双集群升级会在源生产集群旁边构建一个目标集群。每个集群都有自己的控制面(CP)、数据面(DP)和数据库。只有在目标集群通过隔离验证后,外部负载均衡器才会开始切换流量。
此策略可以保持请求连续性,但不会同步两个数据库之间的业务写入。在回滚期限结束前,请冻结回滚相关状态,或使用经过测试的协调方案。
为双集群做准备
- 确认确切的源版本到目标版本路径允许使用双集群策略,并获取所需的 API7 支持团队方案。
- 预留足够的计算、网络和数据库容量,以便在观察期和回滚窗口内同时运行两个能够承载生产流量的集群。
- 保存源清单、配置项、证书、镜像、外部依赖配置和数据库备份。
- 对源备份进行恢复测试,并验证代表性 CP 资源,然后再用它创建目标数据库。
- 准备负载均衡器健康检查、流量阶段、连接排空、监控、验收标准、中止阈值、回滚负责人和回滚期限。
- 明确需要阻止哪些写入、允许哪些合成验证写入,以及如何删除、保留或协调每一项允许的写入。
使用双集群升级
升级过程依次包括写入冻结、目标集群隔离验证、分阶段流量切换,以及最终验收或回滚。
冻结与回滚相关的写入
宣布管理维护窗口,并阻止运维人员、客户、自动化和集成通过 CP、控制台、Admin API、开发者门户、计划任务以及直接数据库访问发起写入。
目标版本迁移和可丢弃的运行状态(例如会话、审计记录和 DP 心跳)可以只保留在目标侧,并在回滚时丢弃。记录每一项允许的合成验证写入,以及对应的清理或协调操作。
构建并验证目标集群
- 创建独立的目标数据库,并采用适合生产环境的容量、可用性、安全和备份设置。
- 为已冻结的源数据库创建数据库原生备份并恢复到目标数据库。验证恢复后的源版本和代表性资源。
- 使用该版本路径要求的确切制品和数据库迁移顺序部署目标 CP。更新所有已启用的 CP 镜像,包括
api7/api7-ee-3-integrated、api7/api7-ee-dp-manager,以及已启用的开发者门户后端、API 使用情况服务或文件服务器组件。切勿让源版本和目标版本 CP 同时连接同一个数据库。 - 在启动目标 DP 之前验证目标 CP。检查迁移日志、资源、IAM、许可证状态、集成和兼容性报告。
- 使用确切的目标
api7/api7-ee-3-gateway镜像部署目标 DP,并确认每个 DP 都报告 Healthy 和 Compatible,且没有错误。 - 在目标集群仍未接入生产流量时,测试代表性的公开和身份认证流量、自定义插件、上游、日志、指标、缓存、限流和外部依赖。
切换初始流量
将生产计划中定义的一小部分流量发送到目标 DP。在源集群上保留足够的流量和容量,以便回滚。
在定义的观察期内,对比两个集群的响应码、延迟、日志、上游健康状态、插件行为和资源利用率。达到中止阈值时停止切换。
逐步增加流量
只有前一阶段通过后,才能增加目标流量。请使用针对生产部署定义并演练过的百分比和观察期,不要把示例值当作默认值。
每个阶段都要:
- 确认两个集群都有足够容量。
- 将目标行为与源基线进行比较。
- 验证有状态依赖和限流行为。
- 继续冻结或协调与回滚相关的写入。
- 记录继续、暂停或回滚的决定。
完成流量迁移
只有所有验收标准都通 过后,才能将全部生产流量转移到目标 DP。在回滚期限结束前保留源集群,但不要在数据库已经分叉后假定流量仍能安全返回。
继续观察目标集群,并完成针对合成验证状态规划的清理或协调。
回滚
只有当源集群仍然健康,并且与回滚相关的写入始终处于冻结状态或经过测试的协调过程已完成时,才能将流量重定向到源 DP。重定向流量不会撤销目标数据库写入。
如果仅回滚流量并不安全,请按照事件处理方案的要求保持集群隔离,并在源组件恢复服务前恢复适当的数据库备份。保留目标数据库和日志以供调查。
停用源集群
仅在满足以下条件后,才能停用源 CP、DP 和数据库:
- 目标观察期和回滚期限已结束;
- 已记录验收结果;
- 已确认监控和告警;
- 所需的协调操作已完成;
- 已对保留的备份完成恢复测试。
运维注意事项
容量、有状态依赖和请求连续性行为决定了流量能否安全切换及返回。
容量
两个集群和外部负载均衡器都必须能够在每个阶段处理所分配的流量,包括流量返回源集群的情况。除正常请求负载外,还要为健康检查、连接排空和目标验证预留容量。
有状态插件
运行时指标和有状态插件数据不会自动同步。限流计数器可能位于 DP 本地或存储在 Redis 中,而且目标版本可能会使用新的键或序列化格式。
只有在测试过每个有状态插件的跨版本兼容性后,才能使用共享 Redis 部署。否则,应接受并量化流量分流期间产生的临时状态差异。
请求连续性
双集群策略旨在保持请求连续性,但不保证零停机。连续性取决于集群容量、负载均衡器行为、连接排空、上游健康状态、有状态依赖和成功验证。