边缘计算体验之二:简单高可用 ZStack Mini的巧妙设计

边缘计算体验之二:简单高可用 ZStack Mini的巧妙设计,第1张

边缘计算体验之二:简单高可用ZStackMini的巧妙设计

无论是汉语中的“强壮”还是英语中的“强壮”,通常用于描述一个人或动物的体格,并暗示更高的生存能力,或在受伤和失去某些生理功能后更快恢复正常的能力。

由于这个词的潜在含义,它也被借用来描述IT系统或应用程序的特征之一,如应用程序/IT系统的健壮性。在出现bug或硬件故障的情况下,不会完全“瘫痪”,但可以继续工作,更快恢复正常。

IT系统的健壮性可以用“RAS”来解释,即可靠性、可用性和可维护性。简单来说,可靠性就是IT系统的组件质量好,不容易出故障。即使一个或多个组件出现故障,也不会影响应用程序的正常运行(可用性)。并且当某个部件或系统出现故障时,可以立即激活替换机制,使故障部件/系统快速恢复正常(可维护性)。

可以看出,可靠性和可维护性设计在一定程度上受制于可用性设计,其目的是提高可用性,满足业务持续运行的要求(尽可能不中断)。

IT系统可用性通常用几个“9”来衡量,如五个9和六个9,这是指系统可用时间的百分比,对应于以年为单位的(允许的)停机时间的计算。

举两个例子:一个9是90%可用,全年允许停机时间不超过36.5天;五个九意味着99.999%的可用性,每年的停机时间不能超过五分半钟。

注:根据E企业研究院编制的可用性与(允许)停机时间对照表,可用性每增加9,单位时间允许停机时间下降到十分之一:如4个9(99.99%)的年允许停机时间接近53分钟,5个9的年允许停机时间下降到5.5分钟以内。

我们知道,由于上电自检等耗时的过程,服务器一年重启一次可能需要5分钟以上,这意味着即使服务器一年宕机一次,也无法保证5个9的可用性。但是硬件的单点故障(SPOF)是无法完全避免的,有时软件系统的故障最终会通过服务器重启来解决,所以“2N”系统成为了保证高可用性的普遍思路。例如,两组相同的系统运行相同的应用程序并访问相同的数据。通常一主一备是主动-被动的。主系统出现故障后,备用系统将接管工作。因为后者是一直运行的,不需要经历一个耗时的软硬件启动。理论上,服务中断的时间只取决于主备之间的切换速度。不说五个9,就是六个9或者七个9都可以实现。

理论很简单,但是实现起来很复杂,包括如何保证两个系统的数据和(应用)状态尽可能一致,以便快速切换。

在计算与存储分离的传统架构中,至少需要两台服务器连接到一套双控存储系统,两台服务器可以同步应用。具有双控制器的存储系统负责数据的高可用性。后者使用的存储介质通常具有双端口功能(如FC或SAS硬盘),必要时可以切换数据访问的控制权(如其中一个控制器失效)。相应的,网络子系统通常是双冗余的,整个解决方案的组成非常复杂。双口硬盘减少了数据同步的工作量,但往往被归为特殊设备,不符合硬件标准化与“软件定义”相结合的趋势。

超融合基础设施(HCI)通过在工业标准服务器中采用软件定义存储,实现了计算和存储两种角色的统一,提高了扩展的灵活性,降低了部署和运维的复杂性。然而,大多数超融合系统的分布式软件定义存储采用三拷贝机制来避免数据丢失。出于可维护性的考虑,这些超融合系统通常从三个节点或四个节点开始,无形中提高了用户采购的门槛。也就是说,不考虑网络设备,不考虑计算与存储的分离或计算与存储的融合,上述两种小规模部署中常见的高可用架构都有不少于三个设备或节点——比如超融合系统中常用的2U4节点服务器,我们按照四台服务器计算。

从架构上看,ZStackMini具有两种架构的一些特点:一方面是计算和存储的超集成;另一方面,每个节点中的存储子系统基于传统存储系统中常用的RAID技术。

有趣的是,通过这种组合,ZStackMini只需要至少2台服务器,也就是一台2U2节点的服务器——虽然都是2U多节点,但2U2的成本可以比2U4低很多,从而大幅降低用户的接受难度。

那么,在只有(最少)2个节点的情况下,ZStackMini如何保证数据和应用的高可用性呢?其存储空之间的利用率如何?请看下面我们的分析。

极简主义架构有助于提高可靠性

可靠性是可用性的组成部分之一。能够长期稳定运行的可靠组件有助于系统的整体可用性,但“可靠性”受到成本的制约。“高成本高可用性”系统不是没有实际意义,而是门槛太高。

鉴于ZStackMini继承了ZStack云引擎,产品形态(2U2节点)与2U4节点超融合产品有些相似,如2U机箱,双冗余电源,几乎相同的占地面积空,两者都可以2U作为最小部署单元(2U4用于超融合3节点或4节点),但只有2节点的ZStackMini在架构上无疑更简单。

该图显示了ZStackMini,在2U机箱中内置了两个服务器节点;下图是主流的2U4节点超融合一体机。从硬件数量上来说,很明显2U4节点的超收敛要比2U2节点的ZStackMini组件多很多,并且空之间的设计更加紧凑,每个节点都面临着更大的扩展性、散热等挑战。

无论是ZStackMini还是2U4节点超融合一体机产品,内部都有很多种IT硬件,每个甚至每个硬件都有故障率。以ZStackMini广泛使用的西数UltrastarDCHC310(4TB)硬盘为例,其年故障率为0.44%。系统中使用的硬件越多,出现故障的风险就越大。

西方官方网站公布的UltrastarDCHC310系列硬盘上市数据。上图中的年故障率(AFR)是硬盘的年故障率(0.44%);上图中的MTBF代表平均无故障时间,为200万小时。

SATA/SASRAID卡是与硬盘紧密相连的组件。ZStackMini使用的是Broadcom公司推出的带电池备份单元(BBU)的RAID卡,可以在突然关机的情况下将RIAD卡缓存中的数据存储到硬盘中。

ZStackMini内部内置2节点,与CPU散热器相邻。贴有白色标签纸的部件是锂电池,它连接在靠近机箱壁的RAID卡上,在突然断电的情况下为RAID卡供电,有助于降低数据丢失的风险。

从上图中也可以看出,ZStackMini中使用的半宽2U节点有充足的内部空空间。相比2U4中的半宽1U节点,散热条件更好,有利于升级到更高规格的CPU,工作温度也是影响系统可靠性的重要因素。尤其是部署在边缘站点或小微企业的产品,运行环境通常比专业数据中心复杂得多。

每个部件都有故障率,每个部件的故障都会影响系统的可靠性,从而影响可用性。失败并不可怕。重要的是如何保证组件故障后用户的数据不丢失,甚至让应用程序持续运行,继续可用。这是系统或解决方案设计中最重要的目标之一。

除了应用的可用性,还要考虑数据的可用性,避免存储子系统故障造成数据丢失。据ZStack介绍,ZStackMini通过两个副本加两个纠删码的双重保险来保证数据安全。只有至少两个节点的两个硬盘同时损坏,才会有数据丢失的风险。整体数据可用率高达99.99995%,比同昌超融合双副本高4.9倍,比三副本高2.9倍。这是怎么发生的?

Innode:N+1处理磁盘故障

是硬盘ZStackMini的数据存储功能,它的前面板填充了12块3.5寸硬盘,平均分配到2个节点。其中,4个块(每个节点2个)用于安装 *** 作系统,其余8个块(每个节点4个)留给用户存储数据。

目前大部分超融合一体机采用三副本数据保护机制,将相同的数据存储在三个不同的服务器上,使得单个硬盘或节点出现故障后,数据仍然可以正常读写。

ZStackMini采用基于硬件(RAID卡)的RAID技术,其中 *** 作系统磁盘采用RAID1(镜像)保护,每个节点的四个数据磁盘采用RAID5(奇偶校验)保护。

RAID技术和RISC技术诞生在同一个时代,都是同一代人。然而,RISC-V是计算领域最受欢迎的炸鸡,RAID却没有被很多人提及。其中一个很重要的原因就是传统的基于硬件的RAID技术不适合大规模部署环境,使用大容量硬盘时恢复时间也面临很大的挑战。

但是RAID的核心理论和算法并没有过时。例如,为了解决副本技术在大规模部署环境下存储容量利用率低的问题,采用了纠删码技术。其核心算法原理与RAID5/6相同,我们可以把RAID5看成N+1的纠删码。

在小规模的部署环境下,比如ZStackMini,每个节点只有一个位数的硬盘,RAID技术还是能起到很好的作用。RAID卡还可以将CPU从底层存储任务处理中解放出来,并贡献更多的虚拟机。

有了理论基础,接下来我们就通过实际应用运行场景中直接拔下磁盘来验证ZStackMininode是否还能正常工作。以下视频是验证过程:

视频解读:在初始化的ZStackMini中,E企研创建了一个Windows10(试用版) *** 作系统的虚拟机,然后安装了AdobePremiereProCS6(试用版)软件,这是Windows平台下的主流视频编辑软件。

我们把几个视频片段导入Premiere,剪辑成一个视频,用Premiere渲染编辑好的视频。在渲染过程中(大约三分之一渲染进度后),我们直接在这个虚拟机所在的物理节点上拔下了一个用于数据存储的硬盘(4TB)。但是Premiere的渲染任务并没有停止,正常完成。但在ZStackMini的管理后台,监控显示Windows10虚拟机所在的物理节点出现硬盘故障,性能和可用性“降级”。这意味着数据不会丢失,应用程序仍然可以正常运行,但存在一个潜在的风险:如果此时节点中的另一个硬盘出现故障,将会导致数据丢失——当然,正如我们将在下一节中看到的,另一个节点不会允许这种情况发生。

当我们将已拔出的硬盘重新插入硬盘仓时(相当于用新的替换故障磁盘),ZStackMini会识别出健康磁盘已被插入,并开始自动重建。

注意:硬盘拔出后,重新插入,ZStackMini会自动重建数据。在管理后台对应的监控界面,可以看到“正在重建”状态标志,性能监控界面也显示当前有持续的IO读写活动;在数据“重建”完成之前,RAID运行状况将处于“降级”状态。

通过上述模拟场景的测试验证,ZStackMini的任何节点都可以有效抵御单个数据存储磁盘的故障,不会导致数据丢失或应用暂停。应用虚拟机仍然继续当前任务,直到它完成或被手动干预。

节点到节点:2N保证应用程序的高可用性

节点中的RAID技术可以确保任何磁盘故障都不会影响应用程序,但传统的基于硬件的RAID技术(更换硬盘后)需要很长时间来重建数据——根据硬盘的容量,可能需要几个小时——在此期间,如果另一个硬盘损坏,数据将会丢失,应用程序将会中断。此外,CPU、内存、网卡等部件没有冗余,出现故障也可能导致停机...这些都是ZStackMini的另一个节点发挥作用的时候,我们不妨称之为节点级副本。

图为ZStackMini正面,覆盖3.5寸硬盘,支持热插拔。下图是背面。几乎所有组件都位于节点内部,这意味着除了硬盘之外的任何组件都需要停止。

俗话说“养兵千日,用兵千日。”当一个节点无法正常工作时,另一个节点会带着已经同步的数据和状态“挺身而出”。这就是我们通常所说的(节点级)高可用性。为了验证这个特性,我们将应用虚拟机设置为“高可用性”,然后通过突然关闭其节点来验证应用是否可以继续运行。

视频解读:ZStackMini中的Node1处于“重建”状态,因为上次测试中有一块硬盘被拔掉了。在本次测试中,E企研模拟了这个“故障”节点的突然断电,以验证ZStackMini的高可用功能。

节点1上有4台虚拟机,其中渲染服务器、转码服务器和网络管理平台设置为高可用。相比之下,另一个名为CentOS7.2的虚拟机没有使用高可用功能。在转码服务器中,E企研究院导出上次测试渲染的视频,使用XCoder软件进行转码。

在转码过程中(当转码进度已经完成三分之一左右时),直接关闭节点1的电源,不做任何 *** 作,模拟突然断电。节点1断电后,ZStackMini提示节点1失去联系,并报告“网管平台”失去联系。然后,ZStackMini启动了“高可用性”流程,并在打开“高可用性”的情况下开始迁移应用虚拟机。大约1分钟后,最初位于节点1上并打开了“高可用性”的虚拟机在节点2上重新启动。

“转码服务器”重启后,XCoder之前的任务进度被清除,任务自动重启。我们的测试证明,当ZStackMini的任意一个节点掉电时,其上启用了“高可用性”的虚拟机会自动迁移到另一个正常节点。

通过上述两阶段验证可以看出,ZStackMini具有良好的可用性,无论是硬盘组件故障还是节点级故障,应用都可以无中断或短暂暂停后继续运行,不会造成数据丢失。

计算存储:效率和数据持久性

在使用这款ZStackMini的过程中,我们和一些对这款产品感兴趣的潜在用户交流,发现有一个很有代表性的问题:两个节点,一主一备,可用性有保证,但是硬件的利用率不是只有一半吗?会不会很浪费?

这个问题可以从计算和存储资源两个方面来看。

从应用层面来说,前面测试环节已经提到,应用所在虚拟机的“高可用”功能是可选的,也就是说只有开启这个功能,虚拟机才会同时占用两个节点的计算资源,这也是保证应用持续运行必须付出的代价。如果一个应用不需要那么高的可用性,就不会开启“高可用性”,这样会节省不必要的浪费。

在存储层面,ZStackMini的所有用户数据都存储在两个节点的镜像中,这样即使一个节点完全损坏,数据也不会丢失。从数据磁盘的存储利用率来看,节点间是1+1(镜像),节点内是3+1(4个磁盘的RAID5),所以整体效率是0.5×0.75=0.375,不到一半的水平。

看起来不高吧?相比之下,三个副本的超融合系统的存储利用率是三分之一,也就是0.333——所以看起来ZStackMini略占优势。

ZStack还解释了Mini在数据持久性方面的优势:

重复数据持久失效的概率等于分布在不同计算节点的任意两个磁盘同时损坏的概率。根据Google每年1.7%的磁盘损坏率数据(高于硬盘厂商公布的指标),为1.7%×1.7%×(1/2)=0.01445%,数据持久性为98.56%,接近两个9;

双副本+RAID5数据持久失效的概率等于分布在不同计算节点上的任意四个磁盘同时损坏的概率,且必须是一边两个,而不是一边四个或三个,即1-1.7%×1.7%×1.7%×1.7%×(18/31)=99.99995%,即高于七个9(9)

而三个副本只要任意三个磁盘损坏就有数据丢失,三个副本的可用概率为1-1.7%×1.7%×1.7%=99.99951%,高于五个九。

Outlook3.0:提高可维护性和整体可用性

可维护性是一个笼统的术语,但它体现在产品设计的每一个细节中。

比如现代的x86服务器,大部分都有热插拔(驱动)和免工具拆卸的特点,这其实体现了硬件层面的可维护性。不用工具,可以徒手更换故障部件,缩短了维修时间,自然也有助于可用性(毕竟可用性也可以用停机时间来衡量)。

同时在软件方面,就ZStackMini而言,在初始化过程中节省了大量时间。同时,很多功能都是通过鼠标点击,然后在后台默默完成多个相关流程,这也是可维护性的体现:尽量减少人工 *** 作,避免人为误 *** 作。

当然,这些还不够。谈及ZStackMini的未来发展,ZStack介绍了即将推出的ZStackMini3.0产品,该产品将增加几项重要功能:

备份功能

目前2.0版本的在设置好之后也可以进行备份,但是3.0版本会正式推出外置磁盘备份功能,可以定期对系统进行备份,并使用这些备份在新机器上进行恢复。未来还将支持备份到云功能,让数据高枕无忧。

改进与应用程序的高可用性有关。

当我们验证“节点故障”时,虽然应用虚拟机被设置为高可用,但是在节点故障后,应用虚拟机仍然需要短暂的暂停来恢复服务。在新的3.0版本中,一旦出现节点故障,将实现不间断切换,用户不会感受到应用虚拟机的暂停。

在ZStackMini中集成应用中心

目前,ZStackMini2.0平台部署后,用户需要手动创建虚拟机并安装应用。对于大多数小型企业或边缘网站来说,这既复杂又耗时。但在3.0中,ZStack会根据不同行业的应用特点,与各个ISV合作,将应用模板直接集成到应用中心。用户只需下载即可部署,省去了应用安装过程中繁杂的配置,同时在升级维护上更有保障,大大提高了可维护性。

申请商业报告,分享好的商业创意。点击这里讨论新的创业机会!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/757134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-30
下一篇 2022-04-30

发表评论

登录后才能评论

评论列表(0条)

保存