View a markdown version of this page

将 RDS 代理与蓝绿部署结合使用 - Amazon Relational Database Service

将 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 代理。