负载均衡层设计方案之负载均衡技术总结篇(4)
我们试想一下,如果将我们要访问的资源放到离我们客户端最近的一个服务上(例如在广州的客户端访问的资源就在广州的机房)。那么是不是就解决了这个问题(这个点称为“边缘节点”)。这就是CDN网络解决的问题,如下图所示: 目前CDN服务不需要我们进行开发,市面上有很多公司都提供免费的/付费的 CDN服务。当然如果您想自行搭建CDN网络,可以参考以下技术方案: Squid:Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。目前,国内很多CDN服务商的网络都是基于Squid搭建的 利用Nginx的proxy_cache搭建:Nginx中的rewrite技术实际上就可以实现URL请求重写,实现请求转发。而Nginx中的proxy_cache组件可以使得从远端请求的源数据保存在本地,从而实现一个CDN网络的搭建。 自己写:CDN网络没有特别复杂的技术门槛,如果您有特别的需求,可以自己写一个。当然上图中所介绍的CDN网络属于第一代CDN网络,将第二代/第三代P2P技术加入到CDN原理中,可以形成第二代CDN网络:如下图所示: 第三代P2P技术又被称为混合型P2P技术主要是为了解决元数据服务器的处理压力,加速资源的本地化速度。关于P2P技术我会在讲完“业务系统设计”、“业务通信系统设计”后,专门做一个新的专题进行介绍。另外提一下,YouTube的P2P网络就是自己做的。 3、负载均衡层技术汇总 3-4、Keepalived技术 在这些文章中从来没有单独介绍Keepalived。这是因Keepalived是为了监控集群节点的工作状态,在因为某种原因不能正常提供服务的前提下,完成备机的切换。这里面有两个关键点:监控节点上提供的服务、完成网络切换。keepalived本身是不提供业务服务的,只是监控提供的服务是否正常工作,那么既然都没有可以监控的服务,那么Keepalived有什么独立使用的必要呢? 下图是Nginx + Keepalived的工作结构和LVS + Keepalived 的工作结构: Nginx + Keepalived的工作方式 LVS + Keepalived + Nginx的工作方式 相关技术还有: Heartbeat是Linux-HA计划中的一个重要项目,它的功能比Keepalived更强大,安装和管理也相对复杂。网络上有很多资料介绍Heartbeat和Keepalived的优缺点和使用对比。但就我自己的使用经验来说,个人更喜欢使用Keepalived,原因很简单:Keepalived安装和配置更简单,而且够用。另外Redhat Rhcs套件也可以搭建类似的HA集群,但是说实话本人没有尝试过。 3-5、DNS轮询和智能DNS //TODO DNS技术还没有介绍 3-6、硬件负载 在这个系列的“负载均衡层设计方案”博文中,我们所提到的诸如Nginx、LVS等技术,没有详细讲述的Haproxy、Squid等技术,都是基于软件的负载技术。F5是一家公司,它的BIG-IP LTM技术是基于硬件负载的。硬件负载方案提供了软件负载技术无法提供了性能空间,并且集成了NAT映射功能、SSL加速、Cookie加密、高速缓存、攻击过滤、包过滤、动态Session保持等等很多软件负载无法提供的功能(或者需要多个软件组合使用才能提供的功能)。 但是硬件负载方案也有其缺点,主要就是建设费用比较高昂,它不像软负载可以根据系统的吞吐量的持续增加进行持续扩展。当然您可以根据系统的吞吐量需求,在前期采用软负载,后期采用硬件负载的方案。除了F5公司提供的硬件负载技术,还有Citrix公司的硬负载方案、A10公司的硬件负载方案。 4、常见负载均衡技术组合 这里我们在重新回顾一下这个系列博文中,提到的目前常用的负载均衡技术的组合方式。 4-1、独立的Nginx/Haproxy 一般的WEB系统,前段假设一个Nginx或者Haproxy服务器,基本上可以解决包括负载分发在内的很多问题了。 4-2、Nginx + Keepalived 或 Haproxy + Keepalived 或 + Heartbeat 为了保证Nginx或者HaProxy服务器的稳定性,可以使用Keepalived或者Heartbeat做一个简单的热备方案。 4-3、LVS + (Keepalived | Heartbeat) + (Nginx | Haproxy) 随着访问压力的增大,我们开始采用多层负载方案,在Nginx或者Haproxy的前段架设LVS服务,并通过Keepalived或者Heartbeat保证Keepalived的持续工作。 4-4、加如DNS轮询技术或者智能DNS路由技术 5、负载均衡技术的其他运用 在这个系列的文章中,我们全在将用于客户端使用HTTP协议请求服务器端进行处理的情况,这里的客户端可以使最终用户,也可以是某个一第三方系统。但实际上负载均衡技术在信息处理领域内,不是只有这样的请求响应层才使用,在其它的技术领域也大量使用,这个小节,我们就来梳理这些技术,作为一个扩展话题。 5-1、关系型数据库系统的负载均衡 (编辑:ASP站长网) |