服务器集群是由一些互相连接在一起的计算机构成一个并行或分布式系统。这些计算机(服务器)一起工作并运行一系列共同的应用程序,同时,为用户和应用程序提供单一的系统映射。从外部来,它们仅仅是一个系统,对外提供统一的服务。集群内的计算机物理上通过电缆连接,程序上则通过集群软件连接。通过集群,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益。简单地说,服务器集群是相互连接的两个或多个服务器,通过一个应用程序公共接口,以一台服务器的形式出现,实际上就是一个虚拟服务器系统。
服务器集群结构中,又分为“不对称集群”和“对称集群”两大类。“不对称集群”结构中有一些服务器专门用于当工作服务器出现故障时接替它们的工作。在“对称集群”结构中,每个服务器都承担有工作,每台服务器都相互平等,没有专门用于备用的服务器。如果一个服务器出现故障,其余服务器则会继续处理其自身所分配的应用程序组,同时处理发生故障的服务器上的应用程序,具体由哪台或哪几台服务器接管,要看集群服务配置了。
图一 不对称服务器集群结构
图二 对称服务器集群结构
集群技术和双机热备份技术的本质区别体现在能否实现并行处理和节点失效后的任务平滑接管。双机或多机备份技术的原理是一台服务器作主机,其他服务器作备份机(也可以同时工作),当主机失效时,备份机接管。集群系统使用的它的高可用性而不是容错。
服务器集群技术的优势:①扩展能力强;②实现方面容易;③高可用性;④易管理性
对集群技术需求最迫切,发展也最快的领域主要有Web应用、VOD应用,科学计算、数据库应用等领域。集群服务不保证不停顿的操作,但它为大多数执行关键任务的应用程序提供了足够的可靠性。
一、服务器集群:故障迁移解决方案
集群服务器设计的目的就是提高服务器性能,同时在出现故障时能及时进行故障迁移(将应用程序或服务安装在发生故障时彼此能接管对方工作的多台服务器上,一台服务器接管发生故障服务器工作的过程就称为“故障转移”),提高服务器的可用性。所以在集服务器设计之初,必须充分考虑故障迁移方案。
故障迁移的原理
①检测故障
要让备用服务器变成活动服务器,必须设法确定活动服务器是否不再正常工作。系统使用下列某个常规类型的心跳机制来做到这一点。◎发送信号。活动服务器以定义好的时间间隔将指定信号发送到备用服务器。如果备用服务器在某个时间间隔内未收到信号,则确定活动服务器发生故障并担任活动角色。◎接收信号。备用服务器向活动服务器发送请求。如果活动服务器没有响应,则备用服务器按特定次数重复发送此请求。如果活动服务器仍然没有响应,则备份服务器接管活动服务器的工作。以上发送和接收信号是通过专用通信通道发送的,以使网络拥塞和一般网络问题不会导致假的故障转移,这个专用通信通道通常被称为“心跳线”。
②同步状态
的集群服务器系统中,在正式接管活动服务器的工件前,首先要将备用服务器的状态与发生故障的服务器的状态进行同步,然后才能开始处理事务。主要有三种不同的同步方法。◎事务日志。在事务日志方法中,活动服务器将对其状态的所有更改记录到日志中。同步实用工具定期处理此日志,以更新备用服务器的状态,使其与活动服务器的一致。当活动服务器发生故障时,备用服务器必须使用此同步实用工具处理自上次更新以来事务日志中的任何添加内容。◎热备用。在热备用法中,将把活动服务器内部状态的更新立即复制到备用服务器。因为备用服务器的状态是活动服务器状态的克隆,所以备份服务器可以立即成为活动服务器,并开始处理事务。◎共享存储。在共享存储方法中,两台服务器都在共享存储设备(如存储区域网络或磁盘阵列)上记录其状态。这样,因为不需要进行状态共,故障转移可以立即发生。这种同步方式所需的切换时间也较短,可用性也较高。
③确定活动服务器
对于指定的一组应用程序,只存在一台活动服务器,这是极其重要的。
④扩展故障迁移集群服务器
故障迁移解决方案示例
在下图中,网络中只有一台服务器为网络客户端提供服务,当这台服务器出现故障时,就无法向用户提供服务:
图三 有故障单点的服务器
为了提高上图网络中服务器的高可用性,可以采用服务器集群故障转移技术,如下图:
图四 具有故障转移的服务器集群方案
在上图方案中,第一台数据库服务器是处理所有事务的活动服务器。仅当第一台数据库服务器发生故障时,处于空闲状态的第二台数据库服务器才会处理事务。集群将一个虚拟IP地址和主机名在客户端和应用程序所使用的网络上公开。
二、服务器集群:负载均衡解决方案
将服务或应用程序安装到多台服务器上,并将这些服务器配置为共享工作负荷,这种类型的配置就是Load-Balanced Cluster(负载均衡集群)。负载均衡技术通过将客户端请求分散到多始服务器上,从而提高了基于服务器的程序的性能。
负载均衡器使用不同的算法控制通信流量,这些算法用于以智能方式分散负载,或最大限度地利用集群内的所有服务器。其中一些典型的算法如下:◎循环法。循环算法将负载均衡地分配每台服务器,而不考虑当前的连接数或响应时间。循环法适合于集群中的服务器具有相同处理能力的情况。◎加权循环法。加权循环算法适合于每台服务器具有同处理能力的情况。管理员将性能权值手动分配给每台服务器,而且按照服务器权值自动生成调度序列。◎最少连接。最少连接算法确定集群中哪台服务器当前正在处理连接数最,从而将请求发送给服务器。◎基于负载。基于负载算法先判断集群中哪台服务器当前的负载最低,然后将请求发送给该服务器。
负载均衡解决方案示例
负载均衡的两种主要类别如下:◎基于软件的负载均衡。基于软件的负载均衡是在负载均衡集中安装特殊的均衡管理软件。均衡管理软件根据不同的算法发送或接收客户端向服务器发出的请求。◎基于硬件的负载均衡。
图五 负载均衡集群方案