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 的内容时,将在短短几毫秒内发生以下情况:
其他知识点
- 弹性负载均衡器(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):根据用户所在的地理位置,将不同的目标结果应答给用户
- 地理位置临近度路由(Geo-proximity Routing Policies): 当您希望根据资源的位置路由流量时使用,并且可以选择将流量从一个位置的资源转移到另一个位置的资源。 Geoproximity routing允许Amazon根据用户和资源的地理位置将流量路由到您的资源。
- 故障转移路由策略(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解析的容灾