ELB 和 beanstalk 和其他服务的托管区域 ID 的目的到底是啥?

Posted

技术标签:

【中文标题】ELB 和 beanstalk 和其他服务的托管区域 ID 的目的到底是啥?【英文标题】:What exactly is the purpose of the hosted zone ID for ELB and beanstalk and other services?ELB 和 beanstalk 和其他服务的托管区域 ID 的目的到底是什么? 【发布时间】:2018-10-21 05:43:18 【问题描述】:

如果我想为 AWS 服务创建 route53 别名记录,我还必须指定特定的“托管区域”。托管区域因 ELB 类型而异,对于 beanstalk 端点和其他服务也不同:https://docs.aws.amazon.com/general/latest/gr/rande.html

谁能解释这些托管区域是什么以及为什么我需要手动指定它们(如果通过 UI 选择,它将为您添加带有该区域的别名)?

为什么我作为用户需要了解这些托管区域 ID?我假设有一个很好的理由为什么这不是从我身上抽象出来的,但我不明白为什么。我怀疑 route53 的工作方式是不可或缺的。

【问题讨论】:

【参考方案1】:

我怀疑 route53 的工作方式有一些不可分割的部分。

是的,有。

别名与 CNAME 不同——它们不会导致第二次查询来解析目标。它们是 Route 53 内部的内部指针,它告诉服务“当您收到对 X 的请求时,在托管区域 Z 内查找 Y 的值并返回该答案。”

主机名不一定唯一映射到单个 Route 53 托管区域。 Route 53 有(最后检查)2048 个唯一的名称服务器 IP 地址,其中 4 个与任何给定的托管区域相关联。 (这并不意味着您只有 4 个实际的名称服务器——它们是任播地址。)因此,您可以进入 Route 53 并为您喜欢的任何域名创建一个托管区域。您甚至可以为完全相同的域创建多个公共托管区域。尽管这听起来令人震惊,但它是无害的,因为即使您可以创建它们,您也无法使用它们,因为没有人会查询它们......每个托管区域都有一组 4 个永远不会关联的唯一名称服务器以一种会导致歧义的方式与另一个托管区域。

因此,别名不仅仅是查找另一个名称的指令。这是直接查看另一个特定托管区域以找到答案的指令。唯一支持这一点的区域是官方服务区域,或与创建别名的区域相同的区域(引用您区域中的另一条记录)。

当然,他们本可以设计不同的,但他们没有。似乎他们最初设计此功能是为了解决潜在的未来扩展问题,并计划为每个区域的每个服务使用多个托管区域,但随着 Route 53 的发展和扩展,这并不是必需的。

【讨论】:

news.ycombinator.com/item?id=7022698。这与此有关吗? “显而易见的问题:为什么我们不默认启用跨区域的别名?首先,可以别名的区域必须在我们分区数据存储的所有分片中复制和可用(有一天我们可能会使用某种跨分片查询协议来解决这个问题,但即便如此,我们也希望尽量减少流量),其次,我们希望确保 ALIAS 目标的稳定性,并避免目标可能被其所有者终止或删除而导致我们共同的客户陷入困境的情况。”跨度> 因此,如果我有一个链接到注册域名的区域和我刚刚创建的另一个托管区域(未公开注册),我可以创建从注册区域到其他非公共托管的别名记录区?或者“官方服务区”是指ELB等实际服务? 对。别名只能链接到服务的托管区域,如 ELB、CloudFront 等,或同一托管区域中的其他记录(这对于复杂的路由和故障转移场景很有用)。它们无法链接到您账户中的其他托管区域或其他账户中的托管区域,除非您找到的 HN 帖子中注明的特殊配置可能除外。【参考方案2】:

Hosted Zone Ids 与 Route53 Public/Private Hosted Zone 相关联。当您的自动化需要创建recordset 时,它必须知道在哪个Hosted Zone 中创建记录。它将通过您提供的Hosted Zone Id 来识别。

【讨论】:

我必须提供服务的托管区域和我的端点的 DNS 名称,该名称始终包含该区域,例如:myapp.eu-central-1.elasticbeanstalk.com。那么为什么 route53 两者都需要呢?它不能从 DNS 名称中找出区域吗? 这就是它的实现方式,所以我想您需要将该反馈提供给 AWS。 :)

以上是关于ELB 和 beanstalk 和其他服务的托管区域 ID 的目的到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk / ELB 增加了超过 60 毫秒的延迟

如何在 Elastic Beanstalk Cloud Formation 脚本中强制 ELB 配置

在 Elastic beanstalk 中将 ELB 设置为 Autoscaling Health Check Type

将 aws ELB 用于另一个托管实例

AWS Elastic Beanstalk VPC - 从 ELB 到实例的 HTTPS

Elastic Beanstalk:允许用户部署