什么时候存储被认为是高可用性的?

什么时候存储被认为是高可用性的?

我在几个地方读到人们将以下配置描述为高可用性:

2 台服务器(有时具有多个 HBA),每台通过多条 SAS 电缆连接到支持多路径 I/O 的 RAID 磁盘阵列。

当然,RAID 阵列本身在定义上具有一定程度的冗余,但存储设备呢?存储设备不会发生故障吗?还是说这是上述设置中的单点故障?

抱歉,这是一个菜鸟问题。

答案1

我认为“高可用性”和“无单点故障”之间存在差异。另外,您必须考虑 HA 的范围,您可能拥有一些对存储具有 HA 但不对应用程序具有 HA 的东西(单个服务器。很傻,我知道,但我见过这种情况发生)。

弄清楚您的正常运行时间要求,然后反向解决不同的组件可能更有用。此外,对我来说,HA 涵盖单个位置的可用性。业务连续性/DR 解决多站点部分。因此,您可以将两者结合起来,每个位置都有 HA,而 DR 是最昂贵的。再次强调,RTO/RPO 要求会影响设计和决策过程。

哆啦 A 梦,关于您关于外壳零件故障的问题。

外壳内的零件可以并且会在某个时候发生故障。但根据阵列的不同,阵列内部可能会有冗余部件。所以剩下的就是机箱本身,在我看来这不是什么大问题。如果你有第二个阵列,典型的 DC 布局倾向于将存储阵列聚集在一起,因此如果其中一个阵列着火,它可能会影响其他阵列。

答案2

为您的网站提供良好的工作定义

“高可用性”对不同的人来说有很多不同的含义。当我为运营商级电信系统编写软件时,我们有几个冗余要求:

  • 网络:以太网上的两条路径,经过两个不同的交换机
  • 磁盘:突袭等
  • 电源:冗余电源,通过两个不同的电源子系统(由我们的机柜处理)

这些标准源自以下问题:

是否有任何维护操作会导致停机?

  • 升级力量
  • 升级以太网交换机
  • 交换磁盘

弄清楚这些和类似的问题如何适用于您的情况,您将对您的网站有一个很好的工作定义。

答案3

可能“高可用性”的最佳定义是,您可以通过一些数学运算来估算您的正常运行时间。(99.8%、99.999% 等等,通常以一个月或一年为单位进行测量)并且它必须是对您的客户提供服务可用性的衡量标准;任何“服务器本身正常运行,网络故障不是我的错”的衡量标准都不算数。

这几乎肯定意味着您没有任何需要维护的组件,当固件更新或类似情况发生时,这些组件会导致服务中断。一旦您超过 3 个 9,您的服务器的可用性可能会比网络、电源等更好……(似乎互联网的很大一部分每隔几年就会出现几个小时的问题,因此如果客户通过互联网联系您,您可能无法真正超过 4 个 9)

正如您所描述的:这是一个好的开始,但具体情况视情况而定。

容易失败的东西,按可能性大致顺序如下:

  1. 人类(“这个按钮是干什么的?”)
  2. 软件 (
  3. 任何有运动部件的东西(硬盘、风扇)
  4. 芯片(主要是因为它们有其他电子产品的非常小的版本,并且它们有固件,即软件)
  5. 电容器(不断听到有关这些电容器批次不良的消息)
  6. 晶体管、电阻器和其他电子设备,特别是当存在任何类型的热循环时

如果 RAID 机箱中的底盘、背板等相当简单,它们可能具有足够的弹性,可以确保 99.99% 的正常运行时间(例如,4 小时的维修时间和一年内 1/5 的故障概率)或类似的情况。这可能比您的网络或电源可用性更好,即使您的站点只有几条网络路径和合理的 UPS 基础设施。

RAID 机箱可能实际上是两个独立的电子单元,每个驱动器都有单独的路径(双连接器驱动器现在很常见),它们之间有某种心跳,并且两个系统都连接到两个控制器。如果非冗余部件只是一个金属盒和非常简单的接线,那么按照大多数标准,这将符合“高可用性”的条件,因为金属盒通常不会发生故障,简单的接线也不太可能发生故障,除非制造不当。

换句话说:我们不知道。每个部件的 MTBF 评级和平均维修时间是多少?

答案4

和所有事物一样,高可用性也有不同的程度。您描述的这种高可用性直接连接存储能够承受大多数单点故障,但如果阵列出现故障,那么显然它会失效。

在阵列级别,为提高可用性而添加的功能包括冗余电源、冗余控制器(带缓存\状态镜像)、冗余风扇和冗余 IO 接口。理想情况下,所有这些都应支持热插拔,这样您就可以承受故障\进行主动维护而无需关闭它。

在冗余电源方面,高端系统有独立的备用电源系统作为标准设置的一部分,对于真正偏执的人来说,你可以从具有独立备用发电机选项的独立交流电网为它们供电。电池备份缓存\缓存降级用于确保一致性,即使你为保持其运行所做的一切仍然无法防止故障。

此外,您可能(应该)考虑复制到不同服务器机房\数据中心\城市的单独阵列。复制很棘手,因为故障转移到副本始终是一个复杂的过程,但即使在最基本的操作中,它也比重建\恢复快得多。

值得注意的是,最大的问题往往是人为错误——设计能够承受人为错误的存储非常困难。SAN 在某种程度上通过推荐双重(或更多)完全独立的结构来解决这个问题,以便隔离物理和配置错误,但在阵列级别,这种级别的弹性并不是我见过的。

相关内容