亚马逊AWS官方博客
在Outposts上部署具有多可用区高可用性的 Amazon RDS服务
Amazon Relational Database Service (Amazon RDS) 最近宣布在AWS Outposts上支持PostgreSQL和MySQL数据库的高可用性配置(基于多可用区实例部署方式)。在本篇博客中,我们将介绍创建具有多可用区实例部署的 RDS 数据库实例的过程。
多可用区部署概览
借助Outposts上的多可用区实例部署,Amazon RDS 可跨两个Outposts创建两个数据库实例。每个 Outpost 都在其独立的物理基础设施上运行,并连接到区域中的不同可用区以实现高可用性。两个 Outposts 通过客户管理的本地连接起来,并由Amazon RDS 管理主数据库实例和备用数据库实例之间的同步复制。如果发生软件或基础设施故障,Amazon RDS 会自动将备用数据库提升为主数据库,并将 DNS 记录更新为指向新的主数据库,此事件称为故障转移。一旦故障转移完成后,数据库服务将立即恢复。应用程序的流量会随着 DNS 记录的更新自动定向到新的主数据库。旧的主数据库在经历修复操作并重新投入运行后降级为备用数据库。图示说明如下。
![]() |
在多可用区配置中,主备实例都有自己的数据副本。当数据库写请求进入时,数据首先被写入主实例的 Amazon 弹性块存储 (Amazon EBS) 卷,然后通过本地网络复制到备用实例的 EBS 卷。当数据正确写入两个数据库实例的 EBS 卷时,写成功的响应将发送回应用程序。有关数据库的写操作数据流路径,请参见下图。
![]() |
Outposts之间的互连性能对远程写入和远程确认的延迟起着关键影响。对于 Outposts 上的多可用区实例部署,数据库写入延迟等于本地写入加本地确认和远程写入加远程确认的累积延迟。
用于复制的本地网络
在Outposts上部署 RDS 多可用区实例需要在两个Outposts之间建立客户管理的本地连接,以用于本地复制。在 Outposts 安装过程中,亚马逊云科技使用您提供的本地网络的信息来创建地址池,称为客户拥有的 IP 地址池 (CoIP 池)。然后,亚马逊云科技将其分配给本地网关 (LGW)使用,并通过边界网关协议 (BGP) 广播回您的本地网络。CoIP 池必须满足以下要求。
- 在你本地网络中该地址必须可路由。
- CIDR 地址块不能小于/26。
有关详细信息,请参阅Outposts机架的本地网络连接。
客户拥有的 IP (CoIP) 地址通过你的本地网络提供本地或外部连接到Outposts 子网中的资源。Amazon RDS 从您的 CoIP 池中分配 CoIP 地址,以便通过本地网络实现数据复制。它使用 CoIP 路由以实现在主数据库实例和备用数据库实例之间传输复制流量。当设置客户管理的本地复制网络时,请考虑以下事项:
- 托管主数据库实例和备用数据库实例的Outposts之间的往返时间 (RTT) 延迟直接影响写入延迟。将Outposts之间的 RTT 延迟保持在较低的个位数毫秒内。我们建议不要超过 5 毫秒,但您的需求可能会有所不同。
- 您可以在Amazon CloudWatch的WriteLatency指标中找到对网络延迟的净影响。有关更多信息,请参阅Amazon RDS 的Amazon CloudWatch指标。
- Outposts 之间连接的可用性会影响数据库实例的整体可用性。建议在Outposts之间配置冗余网络连接。
先决条件
我们默认您熟悉使用 AWS Console,您还应该具备以下先决条件:
- 两个Outposts,每个Outposts都有自己的本地网关(LGW),并连接回 亚马逊云科技 区域中的不同可用区
- 每个LGW都应为LGW路由表配置可用的 CoIP 池
- 两个Outposts通过 LGW 连接到客户管理的本地网络,LGW 路由表配置为使用 CoIP 路由
- 有权访问Outposts的 亚马逊云科技 账户
- 一个客户的VPC
有关多可用区部署的先决条件的更多信息,请参阅先决条件。
在Outposts上创建子网
在Outposts上部署 Amazon RDS 的第一步是创建运行数据库的Outposts子网。您可以通过添加Outposts子网将区域中的 VPC 扩展到Outposts。
1、在Outposts控制台上,选择导航窗格中的Outposts。必须预先安装两个Outposts并配置网络。
2、选择您的第一个 Outposts,然后在操作菜单上,选择创建子网。
![]() |
3、关于VPC ID, 选择你的VPC。在本文中我们使用一个现有的VPC:wanhe-demo-vpc 。、
![]() |
4、在子网名称中,输入wanhe-demo-snOutpost1。
5、在IPv4 CIDR block中,输入您的CIDR块。
![]() |
6、在Tags下面,添加一个key: Name ,value中填写创建的数据库子网名称。
7、选择创建子网(Create subnet)。
![]() |
8、重复以上的步骤,在第二台Outposts上创建一个子网,子网名称为: wanhe-demo-snOutpost2。
将您的 VPC 关联到 LGW 路由表
Amazon RDS 要求您将 VPC 关联到 LGW 路由表,因为它使用此关联来确定用哪个 CoIP 地址池来分配CoIP 地址做本地复制。
1、在 Outposts 控制台上,选择导航窗格中的本地网关路由表(Local gateway route tables)。
2、选择Outposts,然后在操作菜单上选择关联 VPC。
3、对于 VPC ID,选择要将数据库部署在其中的 VPC。
![]() |
4、选择关联VPC。
5、重复以上的步骤,将VPC关联到第二台Outposts。
创建数据库子网组
要在 Outposts 上创建具有多可用区实例部署的 Amazon RDS,您必须为数据库子网组提供具有最小覆盖2个可用区的 Outposts 子网。这可确保至少指定两个Outposts(每个Outposts驻留在一个且只有一个可用区)。
1、在 Amazon RDS 控制台上,选择导航窗格中的子网组。
2、选择创建数据库子网组。
3、输入名称和说明。
4、对于VPC,请选择您的VPC。
![]() |
5、对于可用区,选择要添加的可用区。
6、对于子网,选择您创建的子网。
![]() |
7、选择创建(Create)。
使用多可用区部署数据库
要部署数据库,请完成以下步骤:
1、在 Amazon RDS 控制台上,选择导航窗格中的数据库(Databases)。
2、选择“创建数据库”(Create databases)。
3、 对于“数据库位置选项”(Database location options),请选择“本地”(On-premises)。
4、对于本地数据库选项(On-premises database options),请选择“Outposts上的 RDS”(RDS on Outposts)。
5、对于VPC(Virtual private cloud),请选择您的 VPC。
![]() |
6、对于子网组,选中“选择现有的子网组”(Choose existing),然后选择您的子网组。
![]() |
7、对于“数据库端口”,请输入您的端口。
8、对于“引擎类型”,请选择您的引擎(对于本文,我们选“PostgreSQL”)。
9、对于版本,请选择您的PostgreSQL版本。
10、对于数据库实例标识符(DB instance identifier),请输入一个名称(对于本文,我们使用 wanhe-demo-maz)。
![]() |
11、在“凭据设置”(Credential Settings)下,输入您的主用户名和密码。
12、对于多可用区部署(Multi-AZ deployments),选择创建备用实例(Create a standby instance)。
![]() |
13、对于备份目标,选择图中“AWS Cloud”。
多可用区部署不支持本地备份。启用多可用区功能后,将禁用本地备份选项。
![]() |
14、将所有剩余设置保留为默认值,然后选择“创建数据库”。
创建数据库可能需要几分钟时间。
验证数据库
要验证您创建的数据库,请完成以下步骤:
1、在 Amazon RDS 控制台上,选择导航窗格中的数据库。
2、选择您的数据库并查看其详细信息。
![]() |
3、在连接和安全(Connectivity & security)选项卡上,检查终端节点和可用区的信息。
![]() |
4、在配置选项卡上,检查多可用区设置。
![]() |
结论
在这篇文章中,我们向您介绍了在Outposts上部署多可用区实例实现高可用的Amazon RDS 的步骤。借助多可用区支持,Amazon RDS 可监控、检测和管理 Outposts 上数据库环境中的任何软件或硬件故障,并自动执行零数据丢失的故障转移,从而实现高可用性。
有关更多信息,请参阅 AWS Outposts上的 Amazon RDS 多可用区部署。