蓝绿部署是一种通过冗余部署实现服务版本升级的策略,其基于现有的生产环境(蓝色环境)复制出一套实时同步的测试环境(绿色环境),以用于测试与灰度验证。通过调整虚拟IP与真实节点之间的映射关系,实现生产环境与测试环境的快速切换,应用侧无需改造,最大限度地减少服务中断时间,并提供快速回滚的能力。
功能简介
什么是蓝绿部署
蓝绿部署会创建两套完全相同的部署环境(蓝色环境和绿色环境),分别对应旧版本(蓝色环境)和新版本(绿色环境)。蓝色环境对外提供服务,绿色环境用于升级前的测试,通过DTS双向数据同步链路,绿色环境与蓝色环境保持同步。在蓝绿部署中,绿色实例的规格与蓝色实例保持一致。
蓝色环境:生产环境,当前正在对外提供服务的环境,可读写。
绿色环境:测试环境,只读。
蓝绿部署通过将流量从当前生产环境(蓝色环境)转发至测试环境(绿色环境),使您能够在真实环境中验证最新版本的功能和性能。借助蓝绿部署,您可以快速发现潜在缺陷,优化数据库性能,并在短暂且可控的停机时间内引入更新的数据库功能。
此外,蓝绿部署具备回滚能力,确保在出现问题时能够迅速恢复到变更前版本,从而为系统升级提供更高的可靠性与灵活性。这显著降低了数据库版本升级的风险,最大限度地减少了对业务的影响。
适用场景
蓝绿部署的典型适用场景是数据库大版本和小版本升级,升级流程如下:
新版本部署:
创建绿色环境,数据库版本选择新版本。此时绿色环境作为测试环境,不对外提供服务。
可以在绿色环境中进行充分的功能测试和性能验证,确保新版本的稳定性。
切换蓝色环境和绿色环境:
当新版本验证无误后,切换蓝色环境和绿色环境。
通过调整虚拟IP与真实节点之间的映射关系实现切换,在切换前后,蓝色环境中的实例ID和IP地址将保持不变,操作简单且迅速。
监控与回滚:
如果新版本上线后出现严重问题,可立即切换回旧版本,恢复旧版本的服务。
回滚过程非常迅速,能够显著缩短故障恢复时间。
问题修复与重新部署:
在修复新版本的问题后,可以将其重新部署到绿色环境中,并再次进行验证。
待验证通过后,再次切换蓝色环境和绿色环境。
优势
零停机发布:通过流量切换的方式实现版本升级,生产环境中的实例ID和IP地址将保持不变,应用侧无需进行改造即可实现连接保持。
快速回滚:如果新版本出现问题,只需切回旧版本即可,无需重新部署或修复。
资源隔离:新版本和旧版本运行在独立的环境中,彼此隔离,避免相互干扰。
高可用性:冗余部署确保了即使在流量切换过程中,也有足够的资源处理请求。
前提条件
创建蓝绿部署时,蓝色实例(生产环境实例)需满足以下条件:
计费说明
蓝色实例费用:创建蓝绿部署时,会指定一个存量实例作为蓝色实例(生产环境实例),该实例正常计费(与蓝绿部署前保持一致)。
绿色实例费用:创建蓝绿部署时,会新建一个绿色实例,该实例按量计费,计费规则与标准按量付费实例一致。
DTS链路费用:创建蓝绿部署时,会自动创建一条DTS链路,该链路按量计费,计费规则与标准DTS按量计费链路一致。
自2025年8月1日起,蓝绿部署享受如下优惠,优惠活动截止时间待定(另行通知)。
绿色实例自创建之时起,15天内免费,超过15天后按量计费。
绿色实例支持将计费方式转换为包年或包月,但只有处于按量计费模式时,才可以享受自创建之时起15天内免费的优惠活动。计费方式转换为包年包月后,自转换时刻起,将开始按照包年包月的实例进行收费。
蓝绿部署中的DTS链路自创建之时起,15天内免费,超过15天后按量计费。
注意事项
创建蓝绿部署后,蓝绿实例均不支持以下操作:
创建蓝绿部署后,如果DTS链路被删除,将导致无法切换蓝绿部署。在此情况下,需要首先删除蓝绿部署,然后再进行重新创建。
通过蓝绿部署升级数据库大版本时,当前仅支持从RDS MySQL 5.7升级到RDS MySQL 8.0。
创建蓝绿部署
在创建蓝绿部署时,您需要指定一个源数据库实例作为生产环境中的数据库实例,构成蓝色环境的核心部分。
访问RDS实例列表,选择地域并单击目标实例ID,该实例将成为蓝绿部署中的蓝色实例。
在左侧导航栏,选择蓝绿部署并单击左上角创建蓝绿部署。
选择绿色实例(测试环境)的大版本。
单击前往授权并确定,完成SLR授权。
选择绿色实例的小版本后,单击创建。
在蓝绿部署配置确认弹窗中,单击确定。
切换蓝绿部署
切换蓝绿部署的过程中,高性能本地盘实例会有一次闪断,高性能云盘实例会有两次闪断,建议您在低峰期操作并确保应用具有重连机制。
删除蓝绿部署
删除蓝绿部署时分为以下两种情况:
仅删除蓝绿部署关系:
蓝色实例和绿色实例均可正常使用,蓝绿部署的限制条件将会解除。
绿色实例会变为常规实例,计费方式保持按量计费不变,支持转换为包年包月计费方式。
删除蓝绿部署关系,同时删除绿色实例:
绿色实例会被释放。
蓝色实例不受影响可正常使用,蓝绿部署的限制条件将会解除。
访问RDS实例列表,选择地域并单击蓝色实例ID。
在左侧导航栏,选择蓝绿部署并单击蓝绿部署同步信息区域的删除。
附录一:蓝绿部署访问链路切换原理
访问链路切换是蓝绿部署的核心步骤之一,目的是将用户流量从生产环境(蓝色环境)平滑切换到测试环境(绿色环境)。其关键操作是切换虚拟IP地址(Virtual IP Address,VIP)与真实节点(Real Server,RS)的映射,如下图所示:
VIP:用户访问服务的入口。
RS:提供服务的具体实例。
通过修改VIP与RS之间的映射关系,可以将流量导向新的环境。例如,当切换发生时,VIP从指向蓝色实例改为指向绿色实例。
附录二:切换前检查项及报错信息
检查项 | 报错信息 | 说明 |
状态检查(Status-Check) | Current DB instance status should be active. | 数据库实例的状态应为运行中。 |
表数量(Table-Count) | The table count is different between blue and green instance. | 蓝绿实例的表数量存在差异。 |
DTS状态(DTS-Status) | DTS status is not synchronizing. | DTS链路状态不是同步中。 |
DTS延迟(DTS-Delay) | DTS delay is greater than 5 seconds. | DTS同步延迟超过5秒。 |
只读(ReadOnly) |
|
|
数据库代理(MaxScale) |
|
|
连接地址(ConnectionString) |
|
|
数据库(databases) |
|
|
数据库账号(accounts) |
|
|