什么是蓝绿部署?
蓝绿部署是一种通过冗余部署实现服务版本升级的策略,其基于现有的生产环境(蓝色环境)复制出一套实时同步的测试环境(绿色环境),以用于测试与灰度验证。通过调整虚拟IP与真实节点之间的映射关系,实现生产环境与测试环境的快速切换,应用侧无需改造,最大限度地减少服务中断时间,并提供回滚的能力。
您可以将RDS for MySQL低版本实例作为蓝色实例,选择目标高内核版本创建一个新的绿色实例,绿色实例与蓝色实例通过原生Binlog复制同步数据。蓝绿部署完成后支持主动下发蓝绿切换操作,将业务流量切到绿色实例,测试观察业务运行在高版本实例是否有兼容性问题。如果遇到兼容性问题,支持蓝绿回滚操作,将业务流量切回蓝色实例。
部署方案
- 提交蓝绿部署任务后,首先会基于低版本蓝色实例恢复一个高版本绿色实例,并搭建两个实例之间的复制关系,等待绿色实例追齐蓝色实例的数据,然后创建DRS同步任务,用于后续回滚场景。
- 提交蓝绿切换任务后,等待蓝绿数据一致,触发VIP切换,将读写请求切换到绿色高版本实例,然后启动DRS同步任务,完成切换流程。
- 提交蓝绿回滚任务后,等待DRS同步任务追平数据,触发VIP切换,将读写请求切换到蓝色低版本实例,完成回滚流程。
使用须知
表1 使用须知 | 阶段 | 注意事项 | 功能限制 |
| 阶段一:创建蓝绿部署 | - RDS蓝绿部署需要进行数据同步,请您耐心等待。
- 创建蓝绿部署过程中,蓝色环境可以正常被访问,但蓝色实例上进行的变配等运维管理操作入口会被屏蔽。
- 蓝色实例费用:创建蓝绿部署时,会指定一个存量实例作为蓝色实例(生产环境实例),该实例正常计费(与蓝绿部署前保持一致)。
- 绿色实例费用:创建蓝绿部署时,会新建一个绿色实例,该实例正常按需计费。
| - 如需使用蓝绿部署功能,请提交工单申请。
- 支持内核小版本蓝绿升级和内核大版本蓝绿升级(不支持跨内核大版本)。
- 一个蓝色实例仅支持创建一个蓝绿部署关系,如果需要更换目标版本,请先删除蓝绿部署关系。
- 不支持带有高可用只读的实例进行蓝绿部署。
- 不支持已开启代理的实例进行蓝绿部署。
- 不支持已绑定DDM的实例进行蓝绿部署。
- 不支持开启TDE的实例进行蓝绿部署。
- 不支持开启SSL的实例进行蓝绿部署。
- 不支持集群版实例进行蓝绿部署。
- 不支持本地盘存储类型的5.7实例进行蓝绿部署。
- 8.0版本蓝色实例升级到8.4版本时的限制:
- log_bin_use_v1_row_events参数需要修改为OFF才能进行蓝绿部署。
- 8.0版本蓝色实例若存在外键,外键必须引用完整的唯一键(主键或唯一索引),否则无法进行蓝绿部署回滚。
- 对于主备实例,复制延迟大于300秒无法进行蓝绿部署。
- 实例中存在异常节点,无法进行蓝绿部署。
- 其他升级约束详见内核小版本和内核大版本升级约束:
|
| 阶段二:蓝绿部署完成 | 蓝绿部署关系维持阶段,蓝色和绿色实例上的相关变更等运维管理操作入口会被屏蔽。 | 蓝绿部署完成后,DRS同步任务默认保留3天。建议在3天内执行蓝绿部署切换进行业务兼容性验证。 |
| 阶段三:切换蓝绿部署 | - 蓝绿部署切换完成后,数据VIP切换到绿色实例,新的业务请求将访问绿色实例。
- 蓝绿部署切换时,蓝色实例和绿色实例均会出现30秒左右的闪断,请确保应用具备重连机制,尽量在业务低峰期执行操作。
| - 蓝色实例同绿色实例之间的复制延迟大于300秒时,无法下发蓝绿部署切换。
- 蓝色实例、绿色实例(含只读实例)若存在异常节点,均无法下发蓝绿部署切换。
- 切换后DRS数据同步期间执行DDL操作的限制:切换完成后,在高版本的绿色实例上不建议执行DDL操作(如创建表、修改表结构、删除表、创建或删除索引等)。例如跨大版本场景下,DDL可能因字符集、排序规则或语法不兼容等导致同步异常,由此可能产生数据差异,建议切换前自行确认业务。
|
| 阶段四:回滚蓝绿部署 | - 蓝绿部署回滚完成后,数据VIP切换到蓝色实例,新的业务请求将访问蓝色实例。
- 蓝绿部署回滚时,蓝色实例和绿色实例均会出现60秒左右的闪断,请确保应用具备重连机制,尽量在业务低峰期执行操作。
| - 绿色实例同蓝色实例之间的DRS同步任务状态异常时,无法下发蓝绿部署回滚。
- 蓝色实例(含只读实例)若存在异常节点,无法下发蓝绿部署回滚。
- 回滚阶段需等待DRS同步任务将数据追齐,不建议业务高峰期进行回滚操作。
|
| 阶段五:删除蓝绿部署关系 | 支持仅删除蓝绿部署关系,绿色实例作为单独的按需实例保留,蓝色实例保持不变。 - 蓝绿创建完成后:支持同时删除蓝绿部署关系和绿色实例,绿色实例将被释放。
- 蓝绿部署切换完成后:支持同时删除蓝色部署关系和蓝色实例,此时业务在绿色实例上,原蓝色实例将被释放,请确认后再删除。
- 蓝绿部署回滚完成后:支持同时删除蓝色部署关系和绿色实例,绿色实例将被释放。
| 删除蓝绿部署关系后,蓝色实例和绿色实例就是两个单独的实例,不再支持蓝绿切换和回滚,请确认后再删除。 |
操作步骤
步骤1:创建蓝绿部署
- 登录RDS管理控制台。
- 单击管理控制台左上角的
,选择区域。 - 在“实例管理”页面,单击主实例名称。
- 在左侧导航栏,选择“蓝绿部署”。
- 右侧单击“创建蓝绿部署”。
- 在创建页面,指定当前实例作为蓝色实例(生产环境实例),同时会新建一个绿色实例(测试环境实例)。
图1 创建蓝绿部署
- 确认部署版本信息后,单击“立即购买”,会基于现有的蓝色实例复制出一个实时同步的绿色实例。
- 绿色实例创建完成后,可以看到实例状态为“蓝绿部署中”。
图2 蓝绿部署中
步骤2:切换蓝绿部署
绿色环境中测试完毕后,执行当前步骤将绿色环境一键切换为蓝色环境。
- 登录RDS管理控制台。
- 单击管理控制台左上角的
,选择区域。 - 在“实例管理”页面,单击蓝色环境主实例名称。
- 在左侧导航栏,选择“蓝绿部署”。
- 右侧单击“切换”。
图3 蓝绿部署
- 在弹框中,确认切换实例的版本信息,选择切换时间,单击“确定”。
图4 切换为蓝色环境
- 立即变更:提交后会立即开始执行变更操作。
- 可维护时间段变更:选择可维护时间段变更,建议将变更时间段设置在业务低峰期。
步骤3:回滚蓝绿部署
蓝绿切换完毕后,如果新版本的蓝色环境实例出现问题,支持切换回旧版本。
- 登录RDS管理控制台。
- 单击管理控制台左上角的
,选择区域。 - 在“实例管理”页面,单击蓝色环境主实例名称。
- 在左侧导航栏,选择“蓝绿部署”。
- 右侧单击“回滚”。
图5 蓝绿部署
- 在弹框中,确认回滚实例的版本信息,选择切换时间,单击“确定”。
图6 回滚实例
- 立即变更:提交后会立即开始执行变更操作。
- 可维护时间段变更:选择可维护时间段变更,建议将变更时间段设置在业务低峰期。
- 修复新版本问题后,可重新部署到绿色环境中,验证通过后,再次切换蓝色环境和绿色环境。
步骤4:删除蓝绿部署关系
- 登录RDS管理控制台。
- 单击管理控制台左上角的
,选择区域。 - 单击蓝色环境实例名称,在蓝绿部署页面,单击“删除”。
- 在弹框中,选择仅删除蓝绿部署关系,或选择同时删除蓝绿部署关系与蓝/绿色实例,单击“确定”。
图7 蓝绿切换前删除蓝绿部署
图8 蓝绿切换后删除蓝绿部署
- 仅删除蓝绿部署关系后,蓝色实例和绿色实例均可正常使用。绿色实例会变为常规实例,支持读写,计费方式依旧为按量计费,支持转换为包年包月实例。
- 蓝绿切换前,支持同时删除蓝绿部署关系和绿色实例,绿色实例会被释放,蓝色实例不受影响,可正常使用。
- 蓝绿切换后,支持同时删除蓝绿部署关系和蓝色实例,蓝色实例会被释放,绿色实例不受影响,可正常使用。