如何配置 AWS RDS 多可用区部署以实现高可用性

通过这份关于配置 AWS RDS 多可用区部署的全面指南,确保强大的数据库可用性。了解多可用区的工作原理、其对高可用性和持久性的益处,并获取为新的或现有 RDS 实例设置它的分步说明。本教程涵盖了关键设置、监控和最佳实践,使您能够为关键生产环境构建具有自动故障转移能力的弹性数据库基础设施。

45 浏览量

如何为高可用性配置 AWS RDS Multi-AZ 部署

数据库可用性对于关键生产应用程序至关重要。停机可能导致重大的财务损失、声誉损害和用户不满。Amazon Relational Database Service (RDS) 提供了在云中管理关系数据库的强大解决方案,其 Multi-AZ 部署选项专门设计用于为您的数据库实例提供增强的可用性、持久性和容错能力。

本文将指导您完成配置 AWS RDS Multi-AZ 部署的过程。我们将介绍 Multi-AZ 是什么、它的主要优势,并为新旧 RDS 实例提供设置的分步说明。读完本文,您将了解如何构建一个具有自动故障转移能力的弹性数据库基础架构,从而显著提高 MySQL、PostgreSQL 或其他支持的数据库实例的正常运行时间和持久性。

什么是 AWS RDS Multi-AZ?

AWS RDS Multi-AZ(多可用区)部署会在同一 AWS 区域内,在另一个物理隔离的可用区 (AZ) 中创建数据库实例的精确副本。此备用实例以“热备用”配置运行,这意味着它会通过同步复制持续更新来自主实例的更改。

工作原理:

  1. 主实例:您的应用程序连接到主数据库实例并向其写入数据。
  2. 同步复制:写入主实例的所有数据都会同步复制到备用实例。这确保备用实例始终与主实例同步,从而在故障转移期间最大限度地减少数据丢失。
  3. 自动故障转移:如果主实例发生基础架构故障(例如,可用区中断、实例硬件故障、网络问题或数据库引擎崩溃),AWS RDS 会自动切换到备用副本。此故障转移过程通常需要 1-2 分钟,无需您手动干预。数据库端点保持不变,因此您的应用程序无需更改其连接字符串。
  4. 单个端点:主实例和备用实例共享一个 DNS 端点。您的应用程序连接到此端点,AWS 会负责将流量重定向到当前活动的主实例。

Multi-AZ 部署的优势

为生产工作负载配置 Multi-AZ RDS 可带来多项关键优势:

  • 高可用性:自动故障转移到不同可用区中的备用副本,可确保即使主可用区发生中断,您的数据库也能保持运行。这可显著减少停机时间。
  • 数据持久性:同步复制可确保所有已提交的事务都同时存在于主实例和备用实例上。这最大限度地降低了故障转移期间数据丢失的风险。
  • 灾难恢复:通过跨多个可用区进行部署,您的数据库可免受可用区级别故障的影响,从而构成灾难恢复策略的关键组成部分。
  • 简化操作:AWS 会自动处理监控、复制和故障转移过程。您无需配置基于主机的复制,也无需管理备用实例或手动协调故障转移。
  • 维护窗口:在计划内维护(例如,操作系统补丁或数据库引擎升级)期间,AWS 会自动故障转移到备用实例,在旧主实例上执行维护,然后切换回来。这可最大限度地减少应用程序停机时间。
  • 性能(写延迟):虽然与单可用区部署相比,同步复制在写延迟方面不可避免地会引入轻微的增加(因为需要确认写入两个位置),但对于大多数应用程序来说,这种开销通常可以忽略不计,并且是增强可用性所需付出的值得的权衡。

先决条件

开始之前,请确保您拥有:

  • 一个具有创建和管理 RDS 实例的适当权限的 AWS 账户
  • AWS 区域、可用区和虚拟私有云 (VPC) 的基本了解。

分步配置指南

选项 1:创建具有 Multi-AZ 的新 RDS 实例

这是新部署推荐的方法,可确保从第一天起就实现高可用性。

  1. 导航到 RDS 控制台:登录 AWS 管理控制台并打开 Amazon RDS 控制台。
  2. 创建数据库:在导航窗格中,选择 Databases,然后单击 Create database
  3. 选择数据库创建方法:选择 Standard create
  4. 选择引擎选项
    • Engine type:选择您所需的数据库引擎(例如,MySQL、PostgreSQL、SQL Server、Oracle)。
    • Engine version:选择特定版本。
  5. Templates:选择适当的模板。对于生产环境,推荐使用 Production,因为它默认设置为 Multi-AZ。
  6. Settings
    • DB instance identifier:为您的数据库实例提供一个唯一的名称。
    • Master usernameMaster password:设置主数据库用户的凭证。
  7. DB Instance Size:选择满足您性能要求的实例类别。
  8. Storage:配置存储类型和分配的存储。
  9. Availability & Durability:这是 Multi-AZ 的关键步骤:
    • Multi-AZ deployment 下,选择 Yes (Create a standby instance)
    • (可选)如果您之前选择了“Production”模板,此选项将预先选中。
  10. Connectivity
    • VPC:选择您的数据库将驻留的 VPC。
    • Subnet group:确保您有一个跨越多个可用区的数据库子网组。RDS 将使用它将主实例和备用实例放置在不同的可用区。
    • Public access:出于安全最佳实践,为生产环境选择 No
    • VPC security groups:附加一个适当的安全组,允许从您的应用程序服务器到数据库端口的入站流量。
  11. Database Authentication:选择您偏好的身份验证方法。
  12. Monitoring, Performance Insights, Log Exports, Maintenance:根据您的运营需求进行配置。
  13. Create database:检查所有设置,然后单击 Create database

AWS 将预配您的主实例,然后在一个不同的可用区中创建并同步备用副本。此过程可能需要一些时间,具体取决于实例大小。

选项 2:修改现有的 RDS 实例以支持 Multi-AZ

您可以在不中断服务的情况下为现有的单可用区 RDS 实例启用 Multi-AZ。

  1. 导航到 RDS 控制台:登录 AWS 管理控制台并打开 Amazon RDS 控制台。
  2. 选择数据库:在导航窗格中,选择 Databases,然后选择要修改的 RDS 实例。
  3. Modify Instance:单击 Modify 按钮。
  4. Availability & Durability:向下滚动到 Availability & Durability 部分。
    • Multi-AZ deployment 下,选择 Yes (Create a standby instance)
  5. Continue:检查其他设置(实例类别、存储等)并进行任何其他必要的更改,然后单击 Continue
  6. Scheduling of Modifications
    • Apply immediately:选择此选项将立即应用更改。对于启用 Multi-AZ,AWS 将在 后台 创建备用实例。在此初始创建阶段,主实例保持可用,尽管可能会有短暂的 I/O 延迟增加。备用实例同步后,当 AWS 执行一次小故障转移以激活 Multi-AZ 配置时,将出现 短暂中断(通常不到一分钟)。
    • Apply during the next scheduled maintenance window:此选项将在您定义的维护窗口期间应用更改,从而最大限度地减少高峰时段的中断。
  7. Modify DB instance:单击 Modify DB instance

AWS 将开始创建备用副本并将其与主实例同步。在此期间,您的数据库将保持在线,但当 Multi-AZ 配置最终确定时,您可能会遇到一次短暂的故障转移事件。

监控您的 Multi-AZ 部署

设置 Multi-AZ 后,监控其状态至关重要:

  1. RDS 控制台:转到 RDS 控制台并选择您的数据库实例。
  2. Details Tab:在 Connectivity & security 部分,您将看到 Multi-AZ 列为 Yes。在 Availability & durability 下,它应显示您的实例正在进行 Multi-AZ 部署。
  3. Events:检查实例的 Logs & events 选项卡,了解与故障转移、实例创建或维护活动相关的事件。AWS 将记录故障转移事件(例如,RDS-EVENT-0026 - DB instance XXX has been failed over)。

测试故障转移(可选但推荐)

虽然 AWS 会自动管理故障转移,但在非生产环境中了解并偶尔测试故障转移机制是一个好习惯。

触发故障转移:

  1. Reboot with Failover:在 RDS 控制台中选择您的 Multi-AZ 实例。从 Actions 菜单中,选择 Reboot。确保选择 "Reboot with failover?" 选项。
    • 此操作会强制 RDS 将主实例切换到备用副本,模拟意外中断。您的应用程序将经历短暂的断开连接(1-2 分钟),因为 DNS 端点会更新。
  2. Observe Events:在启动故障转移后,监控您实例的 Logs & events 选项卡。您应该会看到指示故障转移已发生并且新主实例正在运行的事件。

考虑事项和最佳实践

  • 成本:Multi-AZ 部署比单可用区部署的成本更高,因为您实际上运行了两个数据库实例(主实例和备用实例),尽管在任何给定时间只有一个实例在积极处理流量。
  • Read Replicas 与 Multi-AZ:了解两者的区别。Multi-AZ 用于高可用性和持久性(写入)。Read Replicas 用于读扩展和提高读取性能。它们可以一起使用;您可以创建一个 Multi-AZ 主实例,然后为读密集型应用程序创建读取副本。
  • 性能影响:虽然 Multi-AZ 提高了可用性,但与单可用区相比,同步复制可能会导致写延迟略有增加。对于大多数应用程序而言,这种开销非常小。
  • 子网组:确保您的数据库子网组包含至少两个不同可用区的子网。这允许 RDS 将您的主实例和备用实例放置在不同的可用区。
  • 安全组:正确配置您的 VPC 安全组,以允许从应用程序服务器到 RDS 端点的流量。
  • 数据库引擎支持:Multi-AZ 支持大多数流行的数据库引擎,包括 MySQL、PostgreSQL、SQL Server、Oracle 和 MariaDB。

结论

AWS RDS Multi-AZ 部署是构建云中高可用性和持久性关系数据库解决方案的基石。通过跨可用区自动复制数据并提供无缝的故障转移,Multi-AZ 显著降低了关键应用程序的停机和数据丢失风险。虽然成本有所增加,但其操作简便性和增强的弹性使其成为 AWS 上生产级数据库工作负载不可或缺的配置。立即实施 Multi-AZ,以保护您的数据并确保持续的服务交付。