我已阅读有关 Route53 的 AWS 文档,特别是与定义如何使用自定义域设置 DNS 故障转移相关的部分。我遵循的步骤如下:
EAST健康检查的特点是:
ID de507044-d8f7-4650-a54a-cb189972361b
URL https://XXX500mdd4.execute-api.us-east-2.amazonaws.com:443/prod/status
Specify endpoint by Domain name
Protocol HTTPS
Domain name adb500mdd4.execute-api.us-east-2.amazonaws.com
Port 443
Path /prod/status
Request interval 10 seconds
Failure threshold 2
Search string SUCCESS
Latency graphs No
Enable SNI Yes
Invert health check status No
Disable health check No
Health checker regions Using recommended health check regions:
WEST健康检查特点是:
ID a8e3ce0b-d12c-4408-86fb-2fb13a7bea9d
URL https://sinbpssYYY.execute-api.us-west-2.amazonaws.com:443/prod/status
Specify endpoint by Domain name
Protocol HTTPS
Domain name sinbpssct2.execute-api.us-west-2.amazonaws.com
Port 443
Path /prod/status
Request interval 10 seconds
Failure threshold 2
Search string SUCCESS
Latency graphs No
Enable SNI Yes
Invert health check status No
Disable health check No
Health checker regions Using recommended health check regions
这是指向 us-east-2 区域中部署的 API REST 的主节点:
Record name: test.mydomain.com
Record type: A
Value: d-vaqdythXXX.execute-api.us-east-2.amazonaws.com.
Alias: Yes
TTL (seconds): -
Routing policy: Failover
Health check ID: de507044-d8f7-4650-a54a-cb189972361b
虽然这是次要的,但它又指向 us-west-2 区域中部署的 API REST
Record name: test.mydomain.com
Record type: A
Value: d-YYY6zowl4f.execute-api.us-west-2.amazonaws.com.
Alias: Yes
TTL (seconds): -
Routing policy: Failover
Health check ID: a8e3ce0b-d12c-4408-86fb-2fb13a7bea9d
为了测试,我使用了curl:
curl --location --request POST 'https://emission.edx.services/mreg/print'
{"message":"Built from us-east-2 region"}
由于最初两项健康检查都是健康的,并且 EAST API 被定义为主要检查,因此预计结果为:“从 us-east-2 区域构建”}。但是,如果我重新部署 EAST API REST,以状态端点返回 FAIL 的方式更改环境变量,导致 EAST 运行状况检查不健康,我会期望 DNS 故障转移例程在辅助服务器中执行 API(即部署在 us-west-2 中的那个)但是结果消息保持不变:
{"message":"Built from us-east-2 region"}
也就是说,故障转移设置无法检测主服务器何时关闭并使用辅助服务器。 15 分钟后我再次执行卷曲,得到了相同的结果。
编辑#1:
我部署的 API REST 包含 2 个端点:
每个健康检查请求在其相应的 GET 端点并搜索字符串 SUCCESS。如果找到这个值,那么检查是健康的,否则是不健康的。
例如,我部署了 API REST,并将 east 和 west 检查为“健康”,使用curl 查询端点“/print”,正如预期的那样,它向我提供了正在从 us-east-2 区域访问的消息。好吧,出于测试目的,我编辑了 EAST 运行状况检查并反转运行状况检查,因此现在由于它返回 SUCCESS 并且我已反转其结果,因此运行状况检查处于不健康状态。这样,我希望当我使用域 url 执行curl 命令时,它会返回它正在从 us-west-2 执行。然而,它一直在至少 30 分钟内回复我相同的“Built from us-east-2 Region”消息。
这真的很奇怪,我将近 4 小时没有检查网址,现在我运行curl,它回答“从 us-west-2 区域构建”!!!似乎几个小时后故障转移设置就起作用了?买了为什么要花这么长时间才能工作?
有人知道这可能是造成这种奇怪行为的原因吗?
是因为预计会有 18% 的失败吗