Route53简介

Amazon Route 53是一种高可用、高扩展性的云DNS服务。它为开发人员和企业提供一种非常可靠和经济的方法,把对用户友好的、易读的域名(比如aws.xiaopeiqing.com)转换为IP地址(例如120.79.65.207)。目前Amazon Route53已经支持IPv6。

在我们更加深入了解Route53之前,首先让我们先来看一下什么是DNS。

什么是DNS

DNS的全称是Domain Name System,它的作用就是将一个域名最终解析成一个IP地址。就像一个电话本,我们找到张三,就知道他的电话号码是1234;我们找到李四,就知道他的电话号码是2345。

比如我们在浏览互联网的时候都会记住一些比较常用的域名,例如www.baidu.com, www.qq.com, www.google.com等等,这些都是比较容易记住的名字。而如果要我们去记忆12位十进制组成的IP地址就相对困难很多了。

DNS在这里面就起到了翻译的功能,保证我们通过易读的名字能访问到IP地址和后台的真实服务器。

我们比较常访问的网站,都会使用到顶级域名,顶级域名包含了下面这些例子:

  • .com
  • .net
  • .cn
  • .edu
  • .gov

这些顶级域名都是被IANA (Internet Assigned Numbers Authority) 这个机构来进行统一的管理和统筹的。

目前,ICANN旗下的InterNIC负责管理和分发所有的互联网域名,确保互联网上的域名不会重复。

域名注册商

我们可以在域名注册商上注册新的域名,比如国内的万网(现在已经被阿里云收购),新网,国外的Godaddy等。

现在AWS也算是一个域名注册商,因此我们可以直接在AWS Route53的界面选择并购买新的域名。

不同的DNS记录

在DNS里面,我们会遇到很多不同的DNS记录类型,下面主要讲解一些常见的DNS类型。其中SOA记录大致了解即可,其他DNS记录类型需要熟记。

  • SOA – Start of Authority记录了关于该域名的很多信息,包括
    • Primary Name Server – 主DNS服务器
    • Responsible Mail Address – 管理员的邮箱地址
    • Serial – SOA记录数据的版本号,每次DNS记录更新,版本号都会加1。备用DNS服务器发现版本号不同,会向主DNS服务器同步
    • Refresh – 备用DNS服务器向主DNS服务器检查更新的时间间隔
    • Retry – 备用DNS服务器向主DNS服务器请求更新失败后的重试等待时间
    • Expire – 备用DNS服务器在超过该时间后将停止应答该域名的DNS查询
    • Default TTL – 默认DNS记录的TTL时间
  • NS – Name Server记录描述了某个域名所使用的权威的DNS服务器,所有其他DNS服务器进行轮询查询的时候最终都需要到这些权威的DNS服务器上进行查询,获取最新的记录
  • A记录 – A (Address)记录可以将域名直接转换为IPv4的地址,比方说将aws.xiaopeiqing.com转换为地址120.79.65.207
  • CNAME – CNAME (Canonical Name)可以将一个域名指向另一个域名。比如将aws.xiaopeiqing.com指向xiaopeiqing.com
  • Alias记录 –  和CNAME类似,又叫做别名记录,可以将一个域名指向另一个域名。
    • 和CNAME最大的区别是,Alias可以应用在根域(Zone Apex)。即可以为xiaopeiqing.com的根域创建Alias记录,而不能创建CNAME
    • 别名记录可以节省你的时间,因为Route53会自动识别别名记录所指的记录中的更改。例如,假设example.com的一个别名记录指向位于lb1-1234.us-east-2.elb.amazonaws.com上的一个ELB负载均衡器。如果该负载均衡器的IP地址发生更改,Route53将在example.com的DNS应答中自动反映这些更改,而无需对包含example.com的记录的托管区域做出任何更改。
  • TTL – Time to Live时间是DNS记录在DNS服务器或用户端上缓存保留的时间,在TTL时间到达之前,DNS记录将缓存在其他非权威DNS服务器或者用户主机上
    • (了解即可)TTL时间如果设置过短,那么会增加记录更新的频率,同时增加递归查询的时间。即每次到达TTL时间,其他DNS服务器都要再次访问该域名服务器来更新信息
    • (了解即可)TTL时间如果设置过长,那么在做DNS记录更新的时候,真实用户会很长时间之后才能查询到最新版本的记录(要等到TTL时间结束)
CNAME 记录别名记录
CNAME 记录可以将 DNS 查询重定向到任何 DNS 记录。例如,您可以创建一条 CNAME 记录,该记录将查询从 acme.example.com 重定向到 zenith.example.com 或 acme.example.org。您不需要使用 Route 53 作为您要将查询重定向到的域的 DNS 服务。 别名记录只能将查询重定向到选定的 AWS 资源,例如: Amazon S3 存储桶 CloudFront 分配 您要在其中创建别名记录的 Route 53 托管区域中的其他记录 例如,您可以创建一个名为 acme.example.com 的别名记录,该记录将查询重定向到 Amazon S3 存储桶(也称为 acme.example.com.)。您还可以创建一个 acme.example.com 别名记录,该记录将查询重定向到 example.com 托管区域中名为 zenith.example.com 的记录。
您不能创建与托管区域(区域 APEX)同名的 CNAME 记录。对于域名 (example.com) 的托管区域和子域 (zenith.example.com) 的托管区域都是如此。 在大多数配置中,您可以创建一个与托管区域(区域 APEX)同名的别名记录。一个例外情况是,当您要将来自区域 APEX(如 example.com)的查询重定向到具有类型 CNAME(如 zenith.example.com)的同一托管区域中的记录时。别名记录必须与您要将流量路由到的目标记录具有相同的类型,而为顶级域名创建 CNAME 记录的做法不受支持,即使对于别名记录也是如此。
Route 53 收取 CNAME 查询费用。 对于 AWS 资源的别名查询,Route 53 不收费。有关更多信息,请参阅 Amazon Route 53 定价
无论记录类型如何,CNAME 记录都会重定向对记录名称(如 A 或 AAAA)的 DNS 查询。 仅当别名记录的名称(如 acme.example.com)和别名记录的类型(如 A 或 AAAA)与 DNS 查询中的名称和类型匹配时,Route 53 才响应 DNS 查询。
CNAME 记录在响应 dig 或 nslookup 查询时显示为 CNAME 记录。 别名记录显示为您在创建记录时指定的记录类型,例如 A 或 AAAA。别名属性仅在 Route 53 控制台中或在响应以编程方式发出的请求时可见,例如 AWS CLI list-resource-record-sets 命令。

Amazon Route 53 如何为您的域路由流量

在您将 Amazon Route 53 配置为将 Internet 流量路由到您的资源(比如 Web 服务器或 Amazon S3 存储桶)之后,当有人请求 www.example.com 的内容时,将在短短几毫秒内发生以下情况:

https://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/welcome-dns-service.html

其他知识点

  • 弹性负载均衡器(ELB)没有固定的IPv4地址,在使用ELB的时候永远使用它的DNS名字。很多场景下我们需要绑定DNS记录到ELB的endpoint地址,而不绑定任何IP
  • 需要熟记Alias记录和CNAME的区别,也可以参考一下在别名和非别名记录之间做出选择
  • 考试中,如果出现选择Alias记录和CNAME记录的选择,95%的情况都要选择Alias记录

如何使用Route53的DNS服务

本节课程将主要讲解如何使用Amazon Route53服务,并且讲解如何使用Route53申请域名,使用Route53托管我们在其他域名提供商上购买的域名。

另外,还介绍了不同的DNS类型,A记录,CNAME记录,Alias记录的作用和不同。

知识点

AWS Route53中有多种不同的路由策略(Routing Policy),我们可以根据自己的不同需求将我们的DNS解析到不同的目标上去。

  • 简单路由策略(Simple Routing Policy):提供单一资源的策略类型,即一个DNS域名指向一个单一目标
  • 加权路由策略(Weighted Routing Policy):按照不同的权值比例将流量分配到不同的目标上去
  • 延迟路由策略(Latency Routing Policy):根据网络延迟的不同,将与用户延迟最小的结果应答给最终用户
  • 地理位置路由策略(Geolocation Routing Policy):根据用户所在的地理位置,将不同的目标结果应答给用户
  • 故障转移路由策略(Failover Routing Policy):配置主动/被动(Active/Passive)的故障转移策略,保证DNS解析的容灾

简单路由策略(Simple Routing Policy)

AWS Route 53,我们使用简单路由策略(Simple Routing Policy)来为域名创建一个标准的DNS记录,而不用复杂的例如基于延迟或者权重的方法。一般我们使用简单路由策略将我们的流量指向单一的资源,例如一台Web服务器。

在简单路由策略配置里面,对于同一个DNS名我们只能创建一条目标,这个目标可能是一组IP地址,或者是一个Alias记录。

下面的操作是如何使用简单路由策略将我们的域名指向到一个S3托管的静态网站。

加权路由策略(Weighted Rouing Policy)

使用AWS Route53加权路由策略(Weighted Rouing Policy),我们可以将多个资源关联到同一个域名(例如iteablue.com),并根据不同的权值比重将流量分发给不同的资源。

我们可以使用加权路由策略来做负载均衡,或者软件测试。

比如将5%的流量引导到测试应用上,观看测试应用的效果。

我们可以为每一个记录都分配一个权值,每一条记录分配到的总流量的比例是权值/所有记录的权值之合,公式如下:

在DNS层面没有会话的保持功能,但是在客户端角度看,DNS结果是会缓存在本机的,也会缓存到离用户较近的DNS服务器上,因此客户在短时间内去访问这个域名,都会得到一样的结果。

下面讲解如何使用加权路由策略吧,我将会把根域名的50%流量指向S3静态托管网站,将另外50%流量指向EC2实例下的HTTP服务器。

创建一个EC2 HTTP Server

创建ALB

编辑策略加权路由策略

延迟路由策略(Latency Routing Policy)

AWS Route53的延迟路由策略(Latency Routing Policy)可以让我们从延迟最低的AWS区域为用户处理请求,从而提高性能和速度。

要使用基于延迟的路由策略,我们需要在Route53中创建多条DNS记录(延迟路由策略类型),并且将它们指向不同区域内的目标。当用户去访问这个DNS记录的时候,会先对不同目标的延迟做比较,并且选择延迟最低的一个目标进行访问。

举个例子,如果我在东京区域和首尔区域都有ELB负载均衡器,我需要为2个ELB都创建延迟路由类型的DNS记录。

当一个用户访问这个域名的时候,Route53会查看到东京区域以及到首尔区域之间的延迟,并且使用延迟较低的一个,把其结果反馈给用户。

如果与首尔之间的延迟较低,那么用户最终会访问首尔的ELB负载均衡器。

故障转移路由策略(Failover Routing Policy)

故障转移路由策略(Failover Routing Policy)实际上是创建了DNS记录的主动/被动(Active/Passive)故障转移。

在正常的情况下所有的流量应该解析到主的DNS记录上面。只有当这个主的DNS记录不健康的时候,Route53才会自动将所有流量解析到备用的DNS记录上面。

我们可以对域名开启健康检查(Health Check)功能,对域名(服务和端口)的健康状态进行监控,一旦健康状态出现问题,Route53就会自动进行切换。

地理位置路由策略(Geolocation Routing Policy)

地理位置路由策略(Geolocation Routing Policy)可以根据用户所在的位置来返回不同的DNS结果。

比如可以让位于东京的用户访问东京的ELB负载均衡器,位于首尔的用户访问首尔的ELB负载均衡器,位于新加坡的用户也访问首尔的ELB负载均衡器等。

使用基于地理位置的路由策略,我们可以对内容进行本地化(提供当地的语言和特色);也可以向某些地理位置提供内容服务,而向其他地理位置提供另外的内容服务,甚至不提供服务。

我们可以按大陆(七大洲))、国家/地区来指定地理位置,并且地理区域范围越精细则优先级越高。

Route53判定地理位置的依据是用户的源IP地址,有一些IP地址可能无法识别为具体的地理位置,因此我们最好设置一条默认的匹配规则。在这条默认的匹配规则里,没有被任何国家/地区所匹配的位置,还是可以访问到某个内容。

Route53总结

  • 弹性负载均衡器(ELB)没有固定的IPv4地址,在使用ELB的时候永远使用它的DNS名字。很多场景下我们需要绑定DNS记录到ELB的endpoint地址,而不绑定任何IP
  • 需要熟记Alias记录和CNAME的区别,也可以参考一下在别名和非别名记录之间做出选择

AWS Route53中有多种不同的路由策略(Routing Policy),我们可以根据自己的不同需求将我们的DNS解析到不同的目标上去。

  • 简单路由策略(Simple Routing Policy):提供单一资源的策略类型,即一个DNS域名指向一个单一目标
  • 加权路由策略(Weighted Rouing Policy):按照不同的权值比例将流量分配到不同的目标上去
  • 延迟路由策略(Latency Routing Policy):根据网络延迟的不同,将与用户延迟最小的结果应答给最终用户
  • 地理位置路由策略(Geolocation Routing Policy):根据用户所在的地理位置,将不同的目标结果应答给用户
  • 故障转移路由策略(Failover Routing Policy):配置主动/被动(Active/Passive)的故障转移策略,保证DNS解析的容灾

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据