如何使用 Route 53 运行状况检查来进行 DNS 故障转移?
上次更新日期:2020 年 10 月 8 日
如何使用 Amazon Route 53 运行状况检查来配置 DNS 故障转移?
简短描述
您可以使用 Route 53 来检查资源的运行状况并仅返回运行状况正常的资源来响应 DNS 查询。您可以设置三种类型的 DNS 故障转移配置:
- 主–被:Route 53 会主动返回一个主资源。如果失败,Route 53 将返回备用资源。此方法是使用故障转移策略配置的。
- 主–主:Route 53 会主动返回多个资源。如果失败,Route 53 将故障回退到运行状况正常的资源。此方法是使用故障转移以外的任何路由策略配置的。
- 组合:多个路由策略(例如基于延迟、加权等)组合成树来配置更复杂的 DNS 故障转移。
解决方法
注意:如果您的主目标是 Amazon CloudFront,则以下解决方法不适用。
主动/被动故障转移
主动/被动 DNS 故障转移是最简单的故障转移方法,此方法会使用一个主资源和一个辅助资源。
注意:在继续之前,请务必为您的主资源创建 Route 53 运行状况检查。
使用故障转移别名记录的值为您的主资源和辅助资源创建两个资源记录。对于每个记录,请执行以下操作:
- 为您的资源输入一个 Name(名称)(例如 resource.example.com)。
注意:这两个资源的名称应相同。 - 对于 Type(类型),选择 A - IPv4 address(A – IPv4 地址)。
- 对于 Alias(别名),选择 Yes(是)。
- 对于 Alias Target(别名目标),输入主资源的 DNS 名称。这时将会显示 Alias Hosted Zone ID(托管区域别名 ID)。
- 对于 Routing Policy(路由策略),选择 Failover(故障转移)。
- 对于主记录的 Failover Record Type(故障转移记录类型),选择 Primary(主)。对于 Set ID(设置 ID),输入一个唯一的名称(例如 elb-Primary)。
- 对于辅助记录的 Failover Record Type(故障转移记录类型),选择 Secondary(辅助)。对于 Set ID(设置 ID),输入一个唯一的名称(例如 elb-Secondary)。
- 对于 Evaluate Target Health(评估目标运行状况),为您的主记录选择 Yes(是)。并为您的辅助记录选择 No(否)。
- 对于主记录的 Associate with Health Check(与运行状况检查关联),选择 Yes(是)。对于 Health Check to Associate(要关联的运行状况检查),选择您为主资源创建的运行状况检查。
- 选择 Create(创建)以创建您的记录。
记录现在将使域指向您的主资源或故障转移到您的辅助资源。
主动/主动故障转移
主动/主动 DNS 故障转移将向 DNS 查询返回多个资源。当一个资源的运行状况不良时,Route 53 会故障转移到另一个资源。
注意:在继续之前,确保为两个资源创建 Route 53 运行状况检查。
使用故障转移别名记录的值为每个资源创建记录。对于每个记录,请执行以下操作:
- 为您的资源输入一个 Name(名称)(例如 resource.example.com)。
注意:务必确保每个记录的 Name(名称)都相同。 - 选择一个记录 Type(类型),例如 A – IPv4 address(A – IPv4 地址)。
注意:所有资源记录的 Type(类型)都必须相同。 - 对于 Alias(别名),选择 Yes(是)。
- 对于 Alias Target(别名目标),输入您的资源的 DNS 名称。这时将会显示 Alias Hosted Zone ID(托管区域别名 ID)。
- 选择一个 Routing Policy(路由策略),然后输入该策略的相关值,例如 Weighted policy(加权策略)的 Weight(权重)。对于 Set ID(设置 ID),为此资源输入一个唯一的名称(例如 Resource 1)。
注意:对于加权路由策略,请将所有记录设置为相同的权重(例如 10)。也可将所有记录设置为不同的权重(如 20 和 10,其中 20 条记录接收的流量是两倍)。 - 对于 Evaluate Target Health(评估目标运行状况),选择 Yes(是)。
- 对于 Associate with Health Check(与运行状况检查关联),选择 Yes(是)。
- 对于 Health Check to Associate(要关联的运行状况检查),选择您为此资源创建的运行状况检查。
- 选择 Create(创建)以创建您的记录。
组合故障转移
您可以将多个路由策略和运行状况检查组合,从而创建复杂的故障转移机制。借助这些机制,Route 53 会遍历多层记录,然后再返回相应的记录。
例如,假设您有三个终端节点。您可以对终端节点 A 和 B 之间的流量进行负载平衡,并在前两个终端节点未能通过运行状况检查时回退到终端节点 C。在此配置中,您有两个路由层。在较低的路由层中,Route 53 使用记录运行状况检查来确认终端节点 A 和 B 是否正常,然后在这两个主资源之间平均路由流量。如果终端节点 A 和 B 未通过运行状况检查,则流量将故障转移到较高的路由层。在较高的路由层中,Route 53 将流量路由到终端节点 C,即辅助回退资源。按如下方式创建此配置:
- 为所有三个终端节点创建 Route 53 运行状况检查,以将其与运行状况检查记录相关联。
- 对于较低的路由层,为终端节点 A 和 B 的域名创建两个权重相同的加权记录。
重要提示:请务必将终端节点 A 和 B 的运行状况检查与其加权记录关联。此步骤将使 Route 53 确定每个记录的运行状况检查状态,然后相应地在它们之间对流量进行负载均衡。 - 对于较高的路由层,为终端节点 C 的域名(如 domain.example.com)创建故障转移记录。
重要提示:请务必确保主记录是一条别名记录,指向您在第 2 步中创建的 resource.example.com 的记录。此外,还需确保辅助记录指向作为故障转移资源的终端节点 C。 - 配置 Route 53 以确定主故障转移记录的运行状况。创建自定义运行状况检查以确定两个加权记录的运行状况(例如,已计算的运行状况检查)。或者,使用记录选项评估目标运行状况。
此故障转移配置的工作原理如下所示:
- 客户端请求 domain.example.com。
- 如果主记录通过了运行状况检查,则 Route 53 会将流量发送到负载均衡的 resource.example.com 的主资源记录,此记录会将客户端指向终端节点 A 或 B。
- 如果主记录未通过运行状况检查(终端节点 A 和 B 未通过运行状况检查),则主记录将被标记为运行不正常,并且故障转移到辅助记录。然后,Route 53 会将客户端请求发送到终端节点 C(故障回退资源)。
- 当主记录再次通过运行状况检查时,Route 53 会自动故障回退到主资源记录(终端节点 A 和 B)。