API 网关集群迁移
集群迁移是指在保持软件版本不变的情况下,将整个 API7 企业版部署从一个基础设施环境移动到另一个基础设施环境的过程。本指南专为平台工程师和架构师设计,适用于数据中心迁移、基础设施升级或在不同云服务提供商之间切换等需要零停机迁移的场景。
与版本升级不同,集群迁移侧重于将现有部署平滑地移动到一个新的、并行的环境,而控制面(CP)或数据面(DP)的版本不会改变。该策略的核心是通过备份生产数据库并将其在新的集群 中恢复来确保配置和数据的完整性。接着,使用负载均衡器逐步引导流量,从而实现无缝过渡并提供可靠的回滚方案。
这种方法不仅降低了与基础设施变更相关的风险,而且有效避免了常见的潜在问题,比如新的数据面错误地连接到旧的控制面时可能会发生的 mTLS 证书不匹配问题。
迁移工作流
下图展示了零停机时间集群迁移的工作流:
上图展示了完整的迁移工作流。在准备新集群(集群 B)的同时,旧集群(集群 A)继续处理生产环境的流量。一旦新集群被验证且健康状态良好,就可以通过负载均衡器逐步将流量从旧集群切换到新集群。
前提条件
在开始集群迁移之前,请确保满足以下前提条件,以保证迁移过程顺利且成功。
| 前提条件 | 描述 |
|---|---|
| 新集群基础设施 | 必须完成新集群(集群 B)基础设施的全部配置,包括所有网络、存储和计算资源。 |
| 安装 API7 企业版 | 必须在新集群上安装与旧集群(集群 A)中运行版本完全相同的 API7 企业版。 |
| 数据库工具 | 必须为旧数据库和新数据库环境配置并测试好数据库备份和恢复工具。 |
| 负载均衡器 | 必须配备一个外部负载均衡器,该负载均衡器应具备管理和在旧集群与新集群之间分配流量的能力。 |
| 权限 | 你必须具备必要的管理员权限,以便从旧集群执行数据库备份并能够在新集群上执行恢复操作。 |
| 迁移前测试 | 应该在暂存或测试环境中进行一次完整的迁移演练,以验证整个流程并识别任何潜在的问题。 |
迁移步骤
按照以下步骤执行零停机时间集群迁移。该过程经过精心设计,采用循序渐进的方式,并在每个阶段均包含验证检查,以确保过渡安全平稳。
步骤 1:冻结旧集群的配置变更
为了防止迁移过程中的数据不一致,必须在旧集群(集群 A)上实施配置冻结。向你的开发团队宣布维护窗口期,并暂停所有通过 API7 控制台(Dashboard)、Admin API 或其他配置管理工具进行的配置变更。
此冻结操作可以确保你创建的数据库备份包含生产配置的完整且静态的快照。备份之后进行的任何变更都不会被迁移到新集群中。
步骤 2:备份和恢复数据库
一旦配置冻结生效,请继续从旧集群备份数据库,并将其恢复到新集群。
- 备份数据库 A:从集群 A 执行数据库的完整备份。确保备份包含所有 API 配置、路由、插件、消费者凭证以及 SSL 证书。详细说明请参阅数据库备份和恢复指南。
- 传输并恢复至数据库 B:将备份文件传输至新集群环境,并将其恢复至数据库 B。恢复完成后,通过检查 API、路由和其他关键配置对象的数量来验证数据的完整性。
步骤 3:启动并验证新集群
随着数据库恢复完毕,现在你可以将新集群(集群 B)上线。
- 启动控制面 B:启动新集群中的控制面(CP),并确保它成功连接到已恢复的数据库(数据库 B)。
- 验证 DP Manager 地址:在部署数据面之前,请验证新集群中的 DP Manager 地址是否已正确配置并指向新的控制面。你可以在控制面的**网关设置 > 部署(Gateway Settings > Deployment)**页面中进行检查,或者在部署方法中更新该配置:
- 对于 Helm 部署,请更新
values.yaml文件中的etcd.host[0]值。 - 对于 Docker/Docker Compose 部署,请确保部署配置中的
API7_DP_MANAGER_ENDPOINTS地址指向新的控制面。
- 对于 Helm 部署,请更新
- 验证健康状态:使用网关健康探测来确认新的数据面(DP)是否已运行且状态健康。你还应该检查 CP 和 DP 的日志,以确保没有出现连接错误。