顾昕波
摘要:随着日益兴起的新媒体、全媒体在广电领域展开,业务的连续性与安全成为越来越值得重视的一个话题。文章将对如何降低业务中断的几率,及时发现隐患所在,和灾备的一些常见核心技术展开讨论。
关键词:高可用性 失效切换 与切回 内存回写 链路绑定 复制 脑裂 元数据
对于广电行业的播出与制作,最重要的是音视频数据的安全可用与数据库的安全可用。通常的做法是将音视频数据放置在存储上,数据库置于群集中。采用冗余的设备与切换机制,当服务器存储出现故障时应用不中断,或减少中断时间。理论上,这种标准的容灾操作是安全有效的。
磁盘阵列
对于存储,磁盘阵列选型时采用全冗余的结构,即硬盘做raid,控制器、电源等都是双份互备。在未上线前通常会尝试拔一两块硬盘,观察存储是否能正常重建;拔插控制器,测试其切换时间;关闭其中一个电源看整个设备是否会断电。另外,如果存储通过光纤与网线提供连接,还需要测试多路径是否有效,iqn与wwn能否自动重连,ip可否正常漂移。整体的failover与failback必须有效。
一、写缓存。正式上线后,随着时间的推移,问题逐渐暴露出来。比如写缓存(writeback cache)损坏,厂商给出结论是不会中断应用,但会降低读写速度,倘若业务本身对读写速度要求不高(如音频制作),则相安无事。然而用户所不知道的是,当写缓存(writeback cache)在损坏的一瞬间会丢失存在cache中的数据,假如此时阵列正好在做重建(rebuild)操作,那么在未来再次出现硬盘故障时,很有可能会卡在某个百分比进度上,再也无法完成重建。
当使用writeback时,系统认为数据写入内存即完成了写操作;而使用write through时,数据通过内存同步到硬盘后,系统才认为完成了写操作。这也是导致两者性能差异的主要原因。
二、链路切换。当系统原有的规则发生调整时,也会发生相似的情况。尤其是业务原因导致系统调整后无法测试,以及不能人为模拟出故障环境的情况下,诸如多根网线做聚合(bonding),当其中某根网线中断后又恢复,则发生ip漂移后又复原,发现跨网段不能访问,但同网段可以访问。此时可以判断发包与收包走的不是同一条路由,交换机的路由表里还遗留着先前网络failover时的路由信息。这是非常危险的状况,所以对存储或网络设备的任何操作要安排合适的停机时段。即使有十成的把握,也不可大意。
存储厂商尽管宣称产品具有诸多可靠的功能,包括支持各种RAID类型,双控允许双active负载及任意切换,网络能够做聚合,形成性能与安全上的双重优势,但仍不乏隐患。实测时往往不可见,而绝大多数在满足多个条件后才会触发。
三、镜像与复制。对于DAS,常规容灾手段是用两个及多个存储柜做互备,形式上分同步镜像与异步复制两种模式,机制上则分为文件级与块级。对于误删除的文件,只在异步情况下才有可能被找回。但广电行业追求备份的时效性,很少会使用异步,毕竟考虑到数据库与对应的音频文件必须分秒不差。假如原存储宕机启用备份存储,出现小时级别的数据差量,是不能容忍的。对于损坏的原始文件(可能文件头错误无法读取),块级别的同步会将错误信息一起复制到备份存储中。而文件级的同步则会跳过该文件。这也是两种机制的细微差别。
分布式文件系统
一、元数据管理。当存储的规模达到一定量,对性能有所要求时,DAS就无法满足了。对于视频业务的一种解决方案是使用SAN配合分布式文件系统,比如stornext,lustre等。此时元数据服务器便成为重点保护对象,所有文件的位置索引存放于元数据中。常规上会设置两台元数据服务器,它们处于active-passive模式,采用心跳的方式互相监测。而所有的节点服务器均连接同一套存储阵列,可以是ip或者FC的形式。每一个节点服务器各出一个用户ip,它们用一个虚拟ip来轮询。这样用户工作站只要连接虚拟ip便可以访问文件系统了。另一个传统的做法是在用户工作站上安装厂商提供的客户端,由客户端发起轮询,在某个节点发生故障时可以及时切换访问路径。SAN环境最怕文件系统出现故障,比如元数据突然不可用,元数据服务器切换失败产生脑裂(split brain)等。一些产品声称这方面有应急手段,像stornext这样的文件系统在节点服务器产生故障时,元数据服务器也会同时承担节点服务器的功能。而另一种方式就是取消元数据服务器由节点兼任,将长途电话交换原理引入。每个节点即为一个城市,所有的城市包含完整的元数据结构,比如区号管理,没有特定的统管城市(即metadata server)。
没有元数据服务器(MDS)的存储架构会更加安全一些。它们可以设定坏1到2个节点或者个别磁盘阵列整体宕机后仍能正常对外展开业务。更有甚者,比如美国在线(AOL),阵列是不做raid的,而将每块盘单独拿来作为一个LUN使用,文件系统通过一定的机制来识别,将每个硬盘的数据同步到相邻阵列柜中,这样无论是单个硬盘故障或者整个阵列柜宕机,都不会影响业务。单个硬盘不做raid的好处是,总体IOPS可以比处于相同状况下做raid5或6的性能提高几十倍。所有硬盘各自为政,不必考虑写入队列与条带化(stripe),亦不用等待相邻的硬盘与同步延时。这种模式可应付大量的小文件并发业务,比如动画渲染,海量邮件交换,皮克斯(pixer)与雅虎(yahoo)便是一个典型的例子。
二、横向扩展。分布式文件系统是可以横向扩展的,即当容量与性能需求增长时,可以扩充节点服务器与存储柜。而且,许多厂商都宣称在这方面可以无缝扩容,不必安排停机时间,这样保证了业务的连续性。这个特性还表现在一些主流的NAS上,諸如netapp与isilon。然而看似节省了服务器资源,但实质上NAS仍是自带文件服务器的(Filer),俗称“机头”。其内部仍是SAN或者DAS结构,用户不可见罢了。因此,它的容灾功能也近似于SAN或者DAS,灾备手段也无非是镜像(mirror)、复制(replication)、HA切换以及网络或光纤链路聚合等。比如isilon的内部机制可以允许一个阵列柜宕机,而netapp的metrocluster也有类似的效果。它们的容灾功能差异不大,做对比测评选型时无非就是看哪家产品的bug少且应用广泛,价格便宜。
VMWARE虚拟机
近几年,虚拟机兴起已普遍运用于广电领域。VMware作为这方面的领头羊,有着与大多数存储相似的容灾和高可用性特征。网络方面有多路径(multipath)冗余;服务器方面有cluster群集,内又划分资源池,可以灵活地做资源规划;在存储方面支持cifs和samba,也能通过iqn或wwn的形式直连存储。在资源调配方面,将cluster与资源池和vmotion三者结合,动态分配CPU与内存资源,避开了CPU冲100%或out of memory等导致死机的情况。这里要提一下vmotion,在规划guest os时,可以设置CPU与内存的上下阈值,假如此guest os的应用由于某些原因达到阈值上限,它会自动迁移到资源相对空闲的宿主服務器上,且是无缝的,最终用户完全无法察觉。它的原理在于只迁移操作系统在内存中的驻存,不移动硬盘数据,所以才会如此迅速有效,因此虚拟机的引入增强了运维人员的效率。以往物理工作站出现故障需要重装,现在只需要运用虚拟机的克隆功能便可以迅速复制出一批现成的客户机。而快照功能又能应付客户机上的误操作和误删除,这极大地节约了时间,对于运维工作是革命性的进步。
微软ALWAYS ON
关于高可用性的几种方式与机制,近几年并没有显著的进步,但是效率上却有大大的改善。十年前微软群集(MSCS)的切换往往需要30秒的业务停顿,而存储控制器的failover与failback也大多会造成挂载卷不可用,windows上出现写入缓存失败。然而现在的产品大多已经没有这种现象了,微软always on群集的切换几乎是无缝的,结合sql2012的群集功能,非常适合播出系统。主流存储器如EMC和NETAPP等品牌,其高端产品允许坏多个硬盘甚至一个存储柜宕机业务不会受影响。网络方面的切换,几乎最多只丢失一个包,终端用户完全不会察觉。
结语
最后,我们可以把上述提及的几个重要术语与核心功能进行简短归纳,大致如下:镜像(mirror)用于保证原始数据与备份数据的一致。HA主要在于故障切换时保持业务的连续性。链路聚合在于其中一条发生中断时自动跳转到另一条。IP漂移是在当前网络流所在的网线发生中断时通过轮询的方式将ip自动转移到另一个具有相同业务提供能力的网口上。Active-passive,顾名思义,active的控制器提供业务,passive的处于待机准备随时切换的状态下。另一种模式active-active,两个控制器同时提供业务,我们又可以称之为均衡负载(load balance)。而raiddp、metrocluster、vmotion、always on则是isilon、netapp、vmware、microsoft厂商各自特有的容灾技术手段。
(作者单位:上海广播电视台)
参考文献:1.陈少春:《计算机存储技术与应用》,北京,电子科技大学出版社,2017年版。
2.张 冬:《大话存储》,北京,清华大学出版社,2008年版。