双集群升级
你可以使用双集群升级策略来升级 API7 企业版集群。
双集群升级策略会在你现有的生产集群(集群 X)旁边部署一个全新的、平行的集群(集群 Y)。每个集群都是完全独立的,具有各自的控制平面、数据平面和数据库。在升级过程中,禁止通过 API 或继续操作 CP 来修改你的配置。
使用外部负载均衡器将流量逐渐从旧集群转移到新集群。这种升级方法可实现零停机时间并允许即时回滚,如下图所示:
准备工作
- 阅读升级指南并确保你了解整个升级过程是如何执行的。
- 确保你有足够的资源来并行运行两个完整的生产集群。
- 从集群 X(数据库 X)备份你当前的数据。
- 查看升级注意事项。
- 检查当前版本与目标升级版本之间的所有更改。
- 为流量切换准备外部负载均衡器配置。
- 规划流量切换时间表和监控策略。
双集群升级步骤
信息
以下实施步骤仅供参考。实际执行可能会根据你的部署环境而有所不同。
第 1 步:冻结配置更改
宣布配置更改的维护窗口。在整个升级过程中,不要对旧集群(集群 X)上的 API 配置进行任何更改。这对于防止两个集群之间出现不一致至关重要。
- 停止通过集群 X 上的 API 或控制台(Dashboard)进行的所有配置修改。
- 记录所有配置的当前状态以供参考。
第 2 步:部署新集群(集群 Y)
-
提供新数据库(数据库 Y):
- 为集群 Y 设置一个新的数据库实例。
- 确保它具有与数据库 X 相似的足够容量和性能特征。
-
备份和恢复数据库:
- 使用
pg_dump或你首选的备份方法对数据库 X 执行完整备份。 - 使用
pg_restore或你首选的恢复方法将备份恢复到数据库 Y。
- 使用
-
部署新版本的 API7 企业版:
- 根据你的 API7 企业版安装方法(Docker、Kubernetes),部署目标版本的新 API7 企业版集群。
- 配置控制平面(CP B)以连接到数据库 Y。
- 部署数据平面(DP B)节点并配置它们连接到 CP B。
- 更新配置文件中的镜像版本:
api7-ee-dashboard(用于 CP)api7-ee-dp-manager(用于 CP)api7-ee-gateway(用于 DP)
-
启动并验证集群 Y:
- 启动集群 Y 并确保所有组件正常运行。
- 访问 CP B 的控制台(Dashboard)以验证其是否可用。
- 隔离进行全面的功能和性能测试,以确保集群 Y 正常工作。
- 验证数据库 X 的所有配置是否正确加载到集群 Y 中。
第 3 步:开始流量切换
-
配置负载均衡器:
- 配置外部负载均衡器,将一小部分生产流量(例如 1-10%)发送到新的数据平面(DP B)。
- 将大部分流量(90-99%)保留在旧数据平面(DP A)上。
-
监控集群 Y:
- 密切监控集群 Y 的性能、错误率和日志。
- 将其行为与集群 X 进行比较。
第 4 步:逐渐增加流量
如果集群 Y 保持稳定且性能符合预期,请逐步增加其接收的流量百分比:
- 增加至 25%:将 25% 的流量切换至 DP B,监控一段时间(例如 1-2 小时)。
- 增加至 50%:将 50% 的流量切换至 DP B,监控一段时间(例如 1-2 小时)。
- 增加至 75%:将 75% 的流量切换至 DP B,监控一段时间(例如 2-4 小时)。
在每个阶段:
- 在充足的观察期内继续监控关键指标。
- 比较集群 X 和集群 Y 之间的错误率和日志。
- 注意任何异常或问题。
第 5 步:完成流量迁移
-
切换 100% 流量:
- 一旦你对集群 Y 的稳定性和性能充满信心,请将 100% 的流量导向它。
- 现在所有的 API 请求都应该由 DP B 处理。
-
保持集群 X 作为热备:
- 让集群 X 运行一段指定时间(例如 24-48 小时)作为热备。
- 这样如果出现任何问题,就可以立即回滚。
-
延长观察:
- 在此期间密切监控集群 Y。
- 验证所有功能是否按预期工作。
第 6 步:回滚(如果需要)
如果在升级过程中遇到任何严重问题:
-
立即回滚:
- 通过负载均衡器将所有流量重定向回集群 X(DP A)。
- 由于集群 X 保持不变,回滚是即时的,不需要恢复数据。
-
调查问题:
- 调查集群 Y 遇到的问题。
- 在再次尝试升级之前解决所有问题。