Nacos寻址模式---DNS Filter

目录

一、DNS工作原理

1. 域名空间

2. 工作流程

二、基于DNS的服务发现

1. 独立的DNS服务器

2. DNS Filter模式

3. DNS-F 客户端

VIP(虚拟IP)


一、DNS工作原理

1. 域名空间

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。你可以把它想象成一本巨大的电话本。
举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69。

域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。

Nacos寻址模式---DNS Filter

  • 根域:DNS域名使用中规定由尾部句点'.'来指定名称位于根或者更高层次的域层次结构。
  • *域:用来指示某个国家、地区或者组织。采用三个字符,如com -> 商业公司,edu -> 教育机构,net -> 网络公司,gov -> 非军事*机构等等。
  • 二级域:个人或者组织在Internet使用的注册名称。采用两个字符,如:cn -> 代表中国,jp -> 日本,uk -> 英国,hk -> 香港等等。
  • 主机:主机名处于域名空间结构中的最底层,主机名和域名结合构成全域名(Fully Qualified Domain Name,FQDN),主机名是FQDN最左端的部分。

2. 工作流程

DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为IP地址。
具体过程如下:

  • ①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了。
  • ②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如http://www.baidu.com/,并将这个主机名传送给DNS应用的客户端。
  • ③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)。
  • ④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址。
  • ⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接。

DNS查询过程:

Nacos寻址模式---DNS Filter

  1. 在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
  2. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
  3. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
  4. 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
  5. 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该*域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(http://qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找http://qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。
  6. 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

二、基于DNS的服务发现

基于DNS做服务发现,首先注册中心的数据应该可以以DNS的数据格式暴露出来,让任何系统的DNS 客户端都可以通过DNS协议获取服务列表。

基于DNS的服务发现方式,大致可以归结两类:

1. 独立的DNS服务器

DNS服务器从注册中心获取所有已注册的服务及对应的IP端口列表。调用方Service A 通过DNS查询某个服务下的IP列表,然后发起调用。

Nacos寻址模式---DNS Filter

  • 优点

    1. 集中的DNS服务器,便于升级维护
  • 缺点

    1. 对DNS服务器性能要求高
    2. 这种情况下一般需要LVS设备为DNS服务器集群做请求转发,存在单点问题(系统中一点失效,就会让整个系统无法运作的部件,换句话说,单点故障即会整体故障。)

2. DNS Filter模式

将DNS服务器集成到服务调用方的机器或容器中,保证ServiceA的DNS查询被拦截到本机的DNS服务器上,获取服务的IP列表后发起调用。这种模式能解决DNS服务器模式的单点问题,但其维护升级的成本较高。

Nacos寻址模式---DNS Filter

3. DNS-F 客户端

采用第二种DNS Filter的服务发现模式,单独开发了DNS-F客户端,DNS-F客户端跟应用部署在同一个主机或容器内。

基于DNS Filter的服务发现模式

  • 应用ServiceA通过DNS查询获取ServiceB的可用IP列表;
  • DNS-F会拦截到ServiceA的查询请求,判断自己是否有该查询的答案,如果有(服务已在VIPServer中注册)则直接返回IP列表;
  • 如果查询的服务在VIPServer中没有注册,DNS-F把DNS查询转发给系统的nameserver,由真正的DNS系统解析;

Nacos寻址模式---DNS Filter

VIP(虚拟IP)

一个未分配给主机的IP,使用vip技术对外提供服务的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的 任意一个都可以连接到这台主机,当服务器发生故障无法对外提供服务时,动态将这个IP切换到备用主机,以实现服务的高可用性。

原理:

主要依靠TCP/IP的ARP协议。IP地址只是一个逻辑地址,在以太网中MAC地址才是真正用来进行数据传输的物理地址,每一台主机中都有一个ARP的高速缓存,存储同一网络内的IP地址与MAC地址的关系,以太网主机发送数据时会先从这个缓存中查询IP对应的MAC地址,再向这个MAC地址发送数据。

示例:

以下是电脑上的ARP缓存

(192.168.1.219) at 00:21:5A:DB:68:E8 [ether] on bond0

(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0

(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0

217、218对应真实的两台电脑

219为虚IP,219与217的MAC地址相同

当217宕机之后的ARP缓存

(192.168.1.219) at 00:21:5A:DB:7F:C2 [ether] on bond0

(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0

(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0

当218发现217宕机之后会向网络发送一个ARP数据包,告诉所有主机219这个IP对应的MAC地址是00:21:5A:DB:7F:C2

 

 

原文:

https://blog.****.net/root_robot/article/details/53872812

https://yq.aliyun.com/articles/598792