将 RDS 代理与蓝绿部署结合使用
Amazon RDS 代理可与蓝绿部署结合使用,以减少切换停机时间。RDS 代理通过保持对切换过程的感知,并在绿色环境变为活跃生产环境后自动将连接重定向到绿色环境,消除了在数据库转换期间通常发生的 DNS 传播延迟。RDS Proxy 对于 RDS for PostgreSQL、RDS for MySQL 和 RDS for MariaDB 支持蓝绿部署。无需更改应用程序代码,也不需要自定义客户端驱动程序。
使用 RDS 代理时进行切换
当蓝色实例连接到 RDS 代理时,在切换期间会发生以下过程:
-
切换护栏
-
Amazon RDS 运行额外的护栏检查,以验证代理是否可以成功到达蓝色和绿色环境并已准备好进行切换。
-
-
切换期间的应用程序流量路由
有关切换操作的列表,请参阅切换操作。通过 RDS 代理发生切换时,请注意以下事项:
-
在切换期间,蓝色数据库在绿色环境得到提升之前进入只读模式。在此过渡期间,RDS 代理继续将连接路由到蓝色数据库。
-
在此期间,对 RDS for MySQL 执行的写入操作可能返回只读错误。例如
1290 (HY000): The MySQL server is running with the —read-only option,因此它无法执行此语句。在 RDS for PostgreSQL 上,读取和写入查询将返回“AdminShutdown terminating connection due to administrator command”。 -
检测到切换后,代理会自动将流量路由到新提升的绿色环境。
-
当绿色环境提升为新的写入器时,与代理的现有连接将断开。完成提升后,应用程序必须重新建立连接。
-
您可以审核 RDS 代理的 CloudWatch 日志,以了解这种过渡行为是何时发生的。
-
-
RDS 代理 API 行为
-
诸如
describe-db-proxy-targets的代理 API 仅在切换完全完成后才会反映更新后的目标,即使流量路由发生得更早也是如此。
-
限制
-
在创建蓝绿部署之前,您的蓝色实例必须已经是代理的目标。在为蓝色实例创建蓝绿部署后,您无法将该实例添加到 RDS 代理。