DNS (Domain Name System)
- DNS 概念
- 域名系统,直观上看,可以将域名转变成IP地址,使得我们在访问网络的时候不用输入IP地址,而是输入友好的域名。
- Top-Level Domains
- 顶级域名,如.com, .net, .org, .gov, .cn 等,顶级域名是由Internet Corporation for Assigned Name and Numbers(ICANN)管理的。其它二级域名的注册则是由Network Information Center(InterNIC)及其授权的域名注册中心管理的。InterNIC是ICANN的一个服务机构。域名信息都存放在一个叫WhoIS的数据库中。
- IP Address、
- A类:0.0.0.0 - 127.255.255.255
- B类:128.0.0.0 - 191.255.255.255
- C类:192.0.0.0 - 223.255.255.255
- D类:224.0.0.0 - 239.255.255.255
- E类:240.0.0.0 - 247.255.255.255
- Hosts
- 主机,例如:www.example.com, ftp.example.com, email.example.com,这里的www,ftp和email都代表主机。www指的是万维网,也就是基于HTTP/S和HTML的网页主机。ftp是文件传输服务的主机。email是邮件服务器主机。
- Subdomain
- 子域名,例如,www.history.school.com,这里的history.school.com就是子域名,子域名是上层域名的扩充。
- Full Qualified Domain Name(FQDN)
- 例如:api.aws.amazon.com. 是FQDN,注意,按照标准FQDN后面有一个.,虽然很多时候都省略了。
- 上面的api是主机名,api.aws.amazon.com 是域名,. 代表root,aws.amazon.com 是sub domain,com 是 TLD,amazon是SLD。
- Name Servers
- Name servers 用于将域名转换成IP地址的服务器,一般的规则是,当某个Name Server收到转换请求后,如果自己有记录,则返回对应的IP地址,否则返回其上级Name Server地址。
- 常见域名服务器:8.8.8.8,8.8.4.4,114.114.114.114
- Zone Files
- 域名服务器中的一个文件,用于记录域名到IP地址的转换信息。
- Root Name Servers
- 根域名服务器,全球目前共有13个根域名服务器,但有很多根域名服务器的镜像。根域名服务器一般不记录具体的域名到IP的转换,而是记录TLD的信息,会告诉请求者TLD的位置。
- 域名解析规则
- 假设在某个浏览器上输入地址 www.example.com,当前电脑会在local host file中寻找是否有本地记录,如果有,则返回对应的IP地址,如果没有则会寻找DNS cache,看之前是否有访问过www.exampel.com的记录,如果有,则使用之前的IP地址,如果没有则向DNS server查询。
- 当前电脑会查看设置的DNS server,并向其发送解析请求,如果当前DNS server有对应记录,则返回对应的IP地址。如果当前DNS server没有记录,但有记录知道哪个DNS server可以解析www.example.com,则将该DNS server地址返回,否则返回上级DNS server地址。如果走到root name server后都不知道那个DNS server可以解析www.example.com,则该域名就是无效域名,无法找到对应IP。
- Record Types
- SOA,Start of Authority,每个zone 文件都有的记录,用于定义DNS的基本信息,包含信息:
- The name of the DNS server for that zone
- The administrator of the zone
- The current version of the data file
- The number of seconds that a secondary name server should wailt befor checking ofor updates
- ...
- A and AAAA
- A记录是域名到IPv4的记录
- AAAA记录是域名到IPv6的记录
- Canonical Name(CNAME)
- 定义某个域名的别名
- Mail Exchange(MX)
- 域名到mai server的记录
- Name Server(NS)
- TLD servers用于将请求转发到其它DNS server的记录
- Pointer(PTR)
- 用于IP地址到域名映射的记录
- Sender Policy Framework(SPF)
- 发送邮件时用于检查发送者是否有相应权限的记录,如果设置了SPF,那么就对发送者做了一定限制
- Text(TXT)
- 文本信息,用于进一步说明服务器,网络,数据中心等其它信息,便于阅读
- Service(SRV)
- 记录服务信息,包含协议和端口,这样就能很快找到相应的服务
- SOA,Start of Authority,每个zone 文件都有的记录,用于定义DNS的基本信息,包含信息:
Route 53
- AWS route 53的作用
- 域名注册,可以在route 53上注册自己的域名,route 53是合法的域名注册中心
- DNS service,DNS服务,可以自己创建DNS记录,解析自定义的domain规则
- Health Checking,健康检查,向自己的应用发送健康检查请求,以保证应用的可靠性
- Hosted Zones
- Route 53里面的zone文件,包含两种,private和public
- private:用于VPC内部域名的解析
- public:用于internet域名的解析
- 支持的记录类型
- A
- AAAA
- CNAME
- MX
- NS
- PTR
- SOA
- SPF
- SRV
- TXT
- Routing Policies
- Routing Policies,路由策略,这是route 53提供的有别于标准DNS服务的更强大,更灵活的记录类型。
- Simple,简单类型,如果只有一个服务器,则可使用该类型,因为不管怎么样,所有的请求都只会路由到这一个服务器上
- Weight,按权重路由,例如,可以指定10%的请求到A服务器,20%的请求到B服务器,其它请求都到C服务器
- Latency-Based,按延迟路由,选择延迟最低的服务器
- Failover,按故障率路由,选择故障率最低的服务器
- Geolocation,按地理位置路由,选择地理位置最近的服务器
- 使用Route53建立高可靠应用
- 在每个AWS region上,每个ELB都设置成Cross-Zone模式和打开Connection Draining
- 所有服务器都应该位于Auto-Scaling Group内,且上层都需要连接ELB,增加服务的可扩展性
- 所有ELB都要设置health check,以保证请求都转发到健康的instance上
- 开启Route 53到ELB的健康检查,保证Route 53将请求路由到健康的ELB上
- 在Route53上设置别名,将对外的域名映射为生产环境的ELB域名,类型为latency或其它
- 在Route53上设置别名,将对外的域名的secondary target映射到某个S3的静态host website上,类型为failover,这样的目的是如果生产环境出问题,用户还是可以访问静态的网页
- 应用的静态内容可以使用CDN缓存,以提高响应速度
- 应用需要部署在多个region上,多个AZ上,以提高HA