写点什么

使用 Amazon Route 53 和 AWS Transit Gateway 对混合云进行集中式 DNS 管理

  • 2019-09-25
  • 本文字数:4583 字

    阅读完需:约 15 分钟

使用 Amazon Route 53 和 AWS Transit Gateway 对混合云进行集中式 DNS 管理

成功的混合联网策略不仅仅局限于私有网络连接。它通常需要在 Amazon Virtual Private Cloud (Amazon VPC) 和本地环境中处理独立的内部区域。这种策略需要跨越整个网络的域名系统 (DNS) 命名。通常,这是通过在资源和工作负载所在的相同位置提供名称解析服务来管理的。例如,在本地数据中心 DNS 基础设施(用于响应本地资源的查询)和 Amazon Route 53 私有 DNS 解析器(用于响应 AWS 云中资源的查询)等位置会出现这种情况。要在应用程序所需的这种混合网络上获得 DNS 的统一视图,您可能需要双向查询转发。这使您能够从 Amazon VPC 中查询本地内部区域,并从本地数据中心查询 Route 53 解析器专用 DNS。


AWS 于 2018 年 11 月发布了针对混合云的 Amazon Route 53 Resolver。通过解决诸多 DNS 挑战,这使得迁移到云或使用混合架构更加简单易行。在您第一次规划云迁移之旅时,这些挑战可能并不明显,但它们经常出现在迁移过程当中,因为可能会降低开发人员的开发速度。


许多用户都将基础设施分布在多个账户和多个 Amazon VPC 上,其中每个账户的 VPC 都有多个域(Domain)和私有托管区域 (hosted zones) 。跨账户集成 DNS 或与本地 DNS 服务器,过程会变得很复杂。您需要通过一组统一的规则和单个 Route 53 Resolver,轻松管理多个 VPC 账户中的递归 DNS 行为。现在,您可以通过对所有 VPC 和本地域的 DNS 进行集中管理来实现这一目标。


本博文将介绍在设计集中管理的 DNS 时需要考虑的最佳实践和折衷方案。我们将概括介绍跨多个互连 Amazon VPC 管理 DNS 的建议方法。


适用于本地网络和 Amazon VPC 的 DNS 单一视图


在这种情况下,您拥有本地 DNS 解析器的现有基础设施,这些解析器对于解析本地域名具有权威性。此外,在 AWS 的多个账户中,您还拥有多个 VPC,其中有多个域和专用托管区域与这些 VPC 关联。这些 Amazon VPC 通过 Transit Gateway 使用中心辐射型拓扑进行互连。要在此混合环境中简化 DNS,您可以采用集中管理的 DNS,该 DNS 可以解析本地数据中心与 VPC 之间的 DNS 名称。


Route 53 Resolver 终端节点和转发规则主要用于为混合网络提供集成 DNS,在混合网络中,往往难免要实时转发 DNS 查询。这些新功能允许 Route 53 Resolver 和您的本地 DNS 解析器通过实时向对端转发查询,来解析由对端托管的域。

在 Amazon VPC 之间共享 PrivateLink 终端节点

在此设置中,您要使用 AWS PrivateLink 通过 VPC 和本地服务器的专用连接安全地访问 AWS 服务。您需要接口终端节点,该终端节点可用作流向 AWS PrivateLink 支持的 AWS 服务流量的入口点。您可以在每个 VPC 中配置接口终端节点以访问 AWS 服务,但是,对于在每个可用区中所创建的终端节点,将需按小时付费。为了降低成本并简化管理每个 VPC 中接口终端节点的管理开销,您可以在共享服务 VPC 中启动 PrivateLink 终端节点并与其他 VPC 共享。我们将详细介绍如何跨 VPC 为集中式 PrivateLink 设计最佳 DNS 解析。


随着 Route 53 Resolver 服务的引入,您可以实现以下设计目标:


  1. 您可以使用完全托管的服务,其中 AWS 负责处理为确保可用性和可靠性而需执行的无差别繁重工作。

  2. 该服务确保可用区隔离和可用区本地应答。

  3. 入站和出站终端节点支持在一个终端节点中每个 IP 地址每秒进行 10000 次查询。您只需为转发流量而查询终端节点。

  4. 该服务在 Amazon CloudWatch 中提供查询量指标,允许您设置告警。

  5. 现在,我们来看看 Route 53 Resolver 的一些最佳实践:

  6. 我们建议常规 Amazon EC2 实例应使用 .2 进行 DNS 解析,这样每个网络接口最多可为每个 EC2 实例提供 1024 个数据包/每秒 (pps),并确保可用区隔离。

  7. 您应确保 DHCP 选项设置中的域名服务器指向 AmazonProvidedDNS,而非解析器终端节点。使用转发规则确保 AmazonProvidedDNS 具有您需要的 DNS 视图。

  8. 解析器终端节点在设计上将 Route 53 解析器与本地 DNS 相集成。

  9. DNS 解析几乎对每个应用程序都非常重要,因此我们建议在设计中始终考虑可靠性。但查询转发为实时 DNS 解析增加了额外的复杂性,因此最佳实践是仅在必要时使用此功能。

  10. 虽然可以使用转发规则来解析其他 VPC 中的专用托管区域,但我们不建议这样做。最可靠、高性能且低成本的方法,是将专用托管区域直接共享和关联到需要它们的所有 VPC。


我们来深入探讨一些使用 Route 53 解析器集中管理 DNS 的设计设置和配置示例。

适用于本地网络和 Amazon VPC 的 DNS 单一视图

在此设置中,您希望在多个账户查询 Route 53 私用托管区域解析,并在本地环境中查询 VPC。在此设计设置中,您将使用共享服务 VPC 来做到这一点。同时,您还希望有条件地将本地域的查询从 VPC 转发到本地 DNS 解析器。这些 VPC 使用中心辐射型拓扑进行互连。每个辐射型 VPC 属于一个不同的账户,并且它们由其各自的账户管理。


如前所述,当需要在多个 VPC 和 AWS 账户中解析 Route 53 私用托管区域时,最可靠的模式是在账户之间共享专用托管区域并将其关联到需要它的每个 VPC。尽管可以使用 Route 53 Resolver 转发来解决此用例,但这会带来额外的成本以及可用区之间可能的依赖性和复杂性,而直接关联区域(Zones)可以避免这些问题。


下图显示了此设置的架构。



要创建此设置,请按照以下概括性步骤操作。


1.建立网络 IP 连接。


  • 使用 AWS Transit Gateway 建立从辐射型 VPC 到共享服务 VPC 的网络连接。

  • 使用 AWS Direct Connect 或 AWS Site-to-Site VPN 建立与本地服务器的连接。


2.配置 Route 53 Resolver 终端节点。


  • 创建入站终端节点。我们建议您在至少两个可用区中指定 IP 地址,以便在共享服务 VPC 中实现高可用性。

  • 创建出站终端节点。我们建议您在至少两个可用区中指定 IP 地址,以便在共享服务 VPC 中实现高可用性。


3.创建私用托管区域。


  • 在共享服务 VPC 中创建 Route 53 私用托管区域并关联它们。此外,由于辐射型 VPC 位于不同账户中,因此要完成辐射型 VPC 的跨账户专用托管区域-VPC 关联。如果需要,所有 VPC 都需要将其私用托管区域与所有其他 VPC 相关联。


4.创建转发规则。


  • 创建条件转发规则,指定要转发到本地 DNS 解析器的 DNS 查询的本地域名。

  • 示例:域名为“onprem.mydc.com”的规则将导致转发 onprem.mydc.com 和子域的所有查询。

  • 为出站流量配置规则时,请将使用此规则的 VPC 设置为共享服务。

  • 如果辐射型 VPC 与共享服务 VPC 位于同一账户中,可以在创建出站规则时选择多个 VPC 作为使用此规则的 VPC,也可以在创建后将 VPC 与规则关联。


5.与其他 AWS 账户共享转发规则并使用共享规则。


  • 在此设置中,辐射型 VPC 跨越不同的账户,您可以通过 AWS Resource Access Manager (AWS RAM) 在其他使用共享规则的 AWS 账户中与 VPC 共享转发规则。以下屏幕截图显示了如何使用 AWS RAM 为多个账户转发与 VPC 共享的解析器规则:


在 VPC 之间共享 PrivateLink 终端节点

以下设置通常是前面描述的 DNS 单一视图的补充。在此设置中,您希望集中 PrivateLink 以在共享服务 VPC 中安全地访问 AWS 服务。您希望从其他辐射型 VPC 和本地服务器连接到共享服务 VPC 中的 PrivateLink 终端节点,因此需要 DNS 解析才能实现。


所有辐射型 VPC 都属于不同的账户,并且它们由其各自的账户所有者管理。


接口终端节点私有 DNS


在创建接口终端节点时,您会收到特定于终端节点的区域 DNS 主机名,该主机名的名称中包含唯一的终端节点标识符、服务标识符、区域(Region)和 vpce.amazonaws.com。例如,vpce-12345678-abcdefg.sqs.us-east-1.vpce.amazonaws.com。此名称解析为共享服务 VPC 中终端节点的 IP 地址。此服务的默认 DNS 主机名是 sqs.us-east-1.amazonaws.com。解析此 DNS 主机名会产生公共 IP 地址。


为接口终端节点启用专用 DNS 会创建专用托管区域,以便将默认名称 (sqs.us-east-1.amazonaws.com) 解析为终端节点 IP 地址。但是,现在这只适用于终端节点所在的 VPC。其他 VPC 会继续解析公有 IP 地址。以下步骤描述了如何确保所有 VPC 和本地服务器解析专用终端节点 IP 地址。


下图显示了此设置的架构,说明了 PrivateLink 终端节点如何访问某些 AWS 服务,例如 Amazon ECS、Amazon SNS 和 Amazon SQS。这可以扩展到 PrivateLink 支持的其他 AWS 服务。


要创建此设置,请按照以下步骤操作。



1.建立网络 IP 连接。


  • 使用 AWS Transit Gateway 建立从辐射型 VPC 到共享服务 VPC 的网络连接。

  • 使用 AWS Direct Connect 或 AWS Site-to-Site VPN 建立与本地服务器的连接。


2.配置 Route 53 解析器终端节点。


  • 创建入站终端节点。我们建议您在至少两个可用区中指定 IP 地址,以便在共享服务 VPC 中实现高可用性。


3.创建 PrivateLink 终端节点。


  • 为 AWS 服务创建接口终端节点,不启用“ Enable Private DNS Name”选项。


4.创建私用托管区域。


如果要从辐射型 VPC 和本地服务器访问共享服务 VPC 中的接口终端节点 sqs.us-east-1.amazonaws.com,请执行以下操作:


a.创建与共享服务 VPC 关联的名为 sqs.us-east-1.amazonaws.com 的 Route 53 私用托管区域。


b.创建名为 sqs.us-east-1.amazonaws.com 的别名记录,该记录针对特定于终端节点的区域 DNS 主机名 (vpce-12345678-abcdefg.sqs.us-east-1.vpce.amazonaws.com)。



  • 完成与辐射型 VPC 的跨账户专用托管区域 VPC 关联。

重要注意因素

上面的设置为 PrivateLink 提供了集中 DNS 管理的解决方案,但不一定能解决 Amazon Elastic File System (Amazon EFS) 等 AWS 服务方面的问题,该服务依赖于特定于可用区的应答,目前无法创建别名记录。


虽然您可以通过出站终端节点为跨账户的 Amazon EFS 域名创建转发规则,但客户端将不会收到针对其可用区优化的应答。这可能会导致跨可用区的联网费用、更高的操作延迟和更低的耐用性。我们建议仅使用此技术转发可用区特定的 EFS 域名,要特别注意每个客户端使用特定于其可用区的 DNS 条目来挂载 EFS。


如果要跨账户挂载,请注意可用区名称(例如 us-east-1a)在各个账户之间可能各不相同。您可能需要将可用区名称映射到可用区 ID。这是可用区的唯一且一致的标识符,可确保建立正确的连接。例如,use1-az1 是 us-east-1 区域的可用区 ID,它在每个 AWS 账户中具有相同的位置。Route 53 解析器终端节点专为混合 DNS 设置而设计,它们不是针对 Amazon EFS 这样的用例构建的。

小结

在这篇博文中,我向您介绍了为混合云设计集中式管理的 DNS 时可以使用的一些设置。您可以使用 Amazon Route 53 和 AWS Transit Gateway 通过统一的规则集和 Route 53 解析器跨多个账户和本地域的 VPC 进行解析。如果您有任何问题或反馈,请给我们留言。


相关文章:


https://aws.amazon.com/blogs/networking-and-content-delivery/centralized-dns-management-of-hybrid-cloud-with-amazon-route-53-and-aws-transit-gateway/


作者介绍:


Bhavin Desai


Bhavin Desai 是 AWS 的高级解决方案架构师。他乐于为客户提供技术指导,并帮助他们构建和生成解决方案,以利用 AWS 实现无限可能。


本篇译者


刘春华


AWS 解决方案架构师,AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内和全球的应用和推广,在大规模并发应用架构、无服务器架构,人工智能与安全等方面有丰富的实践经验。 曾任 IBM 云架构师,对企业应用迁移到云及应用系统改造有深入的研究。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/use-amazon-route-53-and-aws-transit-gateway-dns-management/


2019-09-25 17:571001
用户头像

发布了 1855 篇内容, 共 124.4 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

如何利用FL Studio进行听湿录干的声音录制

懒得勤快

Java书单-比较全的一篇

汤圆学Java

程序员

黑科技解密!实现socket进程间迁移

Java 程序员 架构 面试 架构师

堡垒机价格与什么有关?价格差别大吗?

行云管家

云计算 堡垒机

写作 7 堂课——【5. 结构化写作】

LeifChen

写作技巧 8月日更 结构化

OAuth2.0授权码模式实战

码农参上

OAuth 2.0 8月日更

完美!腾讯技术官发布Java零基础就业宝典,不用再怀疑人生了

Java~~~

Java spring 面试 微服务 架构师

快速发展的互联网通信,站在开发者背后的融云

融云 RongCloud

从0开始的TypeScriptの三:TS的类型

空城机

typescript 大前端 8月日更

TCP如何保证数据的可靠传输

W🌥

计算机网络 TCP/IP 8月日更

带你读AI论文:基于Transformer的直线段检测

华为云开发者联盟

模型 目标检测 Transformer 线段检测 LETR

中间件运维之故障自愈

安第斯智能云

运维 后端 中间件

模型训练语料少?知识蒸馏解决烦恼

LigaAI

人工智能 神经网络 深度学习 模型训练 nlp

价值连城 人工智能的通识课 - 吴恩达Andrew Ng AI For Everyone John 易筋 ARTS 打卡 Week 59

John(易筋)

ARTS 打卡计划

限量!Alibaba首发“Java成长笔记”,差距不止一点点

Java~~~

Java spring 面试 微服务 架构师

市场战略再升级 解析融云的生态平台+纵深发展

融云 RongCloud

Go 学习笔记之 Goroutines

架构精进之路

Go 语言 8月日更

教你如何使用FusionInsight SqoopShell

华为云开发者联盟

sqoop Shell FusionInsight 脚本 Loader

卷向字节码-Java异常到底是怎么被处理的?

why技术

Java JVM

从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多

Java~~~

Java spring 面试 微服务 JVM

Alibaba内部出品“Java初学者宝典”,让你就业没压力

Java~~~

Java 面试 JVM 多线程 架构师

Alibaba开发十年,写出这本“MQ技术手册”,看完我愣住了

Java~~~

Java kafka 面试 MQ 架构师

爱了!Alibaba技术官甩出的SpringCloud笔记,GitHub已标星81.6k

Java~~~

Java 面试 微服务 Spring Cloud 架构师

Compose管理状态

Changing Lin

8月日更

百度AI原生云实践: 基于容器云打造 AI 开发基础设施

百度开发者中心

AI 最佳实践 方法论 云原生

趁着课余时间学点Python(九)函数的进阶 生成器 装饰器的理解

ベ布小禅

8月日更

Qunar 大讲堂问题排查

Qunar技术沙龙

问题处理 问题排查 管理系统 开发管理 问题总结

不安全的服务器和云服务器:远程工作如何增加了黑客可以攻击的攻击面

九河云安全

史上最全的服务器选择指南,这六点你必须知道!

九河云安全

c++ list 详解

若尘

c++ List 8月日更

耗时三年才总结出了这份Alibaba(P5-P9)学习进阶路线图

Java架构追梦

Java 阿里巴巴 架构 面试 架构成长路线

使用 Amazon Route 53 和 AWS Transit Gateway 对混合云进行集中式 DNS 管理_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章