From 72f942ffbcd847180bc2bfd11526bcdf0ea83c6e Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sun, 20 Sep 2026 21:52:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 生产服务监控告警与无停机发布方案.md | 30 ++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/生产服务监控告警与无停机发布方案.md b/生产服务监控告警与无停机发布方案.md index 86ca1c9..8cacab9 100644 --- a/生产服务监控告警与无停机发布方案.md +++ b/生产服务监控告警与无停机发布方案.md @@ -264,6 +264,35 @@ restart: unless-stopped ## 9. 无停机发布目标 +### 9.0 当前单机蓝绿实现 + +生产业务应用已采用逐服务蓝绿,不同时复制整套应用。数据库、Redis、Nacos 和 RocketMQ +不参与应用槽位切换,继续按各自高可用方案运行。 + +- 后端槽位命名为 `firstleg-production--blue/green`,绿色槽使用基础宿主机端口加 + `10000`;活动状态保存在 `/data/firstleg/deploy/blue-green-state/`。 +- 候选 Web 槽先健康检查,再接入 `firstleg-production-routing` 网络;失败只删除候选, + 不停止活动槽。 +- 带 `@Scheduled` 或 MQ Consumer 的服务,Web 槽固定关闭后台任务;后台任务运行在不注册 + Nacos、不暴露端口的单例 `*-worker` 容器。Worker 顺序切换,避免新旧任务双跑。 +- 国内、海外 Gateway 分别在 `9000/19000`、`9300/19300` 之间切换,宿主机 Nginx + `nginx -t` 成功后才 reload;失败恢复原配置。 +- Admin、Client 分别在 `9001/19001`、`9002/19002` 之间切换,使用稳定的 + `gateway-active`、`gateway-overseas-active` 路由别名。 +- 所有 Java Web 槽使用优雅停机,默认最多等待 45 秒完成在途请求。 + +首次迁移顺序固定为: + +```text +Admin -> Client + -> gateway -> gateway-overseas + -> auth -> iam -> order -> warehouse -> firstleg -> finance -> file -> print -> integration + -> audit -> event-bridge(CN/OVERSEAS) -> lastleg -> warehouse-overseas +``` + +Gateway 切换前会检查两个前端是否已经使用稳定别名;不满足时发布失败并保留旧 Gateway。 +后续发布只双开当前目标服务,不要求整套业务同时占用双倍内存。 + ### 9.1 业务服务滚动发布 目标流程: @@ -384,4 +413,3 @@ Gateway 自身不能只依靠 Nacos。至少部署两个实例,并由 Nginx、 - 数据库发布顺序和 Expand/Contract:`数据库版本迁移与Jenkins自动发布方案.md`。 - 阿里云资源、高可用、压测和整体上线:`阿里云生产环境选型压测与上线手册.md`。 - 测试环境持续部署:`测试环境Jenkins部署指南.md`。 -