一个域名可以绑定多个IP吗?由此引发的调查

今天在周例会上,旭哥给大家分享一些关于平时工作排查问题的时候遇到的一些坑,里面提到了一个域名后面可能会对应多台服务器(多个IP),当然,大家都了解的是公司的服务架构里是有“负载均衡”机器的,也就是在真正的应用服务器之前,会有一台或多台nginx机器,也就是我们常说的“负载均衡”机器,负责分配流量,将不同的请求按照一定的规则分配到不同的机器上,保证系统整体的并发量。但在这个体系中,我们访问的域名,仍然对应解析的是一个域名(这台nginx机器),而非后面多个ip的应用机器,那我们疑问中的一个域名绑定多个IP到底能否实现呢?答案是,可以!
 
QQ截图20170818163833.png

百度的www.a.shifen.com.有两条A记录指向两个不同的IP地址 
 

如何实现一个域名绑定多个IP?
说到这,就需要给大家讲一个概念——DNS负载均衡。
 
首先我们来看下“负载均衡”的概念:


负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软体和硬件来完成。


这是来自维基百科的解释,那么什么是“DNS负载均衡”?


DNS负载均衡技术的实现原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。


 
这个是百科的定义。
 
看了上面的定义,咱们在具体分析一下这个DNS负载均衡,也就是载均衡之DNS轮询。 


DNS轮循(或DNS的循环机制),是指一种负载分发,负载均衡或者容错性地提供多个冗余的IP服务主机的技术。


 
大多数域名注册商都支持对统一主机添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡。
下图的例子是:有3台联通服务器、3台电信服务器,要实现“联通用户流量分摊到3台联通服务器、其他用户流量分摊到电信服务器”这个效果的设置。

AFFbYn.png

 
DNS由于成本较低,所以一般在小型的网站用的比较多。但是大型的网站一般也会将用它和其他负载均衡的方式结合起来一起使用,DNS轮询方式提供的IP地址,在大型网站中往往是一个集群的地址,可能是均衡交换机也可能是均衡服务器。对于小网站的话,挂接多台服务器也没有问题。如:

NJfQvy.png

 
DNS轮询的优点:

零成本:只是在DNS服务器上绑定几个A记录,域名注册商一般都免费提供解析服务;
部署简单:就是在网络拓扑进行设备扩增,然后在DNS服务器上添加记录。

DNS轮询的缺点:

1、可靠性低

假设一个域名DNS轮询多台服务器,如果其中的一台服务器发生故障,那么所有的访问该服务器的请求将不会有所回应,这是任何人都不愿意看到的。即使从DNS中去掉该服务器的IP,但在Internet上,各地区电信、网通等宽带接入商将众多的DNS存放在缓存中,以节省访问时间,DNS记录全部生效需要几个小时,甚至更久。所以,尽管DNS轮询在一定程度上解决了负载均衡问题,但是却存在可靠性不高的缺点。

2、负载分配不均匀

DNS负载均衡采用的是简单的轮询算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况。

DNS服务器是按照一定的层次结构组织的,本地DNS服务器会缓存已解析的域名到IP地址的映射,这会导致使用该DNS服务器的用户在一段时间内访问的是同一台Web服务器,导致Web服务器间的负载不均匀。此外,用户本地计算机也会缓存已解析的域名到IP地址的映射。当多个用户计算机都缓存了某个域名到IP地址的映射时,而这些用户又继续访问该域名下的网页,这时也会导致不同Web服务器间的负载分配不均匀。

负载不均匀可能导致的后果有:某几台服务器负荷很低,而另几台服务器负载很高、处理缓慢;配置高的服务器分配到的请求少,而配置低的服务器分配到的请求多。

0 个评论

要回复文章请先登录注册