装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

基于 Route53 构建混合 DNS 系统

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

    阅读完需:约 7 分钟

基于 Route53 构建混合 DNS 系统

1、构建混合 DNS 的需求分析

混合云即融合了云资源和本地数据中心,是当前云计算发展过程中的一种模式和阶段,也是很多用户选择的一种业务部署方式。出于如信息保密、行业合规、市场细分等因素或考虑,有些企业更愿意将数据存放在本地数据中心,但是同时又希望可以获得云端的计算资源、网络资源。混合云在企业上云之初往往被广泛的采用。


真正的混合云不仅仅局限于用户数据中心和云端资源的私有网络互通,跨越用户本地网络和云端网络的统一域名解析也是混合云的重要一环。


为什么需要混合 DNS 系统

如图一所示,AWS 为用户提供了 DirectConnect、Site-to-Site VPN 等服务帮助用户在本地数据中心和 AWS 之间建立私有网络连接,实现本地数据中心和 AWS 间流量的安全通信。为了服务的灵活性、弹性扩展等考虑,用户越来越多的使用域名方式实现服务间访问调用。正如我们了解的,AWS 端使用 Route53 提供的私有域名系统实现 AWS 资源的域名解析,而用户本地数据中心往往自行维护私有的域名系统。两边的域名系统都已良好的为本端服务,但是相互独立,当涉及到两端服务互访调用时,却难以实现私有域名的解析。



图一 混合云场景示意


为了实现跨越 AWS 和本地数据中心的 DNS 混合解析,客户可以自行在 AWS 端搭建代理服务,负责在 AWS Route53 和本地数据中 DNS 服务器间转发 DNS 解析请求,如图二所示:



图二 客户自建混合 DNS 系统示意


这种方式下,用户在 AWS 端启动 1 台 EC2 作为 DNS 代理,并为代理配置转发规则:解析 AWS 端资源的请求转发到 Route53,解析本地数据中心域名的请求转达本地 NDS 服务器。同时需要将 AWS 端资源 DNS 服务器指向到代理服务器,在本地 DNS 服务器中添加转发规则:将解析 AWS 端域名的请求转发到代理服务器。


从上面描述中不难看出,整套混合方案完全由用户自己维护。因此也带来了一些性能、可靠性的问题,同时维护整个方案的正常运转也给用户带来了巨大的工作量。


2、Route53 Resolver 功能介绍

AWS 于 2018 年 11 月发布了针对混合云的 Amazon Route 53 Resolver。Route 53 通过入站终端节点和出站终端节点实现 DNS 请求的转发,用户可以通过组合使用两种终端节点快速实现混合 DNS 系统。


2.1 入站终端节点

入站终端节点可以看做是 Route 53 扩展到您指定的 VPC 中的一个或多个弹性网络接口,用于接收来自用户本地数据中心的 DNS 请求。


我们举个例子,用户在 AWS 云端拥有一个域名为 cloud.acd.com 的私有托管域,并在自己的 VPC 中配置了 Route 53 的两个入站终端节点:10.10.1.5 和 10.10.2.5。有了这两个终端节点地址后,用户可以在本地 DNS 服务器中配置规则,即请求 cloud.acd.com 域名的请求转到 10.10.1.5 或 10.10.2.5。这样就实现了本地数据中心解析 AWS 端的私有域名。具体实现过程参见图三:



图三 Route 53 入站终端节点示意


  • 本地数据中服务器发起一个 DNS 请求,解析cloud.acd.com,并将请求发送到本地 DNS 服务器

  • 本地数据中心DNS服务器识别出请求的域名为cloud.acd.com,根据规则转发给 AWS 入站终端节点 10.10.1.5 或 10.10.2.5

  • DNS 请求通过 DirectConnect 或 Site-to-Site VPN 达到入站终端节点,入站终端节点将请求转发给 Route 53

  • Route 53 解析到对应的 IP,并将响应报文按照原路径返回


2.2 出站终端节点

同理,出站终端节点也可以看做是 Route 53 扩展到您指定的 VPC 中的一个或多个弹性网络接口,Route 53 可以通过出站终端节点将解析本地数据中心私有域名的请求转发到数据中心 DNS 服务器中。


还是以上一节中的场景,用户在本地数据中心 DNS 服务器中维护了 internal.acd.com 域名。并在 VPC 中配置了两个出站终端节点:10.10.1.10 和 10.10.2.10。这里可以在 Route 53 中配置转发规则:解析 internal.acd.com 的请求可以通过出站终端节点转到本地数据中心 DNS 服务器 172.16.50.5 或 172.16.51.5.具体实现过程参加图四:



图四 出站终端节点示意


  • AWS云端EC2请求解析internal.acd.com,并将请求发送到云端 DNS 服务器 Route 53

  • Route 53 检查转发规则,发现解析域名为internal.acd.com,根据规则将请求通过出站终端节点发送到本地数据中心 DNS 服务器

  • 请求包经由 DirectConnect 或 Site-to-Site VPN 达到本地数据中心 DNS 服务器

  • 本地数据中心 DNS 服务器解析到响应的 IP,并将响应宝按照原路径返回给 EC2


3、配置示例及效果验证

1)在 Route 53 中配置入站终端节点,分别指定 subnet-1 和 subnet-2,并指定 IP 地址 10.1.5 和 10.10.2.5



2)配置出站终端节点,分别指定 subnet-1 和 subnet-2,并指定 IP 地址 10.1.10 和 10.10.2.10


3)配置转发规则,将解析域名 internal.acd.com 的请求通过出站终端节点转发到本地数据中心 DNS 服务器 172.16.50.5 和 172.16.51.5



4)在本地数据中心 DNS 服务器中添加转发规则,将解析 cloud.acd.com 域名的请求转发到入站终端节点 10.10.1.5 和 10.10.2.5


5)在本地数据中心服务器中测试 ping test.cloud.acd.com,可以正常联通 AWS 端 EC2



4、小结

本文重点介绍了 Route 53 Resolver 实现的技术原理,通过原理我们不难看出,相比较用户自己搭建代理的方式,使用 Route 53 Resolver 能够更加快捷的为用户构建混合 DNS 系统。同时,由于完全托管,用户不需要再为性能、扩展性和维护便利性担忧,可以把更多精力放在业务创新中。


作者介绍:


张涛


AWS 解决方案架构师,AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内和全球的应用和推广。加入 AWS 之前曾就职于 H3C、网易等公司,拥有丰富的企业 IT 信息化经验。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/route53-to-build-mixed-dns-system/


2019-09-25 15:55792
用户头像

发布了 1530 篇内容, 共 61.4 次阅读, 收获喜欢 66 次。

关注

评论

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

再解 JavaScript 原型 与原型链

编程三昧

JavaScript 前端 原型 原型链 2月月更

ReactNative进阶(五十):IOS 系统 Crash 日志分析实战

No Silver Bullet

ios React Native 2月月更

Firefox 登录后无法同步书签

TroyLiu

firefox 工具 浏览器 数据同步 书签

以太坊剖析 - 交易收据(TransactionReceipt)

起航

区块链 以太坊

如何写好代码注释?

蜜糖的代码注释

Java 后端 开发 2月月更

Netflix是如何做决策的? | 1. Netflix的决策制定

俞凡

数据分析 netflix 大厂实践 2月月更

Netflix是如何做决策的? | 2. 什么是A/B测试

俞凡

数据分析 netflix 大厂实践 2月月更

WebRTC 如何在安卓系统上采集视频数据 | 社区征文

liuzhen007

音视频 新春征文 2月月更

ReactNative进阶(五十一): 常见样式梳理

No Silver Bullet

CSS ReactNative 2月月更

也谈一下Web3.0-01

wood

300天创作 Web3.0

以太坊剖析 - 区块(Block)

起航

区块链 以太坊

【以太坊剖析】以太坊虚拟机(EVM)之基本定义

起航

区块链 以太坊 EVM 以太坊虚拟机

原型与原型链

编程三昧

JavaScript 前端 1月月更

JDK9响应式流使用详解

蜜糖的代码注释

Java Java9 2月月更 响应式流

ReactNative进阶(四十八):Mobile App 适配性优化实战

No Silver Bullet

适配 ReactNative 2月月更

《卡片笔记写作法》读书笔记 - 重新认知思考和写作

懒时小窝

读书感悟 读书总结

【技术】谈ServiceMesh落地的三大难题:选型、过渡、多集群

极光一号。

云原生 servicemesh 服务网格 应用交付

ReactNative进阶(四十五):渐变组件 react-native-linear-gradient

No Silver Bullet

React Native 2月月更

JVM进阶(一):初识 JAVA 栈

No Silver Bullet

Java JVM 2月月更

以太坊剖析 - 区块头部(BlockHeader)

起航

区块链 以太坊

以太坊剖析 - 交易执行(TransactionExecutor)

起航

区块链 以太坊

使用 React、Solidity 和 Web3.js 构建真实世界的 dApp

devpoint

dapp React Solidity Web3.0 2月月更

Netflix是如何做决策的? | 3. A/B测试结果之假阳性和统计显著性

俞凡

数据分析 netflix 大厂实践 2月月更

共赴冰雪之约,见证体育场馆的数字化之旅

脑极体

(2-1/26) 滑雪的准备

mtfelix

300天创作

ReactNative进阶(四十七):移动端调试利器 vConsole

No Silver Bullet

ReactNative 2月月更 vconsole

【拥有新时代的通信协议,引领云原生迈向更高的舞台】解密Dubbo3从微服务升华到云原生 | 社区征文

洛神灬殇

云原生 Cloud Native Dubbo3 新春征文 2月月更

MySQL架构设计

JavaEdge

2月月更

怎样设计一个广告系统

俞凡

架构 大厂实践 2月月更

浅析 Python 中的 Collections 模块

宇宙之一粟

Python 2月月更

精度丢失问题

编程三昧

2月月更

基于 Route53 构建混合 DNS 系统_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章