运行状况检查和 DNS 故障转移
全部打开
什么是 DNS 故障转移?
DNS 故障转移包含两个组件,即:运行状况检查和故障转移。运行状况检查是通过 Internet 发送到您的应用程序的自动请求,目的是验证您的应用程序是否可获得、可用且功能正常。您可以配置与用户提交的一般请求相似的运行状况检查,例如从特定 URL 请求网页。利用 DNS 故障转移,Route 53 仅返回运行状态良好且可从外部访问的资源的响应,因此您的最终用户可以绕开出现故障或运行状态不佳的应用程序部分。
如何开始使用 DNS 故障转移?
请访问 Amazon Route 53 开发人员指南,了解有关入门的详细信息。您还可以从 Route 53 控制台配置 DNS 故障转移。
DNS 故障转移是否支持将 Elastic Load Balancer(ELB)用作端点?
可以,您可以为 Elastic Load Balancers (ELB) 配置 DNS 故障转移。若要启用一个 ELB 终端节点的 DNS 故障转移,请创建一个指向 ELB 的别名记录并将“Evaluate Target Health”参数设置为真。Route 53 会自动创建和管理您的 ELB 的运行状况检查。您无需创建您自己的 ELB Route 53 运行状况检查。您也不需要将您为 ELB 设置的资源记录与您自己的运行状况检查关联在一起,因为 Route 53 会代表您将它与 Route 53 管理的运行状况检查关联在一起。ELB 运行状况检查还会继承该 ELB 的后端实例的运行状况。要了解有关使用 ELB 终端节点进行 DNS 故障转移的更多详细信息,请参阅 Route 53 开发人员指南。
我是否可以配置仅在运行状况检查失败时使用的备份站点?
可以,您可以使用 DNS 故障转移来维护备份站点(例如,Amazon S3 网站存储段上运行的静态站点)并在您的主要站点无法访问时转移到该站点。
可以将什么类型的 DNS 记录与 Route 53 运行状况检查相关联?
您可以关联任何受 Route 53 支持的记录类型,除了 SOA 和 DNS 记录。
如果我不知道端点的 IP 地址,是否可以对其进行运行状况检查?
符合。您可以通过 Amazon Route 53 控制台配置 Elastic Load Balancer 和 Amazon S3 网站存储桶的 DNS 故障转移,这种方法无需创建您自己的运行状况检查。对于这些终端节点类型,Route 53 会代表您自动创建和管理运行状况检查,而这些运行状况检查会在您创建指向 ELB 或 S3 网站存储桶的别名记录和在该别名记录上启用“Evaluate Target Health”参数时使用。
对于所有其他终端节点,当您为该终端节点创建运行状况检查时,您可以指定 DNS 名称(例如 www.example.com)或该终端节点的 IP 地址。
我的其中一个终端节点在 AWS 外部。是否能在此端点上设置 DNS 故障转移?
符合。就像可以创建指向 AWS 外的地址的 Route 53 资源记录一样,您可以为在 AWS 外部运行的应用程序部分设置运行状况检查,并且可以转移到您选择的任何终端节点,无需理会位置。例如,您可以有一个在 AWS 外部的数据中心运行的历史应用程序和一个在 AWS 内运行的该应用程序的备份实例。您可以为在 AWS 外部运行的遗留应用程序设置运行状况检查,并且如果该应用程序未能通过运行状况检查,可以自动切换到 AWS 中的备份实例。
如果发生故障转移并且我拥有多个运行正常的端点,那么 Route 53 在决定从故障端点发送流量时,是否会考虑运行正常的端点上的负载情况?
不会,Route 53 不会根据终端节点的负载或可用流量来决定路由目标。您将需要确保您的终端节点有可用容量,或这些终端节点具有扩展能力,以处理流向故障终端节点的流量。
端点需要未通过多少次连续运行状况检查观察才能视为“失败”?
默认阈值为三次运行状况检验观察:当终端节点未通过三次连续的观察时,Route 53 将其视为失败。但是,Route 53 会继续对此终端节点执行运行状况检验观察,并在它通过三次连续的运行状况检验观察后重新向其发送流量。您可以将此阈值更改为 1 到 10 次观察之间的任何值。有关更多详细信息,请参阅 Amazon Route 53 开发人员指南。
当我的故障端点再次正常运行后,DNS 故障转移如何进行逆向转移呢?
在失败的终端节点通过您在创建运行状况检查时指定的连续运行状况检验观察的次数后(默认阈值为三次观察),Route 53 将自动恢复其 DNS 记录,并且流向该终端节点的流量将在无需您操作的情况下恢复。
运行状况检查观察之间的间隔是多长时间?
默认情况下,运行状况检验观察每隔 30 秒执行一次。您可以选择快速观察间隔时间,如 10 秒。
通过以高出三倍的频率执行检查,快速运行状况检查间隔允许 Route 53 更快地确认发生故障的终端节点,从而缩短 DNS 故障转移重定向流量以响应终端节点故障所需的时间。
快速运行状况检查间隔还会向您的终端节点生成三倍数量的请求,如果您的终端节点用于支持 Web 流量的容量有限,可能需要考虑此因素。访问 Route 53 定价页面,获取关于快速间隔运行状况检查和其他可选运行状况检查功能定价的详细信息。有关更多详细信息,请参阅 Amazon Route 53 开发人员指南。
预计运行状况检查会在端点(例如,Web 服务器)上生成多少负载?
每次运行状况检查都是从全球多个位置执行的。数量和位置集都是可配置的,对于使用 Amazon Route 53 控制台或 API 从多少个位置执行每个运行状况检查,是可以修改的。每个位置都将以您所选的间隔单独检查终端节点:默认间隔(30 秒)或可选的快速间隔(10 秒)。基于当前默认的运行状况检查位置数量,执行标准间隔运行状况检查时,您的终端节点平均每 2-3 秒收到一个请求,而执行快速间隔运行状况检查时,您会每秒收到一个或多个请求。
Route 53 运行状况检查是否会跟踪 HTTP 重定向?
否。Route 53 运行状况检查将 HTTP 3xx 代码视为成功的响应,因此不会跟踪重定向。这可能会导致字符串匹配运行状况检查出现异常结果。运行状况检查将在重定向的正文中搜索指定的字符串。由于运行状况检查不遵循重定向,它永远不会将请求发送到重定向所指向的位置,因此也永远不会从该位置获得响应。对于字符串匹配运行状况检查,我们建议您不要使用把运行状况检查指向某个将返回 HTTP 重定向的位置。
进行故障转移时,将发生哪些事件?
在最简单的条件中,如果运行状况检查未能通过需要进行转移,将发生以下事件:
Route 53 对您的应用程序执行运行状况检查。在这个示例中,您的应用程序连续三次未能通过运行状况检查,从而触发以下事件。
Route 53 禁用故障终端节点的资源记录并且不再服务于这些记录。这是故障转移步骤,它使流量路由到运行良好的终端节点,而不是故障终端节点。
我是否需要调整我的 TTL 记录以便使用 DNS 故障转移?
DNS 解析器用于缓存回复的时间是通过与各条记录关联的一个值设置的,它称为存活期 (TTL)。我们建议在使用 DNS 故障转移时,TTL 为 60 秒或更少,以尽量缩短使流量停止路由到故障终端节点所需的时间。为了配置 ELB 和 S3 网站终端节点的 DNS 故障转移,您需要使用 TTL 固定为 60 秒的别名记录;对于这些终端节点类型,您不需要调整 TTL 来使用 DNS 故障转移。
如果我所有的端点都无法正常运行,将会怎样?
Route 53 只能转移到运行良好的终端节点。如果资源记录集中没有运行良好的终端节点,Route 53 将当所有运行状况检查都通过进行处理。
我是否能在不使用基于延迟的路由(LBR)的情况下使用 DNS 故障转移功能?
符合。您可以在不使用 LBR 的情况下配置 DNS 故障转移。尤其是,您可以使用 DNS 故障转移来配置简单的故障转移方案,其中 Route 53 监视您的主要网站并在您的主站点不可用时转移到备份站点。
我是否能在仅可通过 HTTPS 访问的站点上配置运行状况检查?
符合。Route 53 支持通过 HTTPS、HTTP 或 TCP 的运行状况检查。
HTTPS 运行状况检查是否会验证端点的 SSL 证书?
不会,HTTPS 运行状况检查将测试是否能够通过 SSL 连接终端节点,以及终端节点是否会返回有效的 HTTP 响应代码。但是,它们不会验证终端节点返回的 SSL 证书。
HTTPS 运行状况检查是否支持服务器名称指示(SNI)?
是的,HTTPS 健康检查支持 SNI。
如何使用运行状况检查来验证我的 Web 服务器正在返回正确内容?
您可以通过选择“启用字符串匹配”的选项来使用 Route 53 运行状况检查查看指定字符串是否存在于服务器响应中。此选项可用于检查 Web 服务器,验证其所服务的 HTML 包含预期字符串。或者您可以建立一个专用状态页面,使用它从内部或操作角度来检查服务器的运行状况。有关更多详细信息,请参阅 Amazon Route 53 开发人员指南。
如何查看我已创建的运行状况检查的状态?
您可以在 Amazon Route 53 控制台中或通过 Route 53 API 查看运行状况检查的当前状态以及失败原因的详细信息。
此外,每个运行状况检查的结果将作为 Amazon CloudWatch 指标进行发布,以显示终端节点的运行状况,也可选择性显示终端节点响应的延迟。您可以在 Amazon Route 53 控制台的运行状况检查选项卡中查看 Amazon CloudWatch 指标的图形,以查看运行状况检查的当前状态和历史状态。您也可为该指标创建 Amazon CloudWatch 警报,它将在运行状况检查的状态发生变化时发送通知。
所有 Amazon Route 53 运行状况检查的 Amazon CloudWatch 指标也可以在 Amazon CloudWatch 控制台中查看。每个 Amazon CloudWatch 指标包含运行状况检查 ID(如 01beb6a3-e1c2-4a2b-a0b7-7031e9060a6a),您可使用它来识别该指标正在跟踪哪一个运行状况检查。
如何使用 Amazon Route 53 评估应用程序端点的性能?
Amazon Route 53 运行状况检查包含可选的延迟测量功能,它会就终端节点响应请求所花的时间提供相关数据。当您启用延迟测量功能后,Amazon Route 53 运行状况检查将生成额外的 Amazon CloudWatch 指标,以显示 Amazon Route 53 运行状况检查程序建立连接并开始接收数据所需的时间。Amazon Route 53 将为执行 Amazon Route 53 运行状况检查的每个 AWS 区域提供一组单独的延迟指标。
如何收到某个端点运行状况不良的通知?
因为每个 Route 53 运行状况检查的结果都作为 CloudWatch 指标来发布,所以您可以配置全范围的 CloudWatch 通知和自动操作(会在运行状况检查值变化到您指定的阈值以外时触发)。首先,在 Route 53 或 CloudWatch 控制台中,为运行状况检查指标配置一个 CloudWatch 警报。然后添加一个通知操作,指定您想要发布通知的电子邮件或 SNS 主题。请参阅 Route 53 开发人员指南以了解完整详情。
我已经为运行状况检查创建了警报,但需要重新发送该警报的 SNS 主题的确认电子邮件。如何重新发送此电子邮件?
可以从 SNS 控制台重新发送确认电子邮件。要找到与该警报相关的 SNS 主题的名称,请单击 Route 53 控制台内的警报名称,然后在带有“发送通知到”标签的框中查找。
在 SNS 控制台中,展开主题的列表,然后从警报中选择主题。打开“Create Subscription”框并为协议选择电子邮件,然后输入所需的电子邮件地址。点击“Subscribe”将重新发送确认电子邮件。
我正在使用 DNS 故障转移,同时将 Elastic Load Balancer (ELB) 用作终端节点。如何查看这些端点的状态?
设置带有 ELB 终端节点的 DNS 故障转移的推荐方法是使用带有“Evaluate Target Health”选项的别名记录。因为您并未在使用此选项时针对 ELB 终端节点创建您自己的运行状况检查,所以这些终端节点并没有由 Route 53 生成的特定 CloudWatch 指标。
您可以以两种方式获取有关负载均衡器的运行状况的指标。第一,Elastic Load Balancing 会发布负载均衡器的运行状况的指标,以及在负载均衡器上运行良好的实例数量的指标。有关配置针对 ELB 的 CloudWatch 指标的详细信息,请参阅 ELB 开发人员指南。第二,您可以对照由 ELB 提供的别名记录(例如 elb-example-123456678.us-west-2.elb.amazonaws.com)创建您自己的运行状况检查。您不可将此运行状况检查用于 DNS 故障转移本身(因为“Evaluate Target Health”选项为您提供 DNS 故障转移),但是您可以查看此运行状况检查的 CloudWatch 指标,并创建在运行状况检查失败时通知您的警报。
有关使用 ELB 终端节点进行 DNS 故障转移的完整的详细信息,请参阅 Route 53 开发人员指南。
对于指向 Amazon S3 网站存储桶的别名记录,当我将“评估目标运行状况”设置为“true”时,将会对哪些项目进行运行状况检查?
Amazon Route 53 在每个 AWS 区域执行 Amazon S3 服务本身的运行状况检查。当您在指向 Amazon S3 网站存储段的别名记录上启用“Evaluate Target Health”时,Amazon Route 53 会考虑存储段所处的 AWS 区域中的 Amazon S3 服务的运行状况。Amazon Route 53 不会检查特定的存储段是否存在或者是否包含有效网站内容;仅在存储桶所处的 AWS 区域中没有可用的 Amazon S3 服务时,Amazon Route 53 才会故障转移至另一位置
使用 CloudWatch 指标执行 Route 53 运行状况检查的费用是多少?
针对 Route 53 运行状况检查的 CloudWatch 指标可供免费使用。
我是否可以基于 CPU 负载、网络或内存等内部运行状况指标配置 DNS 故障转移?
符合。通过 Amazon Route 53 的基于指标的运行状况检查,您可以基于 Amazon CloudWatch 中提供的任何指标执行 DNS 故障转移,包括 AWS 提供的指标以及您的应用程序中的自定义指标。在 Amazon Route 53 中创建基于指标的运行状况检查时,只要相关 Amazon CloudWatch 指标进入警报状态,运行状况检查就会无法正常运行。
基于指标的运行状况检查有助于对标准 Amazon Route 53 运行状况检查无法到达的终端节点(如 Virtual Private Cloud (VPC) 中只具有私有 IP 地址的实例)启用 DNS 故障转移。通过使用 Amazon Route 53 的计算运行状况检查功能,您还可以将基于指标的运行状况检查的结果与标准 Amazon Route 53 运行状况检查的结果结合起来,针对全球检查程序网络中的终端节点提出运行状况检查请求,从而完成更加高级的故障转移方案。例如,您可以创建这样一种配置:如果终端节点面向公众的网页无法访问或者 CPU 负载、网络输入/输出或磁盘读取次数等内部指标显示服务器本身运行不正常,该配置可使终端节点避免故障。
我的 Web 服务器从 Route 53 健康检查收到了我没有创建的请求。我如何停止这些请求?
有些时候,Amazon Route 53 客户会创建健康检查,其中指定了不属于他们的 IP 地址或域名。如果您的 Web 服务器收到了不需要的 HTTP(s) 请求,并且您跟踪到了 Amazon Route 53 运行状况检查,请使用此表单来提供有关不需要的健康检查的信息,然后我们将与客户协作来更正此问题。
如果指定域名作为我的运行状况检查目标,Amazon Route 53 是通过 IPv4 还是通过 IPv6 进行检查?
如果您指定域名作为 Amazon Route 53 运行状况检查的终端节点,Amazon Route 53 将查找该域名的 IPv4 地址并使用 IPv4 连接至该终端节点。Amazon Route 53 不会尝试查找由域名指定的终端节点的 IPv6 地址。如果您想要通过 IPv6 而不是 IPv4 进行运行状况检查,请选择“IP 地址”而不是“域名”作为您的终端节点类型,然后在“IP 地址”字段中输入 IPv6 地址。
哪里能找到由 Amazon Route 53 的 DNS 服务器和运行状况检查程序所使用的 IPv6 地址范围?
AWS 现在以 JSON 格式发布其当前的 IP 地址范围。要查看当前范围,请使用以下链接下载该 .json 文件。如果您通过编程方式访问此文件,请确保应用程序仅在成功验证 AWS 服务器所返回的 TLS 证书后才下载该文件。
下载 ip-ranges.json。
要找到 Route 53 服务器的 IP 范围,请在“服务”字段中搜索以下值:
Route 53 DNS 服务器:搜索“ROUTE53”
Route 53 运行状况检查程序:搜索“ROUTE53_HEALTHCHECKS”
有关更多信息,请参阅《Amazon Web Services 一般参考》中的 AWS IP 地址范围。
请注意,IPv6 地址范围可能尚未显示在此文件中。仅供参考,Amazon Route 53 运行状况检查程序的 IPv6 地址范围如下所示:
2600:1f1c:7ff:f800::/53 2a05:d018:fff:f800::/53 2600:1f1e:7ff:f800::/53 2600:1f1c:fff:f800::/53 2600:1f18:3fff:f800::/53 2600:1f14:7ff:f800::/53 2600:1f14:fff:f800::/53 2406:da14:7ff:f800::/53 2406:da14:fff:f800::/53 2406:da18:7ff:f800::/53 2406:da1c:7ff:f800::/53 2406:da1c:fff:f800::/53 2406:da18:fff:f800::/53 2600:1f18:7fff:f800::/53 2a05:d018:7ff:f800::/53 2600:1f1e:fff:f800::/53 2620:107:300f::36b7:ff80/122 2a01:578:3::36e4:1000/122 2804:800:ff00::36e8:2840/122 2620:107:300f::36f1:2040/122 2406:da00:ff00::36f3:1fc0/122 2620:108:700f::36f4:34c0/122 2620:108:700f::36f5:a800/122 2400:6700:ff00::36f8:dc00/122 2400:6700:ff00::36fa:fdc0/122 2400:6500:ff00::36fb:1f80/122 2403:b300:ff00::36fc:4f80/122 2403:b300:ff00::36fc:fec0/122 2400:6500:ff00::36ff:fec0/122 2406:da00:ff00::6b17:ff00/122 2a01:578:3::b022:9fc0/122 2804:800:ff00::b147:cf80/122