负载均衡之DNS负载
前言
之前在知乎上讲了一下负载均衡的一些作用,介绍了下一些软硬件的负载均衡的软件和硬件,本人主要做软件研发,所以,重点讲的是对局域网的中的一些作用,但作为负载均衡的一部分,DNS负载也是负载均衡的一种。
DNS负载与CDN
在大型互联网企业中,像腾讯、抖音、百度等企业,都不只有一个机房,会在全国各地设置一些机房,每个机房都会对外提供服务,并通过一定的手段来同步数据和保证数据的一致性,本文主要是讲负载均衡,对数据和其他的一些同步手段都按下不表。主要讲一下DNS负载和CDN。
先说DNS负载,DNS负责解析域名与IP之间的关系,首先,客户端先向DNS服务器发起UDP请求,咨询当前域名的IP是多少;可能你要问,客户端怎么知道DNS服务器是多少,这个DNS服务器是我们在设置网络的时候进行设置的,可以在网络设置中查看,如下图
在截图的最下方,有使用下面的DNS服务器地址的配置,机器拿到该配置后,向该地址发起请求,服务器会回应一个IP地址给到机器,机器就会用该IP地址进行访问。
这个时候,你可能会有疑问了,这个DNS服务器是一个固定的IP,我也没办法去这个ip的机器上去设置我服务器信息,怎么做负载均衡哪?实际上,我们每一个域名,都要到域名提供商那里去注册我们的域名和IP的关联关系,注册的时候,我们可以设置多条A记录(可以暂时不需要理解A记录,相当于负载均衡中的一条转发记录),对应到不同的IP,通过设置不同的权重,访问不同的A记录。
如上,DNS负载就设置完成了,需要注意的是,DNS的域名A记录设置,会有一个延迟,本机刷新DNS的映射关系,DNS服务器缓存信息,都会影响DNS域名负载生效的时间。
DNS负载又于CDN有什么关系拿,百度百科上是如此解释的:
那么,客户端通过DNS负载来路由访问各地CDN机房信息,减少网络的访问时间和拥堵情况。CDN上存储的是用户经常访问的一些资源,通过提前把热资源存储到CDN上,通过DNS负载,减少数据在网络上的传输时间,减少或避免因为网络拥堵造成的数据丢包。
在网络中的作用
综上所述,DNS负载是另一个层面上的负载均衡,在网络中,由于网络是一个网状结构的架构,一个byte的数据从一台机器传输到另一台机器上,需要经过不同的交换机和路由器,需要好多跳才能到达目标机器上,数据每经过一跳,都将减少一个生命周期,当生命周期减完后,该byte就会被丢弃,从而导致数据传输不到目的机器上。
小知识点,查看当前机器与目的机器之间的跳数,可以通过ping命令来查看,其中的TTL值就是数据从目的机器到当前机器剩余的生命条数。
为了减少数据丢失的风险,提高网络传输效率,通过负载均衡策略,选择最优的、最合适的服务器资源来提供服务。 同样,在某机房或者某地区的服务发生故障后,通过网络负载可以很快的切换到另一个机房或者服务资源池,减少故障风险和业务宕机。