如何配置 AWS RDS 多可用区部署以实现高可用性
配置 AWS RDS 多可用区以实现自动故障转移、更安全的维护以及生产环境中更好的数据库可用性。
如何配置 AWS RDS 多可用区部署以实现高可用性
当您的应用程序依赖于单个 RDS 端点时,数据库可用性至关重要。AWS RDS 多可用区通过在另一个可用区中保留一个备用实例,并在主实例无法提供服务时自动进行故障转移,从而降低了实例或可用区故障的风险。
本指南将展示如何为新数据库实例或现有数据库实例配置 AWS RDS 多可用区部署、更改后需要监控的内容以及预期的权衡。
什么是 AWS RDS 多可用区?
AWS RDS 多可用区部署会在同一 AWS 区域内的另一个物理隔离的可用区中创建数据库实例的精确副本。此备用实例以“热备用”配置运行,这意味着它会使用同步复制持续从主实例接收更改。
工作原理:
- 主实例:您的应用程序连接到主数据库实例并写入数据。
- 同步复制:所有对主实例的数据写入都会同步复制到备用实例。这确保了备用实例始终与主实例保持同步,从而最大限度地减少故障转移期间的数据丢失。
- 自动故障转移:当发生影响主实例的基础设施故障(例如,可用区中断、实例硬件故障、网络问题或数据库引擎崩溃)时,AWS RDS 会自动切换到备用副本。故障转移持续时间因引擎、工作负载和 DNS 缓存行为而异,因此您的应用程序应使用重新连接逻辑。数据库端点保持不变,因此您的应用程序无需新的连接字符串。
- 单一端点:主实例和备用实例共享一个 DNS 端点。您的应用程序连接到该端点,AWS 负责管理到当前活动主实例的重定向。
多可用区部署的优势
为生产工作负载配置 RDS 多可用区具有以下几个关键优势:
- 高可用性:自动故障转移到不同可用区中的备用副本可确保即使主可用区发生中断,您的数据库也能保持运行。这显著减少了停机时间。
- 数据持久性:同步复制保证所有已提交的事务同时存在于主实例和备用实例上。这最大限度地减少了故障转移期间数据丢失的风险。
- 灾难恢复:通过跨多个可用区部署,您的数据库可以免受可用区级故障的影响,从而构成灾难恢复策略的关键组成部分。
- 简化操作:AWS 自动处理监控、复制和故障转移过程。您无需配置基于主机的复制、管理备用实例或手动编排故障转移。
- 维护窗口:在计划维护期间(例如,操作系统修补或数据库引擎升级),AWS 会自动故障转移到备用实例,对旧主实例执行维护,然后切换回来。这最大限度地减少了应用程序停机时间。
- 性能(写入延迟):虽然同步复制本质上会带来比单可用区部署稍高的写入延迟(由于需要确认写入两个位置),但对于大多数应用程序来说,这通常可以忽略不计,并且是增强可用性的合理权衡。
前提条件
在开始之前,请确保您具备:
- 一个具有创建和管理 RDS 实例适当权限的 AWS 账户。
- 对 AWS 区域、可用区和虚拟私有云 的基本了解。
分步配置指南
选项 1:创建具有多可用区的新 RDS 实例
这是新部署的推荐方法,可确保从一开始就具有高可用性。
- 导航到 RDS 控制台:登录 AWS 管理控制台并打开 Amazon RDS 控制台。
- 创建数据库:在导航窗格中,选择 数据库,然后单击 创建数据库。
- 选择数据库创建方法:选择 标准创建。
- 选择引擎选项:
- 引擎类型:选择您所需的数据库引擎(例如,MySQL、PostgreSQL、SQL Server、Oracle)。
- 引擎版本:选择特定版本。
- 模板:选择合适的模板。对于生产环境,请使用面向生产的模板,并在创建数据库之前验证多可用区设置。
- 设置:
- 数据库实例标识符:为您的数据库实例提供唯一名称。
- 主用户名和主密码:设置主数据库用户的凭据。
- 数据库实例大小:选择满足您性能要求的实例类。
- 存储:配置存储类型和分配的存储空间。
- 可用性和持久性:这是多可用区的关键步骤:
- 在 多可用区部署 下,选择 是(创建备用实例)。
- (可选) 如果您之前选择了“生产”模板,此选项将被预选。
- 连接性:
- VPC:选择您的数据库将位于的 VPC。
- 子网组:确保您有一个跨多个可用区的数据库子网组。RDS 将使用它来将主实例和备用实例放置在不同的可用区中。
- 公开访问:出于安全最佳实践,在生产环境中选择 否。
- VPC 安全组:附加一个适当的安全组,允许从您的应用程序服务器到数据库端口的入站流量。
- 数据库身份验证:选择您首选的身份验证方法。
- 监控、性能洞察、日志导出、维护:根据您的运营需求进行配置。
- 创建数据库:检查所有设置,然后单击 创建数据库。
AWS 将配置您的主实例,然后在不同的可用区中创建并同步备用副本。此过程可能需要一些时间,具体取决于实例大小。
选项 2:将现有 RDS 实例修改为多可用区
您可以在不停机的情况下为现有的单可用区 RDS 实例启用多可用区。
- 导航到 RDS 控制台:登录 AWS 管理控制台并打开 Amazon RDS 控制台。
- 选择数据库:在导航窗格中,选择 数据库,然后选择要修改的 RDS 实例。
- 修改实例:单击 修改 按钮。
- 可用性和持久性:向下滚动到 可用性和持久性 部分。
- 在 多可用区部署 下,选择 是(创建备用实例)。
- 继续:检查其他设置(实例类、存储等)并进行任何其他必要的更改,然后单击 继续。
- 修改计划:
- 立即应用:选择此选项将立即开始更改。RDS 在后台创建备用实例,同时主实例保持可用,但在同步期间您可能会看到更高的 I/O 延迟。AWS 通常不需要仅为了启用多可用区而计划停机,但后续的故障转移或维护事件仍可能中断连接。
- 在下一个计划维护窗口期间应用:此选项将在您定义的维护窗口期间应用更改,从而最大限度地减少高峰时段的干扰。
- 修改数据库实例:单击 修改数据库实例。
AWS 将开始创建备用副本并将其与主实例同步的过程。在此期间,您的数据库将保持在线,但当多可用区配置最终确定时,您可能会观察到短暂的故障转移事件。
监控您的多可用区部署
设置多可用区后,监控其状态至关重要:
- RDS 控制台:转到 RDS 控制台并选择您的数据库实例。
- 详细信息选项卡:在 连接性和安全性 部分下,您将看到 多可用区 列为
是。在 可用性和持久性 下,它应显示您的实例处于多可用区部署中。 - 事件:检查 日志和事件 选项卡,了解与故障转移、实例创建或维护活动相关的事件。AWS 将记录故障转移事件(例如,
RDS-EVENT-0026 - 数据库实例 XXX 已故障转移)。
测试故障转移(可选但推荐)
虽然 AWS 自动管理故障转移,但在非生产环境中了解并偶尔测试故障转移机制是一种良好的做法。
触发故障转移:
- 使用故障转移重启:在 RDS 控制台中选择您的多可用区实例。从 操作 菜单中,选择 重启。确保选择 “使用故障转移重启?” 选项。
- 此操作将强制 RDS 将主实例切换到备用副本,模拟计划外中断。您的应用程序应预期短暂的断开连接,同时端点开始解析到新的主实例。
- 观察事件:启动故障转移后,监控实例的 日志和事件 选项卡。您应该会看到指示已发生故障转移并且新主实例处于活动状态的事件。
注意事项和最佳实践
- 成本:多可用区部署的成本高于单可用区部署,因为您实际上运行了两个数据库实例(主实例和备用实例),尽管在任何给定时间只有一个实例在主动提供服务。
- 只读副本与多可用区:了解区别。多可用区用于高可用性和持久性(写入)。只读副本用于读取扩展和提高读取性能。它们可以一起使用;您可以创建一个多可用区主实例,然后为读取密集型应用程序创建只读副本以进行扩展。
- 性能影响:虽然多可用区增强了可用性,但与单可用区相比,同步复制可能会带来轻微的写入延迟增加。对于大多数应用程序来说,这种开销很小。
- 子网组:确保您的数据库子网组包含至少两个不同可用区中的子网。这允许 RDS 将您的主实例和备用实例放置在不同的可用区中。
- 安全组:正确配置您的 VPC 安全组,以允许从您的应用程序服务器到 RDS 端点的流量。
- 数据库引擎支持:大多数流行的数据库引擎都支持多可用区,包括 MySQL、PostgreSQL、SQL Server、Oracle 和 MariaDB。
总结
对于生产数据库,当自动故障转移比额外成本和可能的写入延迟开销更重要时,请使用 AWS RDS 多可用区。启用后,请确认您的数据库子网组至少跨越两个可用区,在非生产环境中测试应用程序重新连接行为,并监控 RDS 事件,以便故障转移不会让您的团队感到意外。