如何使用Apache服务器配置负载均衡集群
Internet 的快速增长,特别是电子商务应用的发展,使Web应用成为目前最重要最广泛的应用,Web服务器动态内容越来越流行。目前,网上信息交换量几乎呈指数增长,需要更高性能的Web服务器提供更多用户的Web服务,因此,Web服务器面临着访问量急剧增加的压力,对其处理能力和响应能力等带来更高的要求,如果Web 服务器无法满足大量Web访问服务,将无法为用户提供稳定、良好的网络应用服务。 由于客观存在的服务器物理内存、CPU 处理速度和操作系统等方面的影响因素,当大量突发的数据到达时,Web服务器无法完全及时处理所有的请求,造成应答滞后、请求丢失等,严重的导致一些数据包因延时而重发,使传输线路和服务器的负担再次增加。传统的方法是提高Web 服务器的CPU 处理速度和增加内存容量等硬件办法但无论如何增加Web 服务器硬件性能,均无法满足日益增加的对用户的访问服务能力。 面对日渐增加的Web 访问服务要求,必须对Web 服务器按一定策略进行负载分配。利用负载均衡的技术,按照一定策略将Web 访问服务分配到几台服务器上,负载处理对用户透明,整体上对外如同一台Web 服务器为用户提供Web服务。 2 Web负载均衡结构 2.1 负载均衡 负载是一个抽象的概念,是表示系统繁忙程度,系统在一段时间空闲,该系统负载轻,系统在一段时间空忙,该系统负载重,影响系统负载的各种因数较多如果存在很多的数据包同时通过网络连向一台Web服务器,也就是网络的速度比网络所连接的设备速度快的情况下,系统负载不断增加,直到最大。 目前提高Web 服务器性能,使其具有较强负载能力,主要有两种处理思想: 1)单机思想 不断升级服务器硬件性能,每当负载增加,服务器随之升级。这随之将带来一些问题,首先,服务器向高档升级,花费资金较多;其次,升级频繁,机器切换造成服务中断,可能会导致整个服务中断;最后,每种架构的服务器升级总有一个极限限制。 2)多机思想 使用多台服务器提供服务,通过一定机制使它们共同分担系统负载,对单一的服务器没有太高的性能要求,系统负载增加,可以多增加服务器来分担。对用户而言,整个系统仿佛是一台单一的逻辑服务器,这样的系统能够提供较强的可扩展性和较好的吞吐性能。 为了适应当前急剧增长的Web访问,有别于传统的单机思想,解决单机思想带来的一系列问题,本文提出了一种基于权值的策略分配负载。 2.2 负载均衡实现设备 目前实现负载均衡需要两类的设备:服务器和分配器。 1)服务器(Server) 为用户提供真正的服务,也就是指给用户提供负载均衡服务的计算机设备,有关该设备的一些性能数据是负载均衡的主要依据之一。 2)分配器(Dispatcher) 由用户浏览器、Web 服务器组成两层结构Web 系统,如所示,实际是基于客户端的负载均衡。 负责给用户服务分配服务器,分配器的主要功能是根据客户和服务器的各种情况(这些情况要能反映服务器的负载状况或性能状况)通过一定的算法进行调动和分配工作,从而提高由服务器整体构成的网站的稳定性、响应能力。它主要是集中所有的HTTP 请求,然后分配到多台Web服务器上处理,来提高系统的处理效率。 2.3 负载均衡系统结构 2.3.1 两层结构的负载均衡系统 在服务器上运行一个特定的程序,该程序相当一个客户端,它定期的收集服务器相关性能参数,如CPU、I/O、内存等动态信息,根据某种策略,确定提供最佳服务的服务器,将应用请求转发给它。如果采集负载信息程序发现服务器失败,则找其它服务器作为服务选择。这是一种动态负载均衡技术,但是每台服务器上必须安装特定的客户端程序,同时,为保证应用程序的透明性,需要对每个应用进行修改,能够将访问请求通过该客户端程序转发到其它服务器上,重定向方式进行,修改每一个应用程序,工作量十分大。 2.3.2 三层结构的负载均衡系统 由用户浏览器、负载均衡和Web服务器组成三层结构Web系统,如所示。实际是基于服务器的负载均衡。如果将基于客户端的负载均衡中客户端的负载均衡部分移植到一个中间平台,形成一个应用服务器,构成请求、负载均衡和服务器的三层结构,客户端应用不需要做特殊修改,透明的中间层将请求均衡的分布到不同的服务器。 据服务器直接连到Internet 与否有两种多Web 服务器结构:隔离式(Separation) 和非隔离式(Unseparation)。隔离式是服务器不直接连到Internet,如所示,非隔离式是服务器直接连到Internet,如所示。 隔离式中只有负载均衡器对外有一个IP 地址,所有的请求由负载均衡器分配到不同的Web Server,所有Web Server 的返回结果也经过负载均衡器传回给用户。非隔离式中每一台Web Server 都有一个IP地址,用户请求经过负载均衡器分配到Web Server,而请求的应答不经过负载均衡器,直接传回用户。为了减轻均衡器的负载,本文中采用了三层结构中的隔离方式。 2.4 负载均衡实现的方法 Web 负载均衡常见算法有:循环调度算法(Round-Robin Scheduling)、加权循环调度算法(Weighted Round-Robin Scheduling) 、最小连接调度算法(Least-Connection Scheduling)、目标地址散列调度算法(Destination Hashing Scheduling)、源地址散列调度算法(Source Hashing Scheduling)。 本文采用基于权值的调度算法,也就是说权值大的服务器优先得到调度,本文在实现时是基于静态的权值,就是在开始的时候给每一个服务器配置一个默认的权值。当然也可以根据实际运行情况再对每一个服务器的权值进行调整。但是这需要实时的搜集每一个服务器的信息,如服务器的内存实用情况,响应速度等一些信息。
什么是Linux集群
集群通信系统是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。简单地说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群,用户是不会意识到集群系统底层的节点的。在他们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。集群已不是一个全新的概念,早在七十年代计算机厂商和研究机构就对集群系统进行了研究和开发。这些系统不为大家熟知,是因为它主要用于科学工程计算。直到Linux集群的出现,集群的概念才得以广泛传播。集群系统主要分为高可用(High Availability)集群,简称HA集群,和高性能计算(High Perfermance Computing)集群,简称HPC集群。在Linux出现前,集群系统采用的操作系统主要有VMS、UNIX和WindowsNT。到九十年代末期,linux操作系统不断走向成熟,它的健壮性不断增强,并且提供了GNU软件和标准化的PVM、MPI消息传递机制,最重要的是Linux在普通PC机上提供了对高性能网络的支持,这样就大大推动了基于Linux的集群系统的普及和发展。
“负载均衡集群”和“高可用集群”怎么区分
负载均衡和高可用性的侧重点不同。负载均衡不一定意味着高可用性。假设我们在机房里建起了一个访问量很高的网站,然后我们用一个负载均衡器,三台完全相同的Tomcat服务器,实现了负载均衡,所有流量都会被按某种算法分配给三台服务器。那么,这个系统是高可用的吗?并不一定。如果只考虑Tomcat服务器的话,我们使用了三台服务器,比只用一台服务器的确既增加了负载平衡又增加了可用性。但是,从整个系统的角度来看,增加服务器的数量,只能算提高系统可用性的一个方面。高可用性意味着高MTBF(平均故障间隔)和低故障恢复时间,也就是系统连续长时间运行,且能从当机状态快速恢复运行的能力。很明显,上述系统没达到这两个条件。首先,它有多个单点故障点: 一个负载均衡器,一套网络设备、供电设备,等(软件方面)。这注定使系统MTBF受到极大制约。提高MTBF的方法很直观:备份。为了消除第二个单点故障,备份组件还需要处于不同地理位置。这样的话,就算一个位置断网、停电,其他位置的系统都能继续运行。如果再考虑到地震、洪水等自然灾害和其他因素,备份组件甚至需要处于不同城市、不同国家。其次,虽然有了备份,系统还是有当机的可能性,所以我们还需要考虑系统当机之后快速恢复系统功能,也就是缩短故障恢复时间。这需要缩短故障反应时间并合理保存系统状态等,不再详述。所以,负载均衡只能提高部分系统可用性(以服务器热备的形式),为了提高系统的可用性,我们还需要综合考虑其他因素。