集群存储高可用方法

转载地址:http://blog.csdn.net/liuaigui/article/details/8882141前端

云存储和大数据背景下,数据呈现爆炸式增加趋势。根据研究显示,2020年数字宇宙将达到35.2 ZB,比2009年的0.8 ZB猛增44倍,这其中80%以上为非结构化数据。高性能计算、医学影像、石油和自然气勘探、数字媒体和社会化WEB等大量数据密集型应用致使数据的井喷,不断对存储方法提出新的严峻挑战。集群存储是一种横向扩展(Scale-out)存储架构,具备容量和性能线性扩展的优点,已经获得市场的普遍承认。除了高性能、高扩展特色外,集群存储还应该具有高可用的特征,这对于企业核心业务系统尤其关键,保证关键业务的连续性。数据库


集群存储高可用性

高可用性(HA,High Availablity)是指经过尽可能缩短系统停机时间(因平常的维护操做或突发的系统崩溃等),以提升系统和应用的可用性。企业中的关键应用,如邮件服务、文件服务、数据库服务等,一般会要求7*24小时不间断连续提供服务而且不能表现出故障切换,这就要求承载服务的存储系统可以自动判断故障,并提供故障恢复的能力。集群(Cluster)是由多个节点构成的一种松散耦合的节点集合,协同起来对外提供服务。集群主要分为高性能集群HPC(High Performance Cluster)、高可用集群HAC(HighAvailablity Cluster)和负载均衡集群LBC(Load Balancing Cluster)。集群存储系统是指协同多个节点提供高性能、高可用或负载均衡的存储服务系统,消除单点故障和性能瓶问题,而且具备Scale-Out横向高扩展能力,实现容量和性能线性扩展。集群存储现有技术方案主要经过被冗余技术解决可用性问题,包括副本技术、纠删码技术、主备或全活HA技术。后端


副本技术经过增长不一样数量的副本,能够有效提升数据可用性,可是存储利用率低(为副本数量分之一),并增长了数据管理的复杂度。纠删码经过冗余编码提升存储可用性,而且具有较低的空间复杂度和数据冗余度,存储利用率高,但编码方式复杂,须要大量计算并下降业务性能,且适用集群节点数量较多的情形。主备(Active/Standby)HA技术一样采用冗余技术获取高可用性,但存储资源浪费严重。全活(Active/Active)HA技术经过监控并将故障节点资源(IP、服务进程、业务数据等)切换至正常节点上,使整个系统连续不间断对外提供服务。这种HA技术不只可以提升可用性,并且具有负载均衡功能,资源利用率高。HA技术的主要问题是资源切换期间会致使服务中断,一般只接管IP和服务进程资源,而业务数据或物理存储资源须要由外部系统进行管理。服务器


副本技术

副本(Replication)就是对原始数据的彻底拷贝。经过为系统中的文件增长各类不一样形式的副本,保存冗余的文件数据,能够十分有效地提升文件的可用性,避免在地理上普遍分布的系统节点由网络断开或机器故障等动态不可测因素而引发的数据丢失或不可获取。通常而言,副本数量越多,文件的可靠性就越高,可是若是为全部文件都保存较多的副本数量,将消耗大量的系统存储资源,并增长文件管理的复杂度。副本还能够起到提升系统性能的做用。经过合理的选择存储节点放置副本,并与适当的路由协议配合,能够实现数据的就近访问,减小访问延迟,提升系统性能。另外,经过增长副本数量,将集中地文件访问合理地分布到不一样的节点和网络路径,利用其余节点和网络路径平衡节点和网络的负载,能够有效地解决热点问题。对于数据量较大的文件,还能够经过对多个副本的并行读取,进一步分散和平衡节点负载,提升文件读取的效率,提升系统的I/O性能。典型的副本案例包括RAID一、GFS/HDFS副本(默认三个)和Glusterfs复制卷(如图1所示)。网络

 

图1:分布式文件系统Glusterfs复制卷 来源:Glusterfs文档架构


纠删码技术

纠删码(Erasure Code)做为一种前向错误纠正技术主要应用在网络传输中避免包的丢失,存储系统利用它来提升存储可靠性。将要存储在系统中的文件分割成k块,而后对其编码获得的n个文件分片并进行分布存储,则只需存在k’个可用的文件分片,就能够重构出原始文件,如图2所示。纠删码的空间复杂度和数据冗余度较低,若文件分为k块,编码获得后获得的n个分块,须要存放在n个系统节点上,消耗n/k倍的存储资源。纠删码能提供很高的容错性和很低的空间复杂度,但编码方式较复杂,须要大量计算。目前,纠删码技术在分布式存储系统中获得研究的主要有三类,即阵列纠删码、RS(Reed-Solomon)类纠删码和LDPC(LowDensity Parity Check Code)纠删码。一些量化比较的工做研究代表,当数据存放的节点可靠性要求比较高时,如集群存储系统中,采用纠删码能够提供比副本机制更高的可靠性,而且所需的存储空间开销更小。传统的纠删码如RS码的计算量至关大,其解码即从任意n个数据块或编码块中重构原始数据的计算量随着n和m的增长成指数上升关系,严重影响存储性能。低密度校验LDPC码也能够提供很好的保障可靠性的冗余机制。与RS编码相比,LDPC编码效率要略低,但编码和解码性能要优于RS码以及其余的纠删码,主要得益于编解码采用的相对较少而且简单的异或操做。当前实际应用中,大部分集群存储系统主要使用副本技术来保证可用性,采用纠删码技术来提升可用性的系统包括HDFS-RAID、AZURE、QFS、ISILON等。负载均衡


图2:纠删码技术原理 来源:IDF2012分布式


HA技术

高可用(HA,High Availability)集群经过一组计算机系统提供透明的冗余处理能力,从而实现不间断应用的目标。高可用集群是共同为客户机提供网络资源的一组计算机系统,其中每一台提供服务的计算机称为节点(Node)。当一个节点不可用或者不能处理客户的请求时,该请求会及时转到另外的可用节点来处理,而这一过程对于客户端是透明的,客户没必要关心要使用资源的具体位置,集群系统会自动完成。HA集群是为了提升系统的可用性,以便在单个节点出现故障的时候,持续知足用户的需求的集群系统。性能


HA集群系统构成主要包括主服务器(Master节点)、从服务器(Slave节点)、共享数据系统(SAN存储或数据同步系统)和心跳网络,HA集群的容错备援过程主要包括故障侦测、自动切换和自动恢复,其工做方式主要分为主备方式、全活方式和N+M方式。主备(Active/Standby)方式HA集群提供了最大的可用性,以及对性能的最小影响。该模型须要一个节点在正常工做时处于备用状态,主节点处理客户机的请求,而备用节点处于空闲状态。当主节点出现故障时,备用节点会接管主节点的工做,继续为客户机提供服务,而且不会有任何性能上的影响。全活(Active/Active)HA集群是最经常使用的集群模型,它提供了高可用性,而且在只有一个节点在线时提供能够接受的性能。该模型容许最大程度利用硬件资源,每一个节点都经过网络对客户机提供资源,每一个节点的容量被定义好,使得性能达到最优,而且每一个节点均可以在故障转移时临时接管另外一个节点的工做。全部的服务在故障转移后仍保持可用,可是性能一般都会降低。N+M模式HA集群系统由多个主节点、若干个从节点以及一些辅助设备(存储阵列、交换机)等组成,如图3所示。在实际应用中,一些用户并不知足上述两种模式,认为“冗余设备”太多,须要多个主节点(N个)能够灾备到任意多个(M个)节点上。根据应用的级别,调整从节点的数量,能够为一个,也能够为多个。主节点的数量能够为一个或者多个,根据应用须要随时调整搭配,但主节点为多个并非同一个应用的“并行处理”,而是不一样的应用。大数据


图3:N+M HA集群工做模式 来源:浪潮BCP


SAN架构集群存储HA方法

基于SAN架构的集群存储系统,后端存储采用中高端磁盘阵列子系统,支持RAID0、一、五、六、10等不一样级别RAID等级,并经过光纤FC接口链接到各个集群节点。SAN磁盘阵列经过不一样RAID等级对数据进行保护,经过冗余机制提供高可用性,同时下降了必定程度的存储利用率。在这种架构下,若是再采用副本或者纠删码来提供集群服务高可性,就会进一步下降存储利用率或者大幅下降集群系统性能。当集群节点服务器发生故障时,后端SAN存储一般仍然处于正常工做状态,存储在其上面的数据也是完整一致的。所以,彻底能够从正常工做的其余集群节点中选择一个节点来接管故障节点的资源和服务,继续对外提供数据服务,保证业务的连续性。面向基于SAN架构的集群存储系统,能够采用全活HA架构技术,不只接管故障节点的IP和服务进程资源,并且接管故障节点的存储软件服务进程和物理存储资源,支持NFS/CIFS/HTTP/FTP/ISCSI等协议协议。利用TCP/IP协议的链接重连技术,还能够实现相似CTDB对故障节点的透明接管,不会产生接管期间的业务中断。这些方法保证集群存储系统的存储利用率以及系统性能不会受到影响,而且能够透明接管完整的系统资源,提供更高的系统可用性。基本设计原则以下:

(1) 当某个节点因为停机,或者系统出现异常,不能再向上层的应用提供数据存储服务时,则须要由备份节点接管链接到该节点上的SAN存储设备,并启动相应的服务,以保证前端应用仍然能够正常地进行数据存储操做。

(2) 为平衡系统中各节点的负载,避免备份节点的负载太重,当出现故障的节点修复后,须要将被接管的SAN存储从新恢复。

(3) 在上述的接管与恢复过程当中,须要保证对前端的数据存储没有明显影响,CIFS、NFS等服务不中断,作到透明接管和恢复。

(4) 备份节点的选择,采用Round-Robin轮询法,在当前正常工做的节点中选择其中之一做为备份节点。


SAN架构的集群存储系统,数据可用性主要由后端的中高端磁盘阵列进行保障,集群可用性重点是集群节点上的资源,包括IP、服务进程、存储管理进程以及SAN物理存储资源。副本技术和纠删码技术固然也能够实现集群的高可用性,但会进一步下降存储利用率或者大幅下降集群系统性能。主备(Active/Passive)HA集群和N+M模式HA集群,不只冗余较多形成资源消耗,并且提供的高可用性也受到限制。采用SAN架构全活高性能HA集群方法,提供了最大的高可用性,在集群只有一个节点在线时仍然能够对外提供服务。该模型容许最大程度利用硬件资源,每一个节点都经过网络对客户机提供资源,每一个节点的容量被定义好,使得性能达到最优,而且每一个节点均可以在故障转移时临时接管另外一个节点的工做。该方法实现的高可用性,实现资源利用的最大化,可用性最高,不会下降存储利用率,也不会大幅下降系统性能,仅仅致使故障节点引发的前端访问性能降低。采用这种HA方法的系统包括VCS、RedhatCluster、Rose HA、Oracle RAC等。