IP和域名

一个IP地址对多个域名,一个域名只对应一个IP地址

可以通过采用两种方式实现一个域名有多个ip,负载均衡,分摊负载,以及为不同线路优化最快节点

一 原理

是将不同的请求发往不同的节点上进行处理。如下图:

https://img-blog.csdn.net/20140721122750315?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3l3b3Nw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

二 实现方式

1.HTTP重定向

利用HTTP重定向协议实现负载均衡大概工作原理如下图:

 

  HTTP重定向服务器是一台普通的应用服务器,其唯一个功能就是根据用户的HTTP请求计算出一台真实的服务器地址,并将该服务器地址写入HTTP重定向响应中(重定向响应状态码为302)返回给用户浏览器。用户浏览器在获取到响应之后,根据返回的信息,重新发送一个请求到真实的服务器上。

  如上图所示,浏览器访问www.apusapp.com,DNS服务器解析到IP地址为114.100.20.200,即HTTP重定向服务器的IP地址。重定向服务器计根据某种负载均衡算法算出真实的服务器地址为114.100.20.203并返回给用户浏览器,用户浏览器得到返回后重新对114.100.20.203发起了请求,最后完成访问。

    优点

                   比较简单

    缺点

                浏览器需要两次请求服务器才能完成一次访问,性能较差;

                 同时,重定向服务器本身的处理能力有可能成为瓶颈,整个集群的伸缩性规模有限;使用HTTP返回码302重定向,有可能使搜索引擎判断为SEO作弊,降低搜索排名。因此实践中很少使用这种负载均衡方案来部署。
 

2.DNS域名解析

    DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。人们在通过浏览器访问网站时只需要记住网站的域名即可,而不需要记住那些不太容易理解的IP地址。在DNS系统中有一个比较重要的的资源类型叫做主机记录也称为A记录,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。如果你有一个自己的域名,那么要想别人能访问到你的网站,你需要到特定的DNS解析服务商的服务器上填写A记录,过一段时间后,别人就能通过你的域名访问你的网站了。DNS除了能解析域名之外还具有负载均衡的功能,下面是利用DNS工作原理处理负载均衡的工作原理图:

 

由上图可以看出,在DNS服务器中应该配置了多个A记录,如:
      www.apusapp.com IN A 114.100.20.201;
      www.apusapp.com IN A 114.100.20.202;
      www.apusapp.com IN A 114.100.20.203;
因此,每次域名解析请求都会根据对应的负载均衡算法计算出一个不同的IP地址并返回,这样A记录中配置多个服务器就可以构成一个集群,并可以实现负载均衡。上图中,用户请求www.apusapp.com,DNS根据A记录和负载均衡算法计算得到一个IP地址114.100.20.203,并返回给浏览器,浏览器根据该IP地址,访问真实的物理服务器114.100.20.203。所有这些操作对用户来说都是透明的,用户可能只知道www.apusapp.com这个域名。

 

优点


1. 将负载均衡的工作交给DNS,省去了网站管理维护负载均衡服务器的麻烦。
2. 技术实现比较灵活、方便,简单易行,成本低,使用于大多数TCP/IP应用。
3. 对于部署在服务器上的应用来说不需要进行任何的代码修改即可实现不同机器上的应用访问。
3. 服务器可以位于互联网的任意位置。
4. 同时许多DNS还支持基于地理位置的域名解析,即会将域名解析成距离用户地理最近的一个服务器地址,这样就可以加速用户访问,改善性能。

缺点


1. 目前的DNS是多级解析的,每一级DNS都可能缓存A记录,当某台服务器下线之后,即使修改了A记录,要使其生效也需要较长的时间,这段时间,DNS任然会将域名解析到已下线的服务器上,最终导致用户访问失败。
2. 不能够按服务器的处理能力来分配负载。DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异,不能反映服务器当前运行状态,所以其的负载均衡效果并不是太好。
3. 可能会造成额外的网络问题。为了使本DNS服务器和其他DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分配,一般都要将DNS的刷新时间设置的较小,但太小将会使DNS流量大增造成额外的网络问题。
 

 

 

   事实上,大型网站总是部分使用DNS域名解析,利用域名解析作为第一级负载均衡手段,即域名解析得到的一组服务器并不是实际提供服务的物理服务器,而是同样提供负载均衡服务器的内部服务器,这组内部负载均衡服务器再进行负载均衡,请请求发到真实的服务器上,最终完成请求。

 

 

参考: [1] http://www.baike.com/wiki/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1 [2] http://blog.csdn.net/tujiyue/article/details/7032257 [3] 《大型网站技术架构——核心原理与案例分析》