DNS分布均衡(Load balance)的实现
在上级数据库中写两条记录(同一个名字对应对个IP时),DNS会自动将请求基于轮循方式,分给每个DNS服务器 例如: 第一次将请求给第一个DNS,第二次将请求给第二个DNS,... 依次循环 注:客户端连接第一个主机连接不上时,将请求都给第二个主机,linux还可以给第三个DNS服务器 第一个找不到时,不会再让第二个DNS、第三个DNS去找(因为根域都找不到)
DNS分布式特点
基于授权将功能分散出去,让多个主机分别处理 数据放在多个位置,导致数据在多处存储不一致,数据访问的不确定结果 一致性:任何时候,每个主机返回数据是一致的 分区容错性:DNS,一个主机不在线时,另一个主机允许继续提供服务(分布式系统都应该满足) 结果可用性:DNS,任何时候,无论有多少个主机宕机,都能得到结果(不确定结果) E.g DNS域名分布式 满足分区容错性,结果可用性 牺牲一致,但最终结果一致
缓存定义、作用、多级缓存
缓存:进程内存中维护的一段内存空间 hash:名称<Domain>-----值<IP> 查询:O(1) 失效前,一直都在使用缓存 缓存的作用 缓存时长:TTL 长:长时间内,都能快速解析。别人修改无从得知 短:数据实时一致,服务器压力、负荷大,带宽消耗多 多级缓存 客户端<程序提供的缓存>------》DNS<本地:提供缓存>-----》迭代得出结果
一次完整的解析请求
1)本地主机发起递归,运营商缓存DNS迭代
2) 本地主机发起递归,本地缓存DNS迭代
一、区域解析库:由众多RR组成
资源记录:Resource Record ---RR 详细记录所有主机名和IP对应的关系
记录类型:A,AAAA,PTR,SOA,NS ,CNAME,MX SOA:Start Of Authority 起始授权记录-----一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录 在解析库第一条 只能有一个SOA记录 A:internet Address 作用FQDN--->IP AAAA :FQDN---> IPv6 PTR:PoinTeR(指针) ,IP --->FQDN NS : Name Server ---专用于标明当前区域的负责人DNS服务器 CNAME:Canonical Name 别名记录 MX:Mail eXchanger 邮件交换器---标明当前域内用于接收邮件的主机
二、资源记录定义的格式:
语法:name [TTL] IN RR_TYPE vlaue
1)TTL: 可从全局继承,解析结果的缓存时长,单位是"s" 秒;IN:internet
2)@ 可用于引用当前区域的名字
3)相邻多个资源记录,name相同时,可以省略name
4)每个NS,MX记录对应一个A记录
2.1、SOA记录
name-----当前区域的名字(正、反) 例如:"magedu.com." value-----由多部分组成 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字 主DNS名或区域名(@) 当前区域管管理员邮件地址(不能用@,需.替代):linux@magedu.com. -----》linux.magedu.com. (主从DNS服务器协调属性及否定答案的统一TTL值) ( serial <=10位 ; 表示序列号 而分号表示注释 refresh ; 刷新 retry ; 重试 expire ; 过期 TTL ; 否定答案的TTL ) 默认s
出现在解析库中任何一个名字,都需要最后加一个点结尾,必不可少的例如: magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. ( 20170916 ; serial 10M ; refresh 5M ; retry 1W ; expire 1D ; TTL )
2.2、NS 记录
name-----当前区域名字 value-----当前区域某DNS服务器的名字,例如:ns.magedu.com. 注:一个区域可以有多个NS记录,需要多条记录来实现 相邻的两个资源记录的name相同时,后续的可省略 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录E.g: magedu.com. [86400] IN NS ns1.magedu.com. magedu.com. [86400] IN NS ns2.magedu.com. magedu.com. [86400] IN NS ns3.magedu.com. 或简写 magedu.com. [86400] IN NS ns1.magedu.com. [86400] IN NS ns2.magedu.com. [86400] IN NS ns3.magedu.com.
2.3、MX记录
name-----当前区域的名 value------当前区域的某邮件服务器(smtp服务器)的主机名,一个区域内,MX记录可有多个;但是每个记录的value之前应该有一个数字[0-99:优先级递减]表示此服务器的优先级:数字越小优先级越
注:对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
E.g: magedu.com. [86400] IN MX 10 mx1.magedu.com. magedu.com. [86400] IN MX 20 mx2.magedu.com.
2.4、A记录
name-----某主机的FQDN value-----主机名对应主机的IP地址 E.g www.magedu.com. [86400] IN A 1.1.1.1 www.magedu.com. [86400] IN A 1.1.1.2 注: a)轮循:同一个名字有多个不同的值,通过多条记录定义多个不同的值 第一次请求:解析为1.1.1.1,第二次请求:解析为1.1.1.2,... 依次循环 b)同一个值有多个不同的定义名字,仅代表通过不同的名字可以找到同一个主机 mx1.magedu.com. [86400] IN A 1.1.1.3 mx2.magedu.com. [86400] IN A 1.1.1.3 c)泛域名解析:避免用户写错名称时,给错误答案。通过泛域名解析进行解析至某特定地址 *.magedu.com. [86400] IN A 1.1.1.4 magedu.com. [86400] IN A 1.1.1.4
2.5、PTR记录
name----IP,有特定格式:把IP地址反过来写,1.2.3.4 --要写作-> 4.3.2.1;而有特定后缀:in-add.arpa. 完整写法 4.3.2.1.in-addr.arpa. value FQDN 例如: 4.3.2.1.in-addr.arpa. [86400] IN PTR www.magedu.com. 注:可省略网络地址及后缀,主机地址需要反写 4.3.2 [86400] IN PTR www.magedu.com.
2.6、CNAME记录
name 别名 value 正式名字的FQDN E.g : web.magedu.com. [86400] IN CNAME www.magedu.com. 一个主机有多个名字时,用别名实现 E.g : magedu.com. [86400] IN A 1.1.1.1 web.magedu.com. [86400] IN CNAME www.magedu.com mail.magedu.com. [86400] IN CNAME www.magedu.com pop3.magedu.com. [86400] IN CNAME www.magedu.com