

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 复杂 Amazon Route 53 配置中的运行状况检查的工作原理
<a name="dns-failover-complex-configs"></a>

在复杂配置中检查资源运行状况的工作原理与简单配置中大致相同。但在复杂配置中，可以使用别名记录（如加权别名和故障转移别名）和非别名记录的组合来构建决策树，以使您能够更好地控制 Route 53 响应请求的方式。

例如，您可以使用延迟别名记录选择一个靠近用户的区域，并对每个区域内的两个或多个资源使用加权记录，以针对单个端点或可用区域的故障提供保护。下图演示了此配置。

![\[包含延迟别名记录和加权别名记录的 DNS 配置。\]](http://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted.png)


以下是如何配置 Amazon EC2 和 Route 53 的方式。让我们从树底部开始，因为这是您即将创建记录的顺序：
+ 您在 us-east-1 和 ap-southeast-2 这两个区域中分别有两个 EC2 实例。您希望 Route 53 根据 EC2 实例的运行状况决定是否将流量路由到其中，所以为每个实例创建运行状况检查。您可以配置为每个运行状况检查都会向对应实例的弹性 IP 地址发送运行状况检查请求。

  Route 53 是一项全球服务，您无需指定要为其创建运行状况检查的区域。
+ 您希望根据实例类型将流量路由到每个区域中的两个实例，所以可为每个实例创建加权记录，并为每个记录指定权重。(您可以稍后更改权重，来更改路由到某个实例的流量。) 然后，将适用的运行状况检查与每个实例关联。

  在创建记录时，可以使用 us-east-1-www.example.com 和 ap-southeast-2-www.example.com 这样的名称。只有等到了树顶端，您才可以为记录指定用户将用于访问网站或 Web 应用程序的名称 (例如 example.com)。
+ 您希望将流量路由到可为用户提供最低延迟的区域，因此为树顶端的记录选择延迟[路由策略](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html)。

  您希望将流量路由到每个区域中的*记录*，而不是直接路由到每个区域中的*资源* (加权记录已执行该功能)。因此，创建延迟[别名记录](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html)。

  在创建别名记录时，为它们指定用户将用于访问网站或 Web 应用程序的名称 (例如 example.com)。别名记录将 example.com 的流量路由到 us-east-1-www.example.com 和 ap-southeast-2-www.example.com 记录。

  对于两个延迟别名记录，将 **Evaluate Target Health** 的值设置为 **Yes**。这会让 Route 53 去确定一个区域中是否存在任何运行状况良好的资源，然后再尝试将流量路由到对应区域。如果没有，Route 53 会选择其它区域中正常运行的资源。

![\[包含延迟别名记录和加权别名记录的 DNS 配置。\]](http://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted-both-failed.png)


前面的图表说明了以下事件序列：

1. Route 53 收到针对 example.com 的查询。根据用户提出请求的延迟，Route 53 为 us-east-1 区域选择延迟别名记录。

1. Route 53 根据权重选择加权记录。延迟别名记录的 **Evaluate Target Health**（评估目标运行状况）为 **Yes**（是），因此 Route 53 将检查选定的加权记录的运行状况。

1. 运行状况检查失败，因此 Route 53 根据权重选择其它加权记录并检查其运行状况。该记录的运行状况也不佳。

1. Route 53 退出该树的分支，查找其延迟仅次于最佳的延迟别名记录，并为 ap-southeast-2 选择该记录。

1. Route 53 根据权重再次选择记录，然后检查所选资源的运行状况。假定该资源运行状况良好，则 Route 53 在对查询的响应中返回适用的值。

**Topics**
+ [在将运行状况检查与别名记录关联时会发生什么？](#dns-failover-complex-configs-hc-alias)
+ [忽略运行状况检查时，会出现什么情况？](#dns-failover-complex-configs-hc-omitting)
+ [当您将“Evaluate Target Health”设置为“No”时，会出现什么情况？](#dns-failover-complex-configs-eth-no)

## 在将运行状况检查与别名记录关联时会发生什么？
<a name="dns-failover-complex-configs-hc-alias"></a>

您可以将运行状况检查与别名记录相关联，以作为将 **Evaluate Target Health** 的值设置为 **Yes** 的替代或补充。但是，如果 Route 53 根据基础资源 (HTTP 服务器、数据库服务器和您的别名记录引用的其它资源) 的运行状况来响应查询，这样关联通常更有用。例如，假设以下配置：
+ 将运行状况检查分配给其别名目标为一组加权记录的延迟别名记录。
+ 将延迟别名记录的 **Evaluate Target Health** 值设置为 **Yes**。

在此配置中，必须同时满足以下两个条件，Route 53 才会为加权记录返回适用值：
+ 必须通过与延迟别名记录关联的运行状况检查。
+ 必须至少有一个加权记录因为与已通过的运行状况检查关联或因为不与运行状况检查相关联而被视为运行状况良好。在后一种情况下，Route 53 始终认为加权记录运行状况良好。

在下图中，左上角的延迟别名记录的运行状况检查失败。因此，Route 53 停止响应那些使用该延迟别名记录所引用的任何加权记录的查询，即使这些记录的运行状况良好也同样如此。仅在延迟别名记录恢复良好的运行状况时，Route 53 才会再次开始考虑这些加权记录。(有关例外情况，请参阅[Amazon Route 53 在已配置运行状况检查时如何选择记录Route 53 在已配置运行状况检查时如何选择记录](health-checks-how-route-53-chooses-records.md)。) 

![\[包含“评估目标运行状况”设置为“是”且具有运行状况检查的别名记录的 DNS 配置。\]](http://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted-alias-hc-failed.png)


## 忽略运行状况检查时，会出现什么情况？
<a name="dns-failover-complex-configs-hc-omitting"></a>

在复杂配置中，应将运行状况检查与所有非别名记录关联，这一点非常重要。在下面的示例中，us-east-1 区域的一个加权记录中缺少运行状况检查。

![\[包含一个失败运行状况检查和一个没有运行状况检查的记录的 DNS 配置。\]](http://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted-missing-health-check.png)


在此配置中，当您忽略对非别名记录的运行状况检查时，将发生以下情况：

1. Route 53 收到针对 example.com 的查询。根据用户提出请求的延迟，Route 53 为 us-east-1 区域选择延迟别名记录。

1. Route 53 为延迟别名记录查找别名目标，并检查相应运行状况检查的状态。一个加权记录的运行状况检查失败，因此不考虑该记录。

1. 用于 us-east-1 区域的别名目标中的其他加权记录没有运行状况检查。相应的资源可能运行状况良好或运行状况不佳，但没有运行状况检查，Route 53 无法了解真实情况。Route 53 假定该资源运行状况良好，并在对查询的响应中返回相应的值。

## 当您将“Evaluate Target Health”设置为“No”时，会出现什么情况？
<a name="dns-failover-complex-configs-eth-no"></a>

通常，应该为树中所有别名记录将 **Evaluate Target Health** (评估目标运行状况) 设置为 **Yes** (是)。如果将 **Evaluate Target Health**（评估目标运行状况）设置为 **No**（否），Route 53 会继续将流量路由到别名记录引用的记录，即使这些记录未通过运行状况检查。

在以下示例中，所有加权记录都有关联的运行状况检查，但对于 us-east-1 区域的延迟别名记录，则将 **Evaluate Target Health** (评估目标运行状况) 设置为 **No** (否)：

![\[包含“评估目标运行状况”设置为“否”的别名记录的 DNS 配置。\]](http://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted-eth-is-no.png)


在此配置中，当您将别名记录的 **Evaluate Target Health** 设置为 **No** 时，将出现以下情况：

1. Route 53 收到针对 example.com 的查询。根据用户提出请求的延迟，Route 53 为 us-east-1 区域选择延迟别名记录。

1. Route 53 确定用于延迟别名记录的别名目标，并检查相应运行状况检查。两项检查都失败。

1. 由于用于 us-east-1 区域中的延迟别名记录的 **Evaluate Target Health**（评估目标运行状况）值为 **No**（否），Route 53 必须在此分支中选择一个记录，而不是忽略该分支并在 ap-southeast-2 区域中查找运行状况良好的记录。