借助StorageGRID实现零RPO—多站点复制综合指南
本技术报告为实施StorageGRID复制策略以在站点发生故障时实现零恢复点目标(RPO)提供了全面的指南。本文档详细介绍了StorageGRID的各种部署选项、包括多站点同步复制和多网格异步复制。其中介绍了如何配置StorageGRID的信息生命周期管理(ILM)策略、以确保数据在多个位置之间的持久性和可用性。此外、本报告还介绍了保持客户端操作不中断所需的性能注意事项、故障情形和恢复过程。本文档的目标是、通过利用同步和异步复制技术、提供相关信息以确保数据始终可访问且一致、即使在站点完全瘫痪的情况下也是如此。
StorageGRID概述
NetApp StorageGRID是一个基于对象的存储系统、支持行业标准Amazon Simple Storage Service (Amazon S3) API。
StorageGRID可跨多个位置提供一个命名空间、并根据信息生命周期管理策略(ILM)提供各种服务级别。通过这些生命周期策略,您可以优化数据在整个生命周期中的存储位置。
借助StorageGRID、您可以在本地和地区分布的解决方案中配置数据的持久性和可用性。无论您的数据是在本地还是在公共云中,集成的混合云工作流都允许您的企业利用云服务,例如 Amazon Simple Notification Service (Amazon SNS)、Google Cloud、Microsoft Azure Blob、Amazon S3 Glacier、Elasticsearch 等。
StorageGRID规模
最小StorageGRID部署由单个站点中的一个管理节点和 3 个存储节点组成。单个网格最多可以增长到 220 个节点。 StorageGRID可以部署为单个站点,也可以扩展到 16 个站点。
管理节点包含管理界面、指标和日志记录的中心点,并维护StorageGRID组件的配置。管理节点还包含用于 S3 API 访问的集成负载均衡器。
StorageGRID可以部署为纯软件、VMware 虚拟机设备或专用设备。
StorageGRID 节点可以部署为:
-
仅元数据节点最大化对象数量
-
仅存储对象的节点,最大化对象空间
-
组合元数据和对象存储节点,添加对象计数和对象空间
每个存储节点都可以扩展到多 PB 容量,用于对象存储,从而允许单个命名空间拥有数百 PB 的容量。 StorageGRID还为 S3 API 操作提供了一个称为网关节点的集成负载均衡器。
StorageGRID由放置在站点拓扑中的节点集合组成。 StorageGRID中的站点可以是唯一的物理位置,也可以作为逻辑结构与网格中的其他站点位于共享的物理位置。 StorageGRID站点不应跨越多个物理位置。站点代表共享的局域网 (LAN) 基础设施和故障域。
StorageGRID和故障域
StorageGRID包含多个故障域层、在决定如何构建解决方案、如何存储数据以及应将数据存储在何处以降低故障风险时、需要考虑这些故障域。
-
网格级别-由多个站点组成的网格可能会发生站点故障或隔离、可访问站点可以继续作为网格运行。
-
站点级别-站点内的故障可能会影响该站点的运行、但不会影响网格的其余部分。
-
节点级别—节点故障不会影响站点的运行。
-
磁盘级别—磁盘故障不会影响节点的运行。
对象数据和元数据
对于对象存储,存储单元是对象,而不是文件或块。与文件系统或块存储的树状层次结构不同,对象存储以非结构化的平面布局对数据进行组织。对象存储可将数据的物理位置与用于存储和检索数据的方法分离。
基于对象的存储系统中的每个对象都有两部分:对象数据和对象元数据。
-
对象数据表示实际的基础数据、例如照片、电影或病历。
-
对象元数据是指描述对象的任何信息。
StorageGRID 使用对象元数据跟踪网格中所有对象的位置,并管理每个对象的生命周期。
对象元数据包括以下信息:
-
系统元数据,包括每个对象的唯一 ID、对象名称、S3 存储桶的名称、租户帐户名称或 ID、对象的逻辑大小、对象首次创建的日期和时间以及对象最后修改的日期和时间。
-
每个对象副本或经过清理编码的片段的当前存储位置。
-
与对象关联的任何自定义用户元数据键值对。
-
对于S3对象、是指与该对象关联的任何对象标记键值对
-
对于分段对象和多部分对象,分段标识符和数据大小。
对象元数据可自定义并可扩展,因此应用程序可以灵活地使用。有关StorageGRID存储对象元数据的方式和位置的详细信息,请访问 "管理对象元数据存储"。
StorageGRID的信息生命周期管理(ILM)系统用于编排StorageGRID系统中所有对象数据的放置、持续时间和加载行为。ILM规则可确定StorageGRID如何使用对象副本或跨节点和站点对对象进行纠删编码来存储对象。此ILM系统负责确保网格内的对象数据一致性。
纠删编码
StorageGRID提供在节点级别和驱动器级别擦除代码数据的能力。使用StorageGRID设备,我们对每个节点上存储在该节点内所有驱动器上的数据进行擦除编码,从而提供本地保护,防止多个磁盘故障导致数据丢失或中断。驱动器故障的重建在节点本地进行,不需要通过网络复制数据。
此外, StorageGRID设备使用擦除编码方案将对象数据存储在站点内的节点上,或分布在StorageGRID系统中的 3 个或更多站点上,尽管 StorageGRID 的 ILM 规则可防止节点故障。
擦除编码提供了一种能够以较低的开销抵御节点和站点故障的存储布局,而复制可以做同样的事情,但开销较大。只要满足存储数据块所需的最小节点数,所有StorageGRID擦除编码方案都可以部署在单个站点中。这意味着对于 4+2 的 EC 方案,至少需要 6 个节点可用于接收数据。
元数据一致性
在StorageGRID中、元数据通常在每个站点上存储三个副本、以确保一致性和可用性。这种冗余有助于保持数据完整性和可访问性、即使在发生故障时也是如此。
默认一致性是在网格范围级别定义的。用户可以随时更改存储分段级别的一致性。
StorageGRID中提供的存储分段一致性选项包括:
-
全部:提供最高级别的一致性。网格中的所有节点都会立即接收数据、否则请求将失败。
-
强-全局:保证所有站点中所有客户端请求的写入后读一致性。
-
Quorum Strong-global:保证所有站点上所有客户端请求的读写一致性。如果可以实现元数据副本仲裁,则可以为多个节点甚至站点故障提供一致性。
-
QUORUM 一致性定义为存储节点元数据副本的仲裁,其中每个站点有 3 个元数据副本。计算方法如下:1+((N*3)/2),其中 N 是站点总数
-
例如,3 站点网格必须至少制作 5 个副本,每个站点最多可制作 3 个副本。
-
-
强站点:保证站点内所有客户端请求的写入后读一致性。
-
read-after-new-write(默认):为新对象提供写入后读取一致性、并为对象更新提供最终一致性。提供高可用性和数据保护保证。建议用于大多数情况。
-
可用:为新对象和对象更新提供最终一致性。对于S3存储分段、请仅在需要时使用(例如、对于包含很少读取的日志值的存储分段、或者对于不存在的密钥执行HEAD或GET操作)。S3 FabricPool 存储分段不支持。
对象数据一致性
虽然元数据会在站点内和站点间自动复制、但对象数据存储放置决策由您自行决定。对象数据可以存储在站点内和站点间的副本中、也可以在站点内或站点间进行编码、或者可以组合使用副本和经过编码的存储方案。ILM规则可以应用于所有对象、也可以通过筛选仅应用于特定对象、分段或租户。ILM规则定义了对象的存储方式、副本和/或纠删编码方式、对象在这些位置的存储时间长度、副本数量或纠删编码方案是否应更改、或者位置是否应随时间而更改。
每个ILM规则都将配置以下三种用于保护对象的加注行为之一:双重提交、平衡或严格。
双提交选项将立即在网格中的任意两个不同存储节点上创建两个副本、并将请求成功返回给客户端。节点选择将在请求的站点内尝试、但在某些情况下可能会使用其他站点的节点。对象将添加到ILM队列中、以便根据ILM规则进行评估和放置。
Balanced选项会立即根据ILM策略评估对象、并在成功向客户端返回请求之前同步放置对象。如果由于中断或存储不足而无法满足放置要求、从而无法立即满足ILM规则、则会改用双提交。问题解决后、ILM将根据定义的规则自动放置对象。
"strict"选项会立即根据ILM策略评估对象、并同步放置对象、然后将请求成功返回给客户端。如果由于发生中断或存储不足以满足放置要求而无法立即满足ILM规则、则此请求将失败、客户端需要重试。
负载平衡
可以通过集成网关节点、外部第三方负载平衡器、DNS轮叫或直接部署StorageGRID来访问客户端。可以在一个站点中部署多个网关节点、并在高可用性组中配置这些节点、以便在发生网关节点中断时自动进行故障转移和故障恢复。您可以在一个解决方案中结合使用负载平衡方法、为一个解决方案中的所有站点提供单一访问点。
默认情况下、网关节点将平衡网关节点所在站点中存储节点之间的负载。可以对StorageGRID进行配置、使网关节点能够使用多个站点的节点平衡负载。此配置会将这些站点之间的延迟与客户端请求的响应延迟增加。只有在客户端可以接受总延迟时、才应配置此选项。
通过结合本地和全局负载平衡,可以确保实现零 RTO。确保客户端访问不间断需要对客户端请求进行负载平衡。 StorageGRID解决方案可以在每个站点包含许多网关节点和高可用性组。为了即使在站点发生故障时也能为任何站点中的客户端提供不间断的访问,您应该结合StorageGRID网关节点配置外部负载平衡解决方案。配置管理每个站点内负载的网关节点高可用性组,并使用外部负载平衡器在高可用性组之间平衡负载。必须配置外部负载均衡器来执行健康检查,以确保请求仅发送到操作站点。有关使用StorageGRID进行负载平衡的更多信息,请参阅 "StorageGRID负载平衡器技术报告"。
StorageGRID的零 RPO 要求
要在对象存储系统中实现零恢复点目标(RPO)、在发生故障时务必:
-
元数据和对象内容是同步的、并被视为一致的
-
即使出现故障、对象内容仍可访问。
对于多站点部署,Quorum Strong Global 是首选的一致性模型,可确保元数据在所有站点之间同步,这对于满足零 RPO 要求至关重要。
存储系统中的对象根据信息生命周期管理(ILM)规则进行存储、这些规则决定了数据在整个生命周期中的存储方式和位置。对于同步复制、可以考虑在严格执行或平衡执行之间进行复制。
-
为了实现零RPO、必须严格执行这些ILM规则、因为它可以确保将对象放置在定义的位置、而不会出现任何延迟或回退、从而保持数据可用性和一致性。
-
StorageGRID的ILM平衡加载行为在高可用性和故障恢复能力之间实现了平衡、即使在站点发生故障时、用户也可以继续加载数据。
跨多个站点同步部署
多站点解决方案: StorageGRID允许您在网格内的多个站点之间同步复制对象。通过设置具有平衡或严格行为的信息生命周期管理 (ILM) 规则,对象会立即放置在指定位置。将存储桶一致性级别配置为 Quorum Strong Global 也将确保同步元数据复制。 StorageGRID使用单个全局命名空间,将对象放置位置存储为元数据,因此每个节点都知道所有副本或擦除编码片段的位置。如果无法从发出请求的站点检索对象,则将自动从远程站点检索该对象,而无需故障转移过程。
解决故障后、无需手动进行故障恢复。复制性能取决于网络吞吐量最低、延迟最高和性能最低的站点。站点的性能取决于节点数、CPU内核数和速度、内存、驱动器数量和驱动器类型。
多网格解决方案: StorageGRID可以使用跨网格复制(CGR)在多个StorageGRID系统之间复制租户、用户和分段。CGR可以将选定数据扩展到16个以上的站点、增加对象存储的可用容量并提供灾难恢复。使用CGR复制分段包括对象、对象版本和元数据、可以是双向复制、也可以是单向复制。恢复点目标(RPO)取决于每个StorageGRID系统的性能及其之间的网络连接。
摘要:
-
网格内复制包括同步和异步复制、可使用ILM加载行为和元数据一致性控制进行配置。
-
网格间复制仅为异步复制。
单网格多站点部署
在以下场景中, StorageGRID解决方案配置了一个可选的外部负载均衡器,用于管理对集成负载均衡器高可用性组的请求。这样,除了 RPO 为零之外,RTO 也将为零。 ILM 配置了平衡摄取保护以实现同步放置。对于 3 个或更多站点的网格,每个存储桶都配置有 Quorum Strong Global 一致性模型,对于少于 3 个站点的网格,则配置有强 Global 一致性。
在双站点StorageGRID解决方案中、每个对象至少有两个副本或3个EC区块、所有元数据至少有6个副本。故障恢复后、中断后的更新将自动同步到已恢复的站点/节点。如果只有2个站点、则在故障情形下、除了整个站点丢失之外、不可能实现零RPO。
在包含三个或更多站点的StorageGRID解决方案中、每个对象至少有3个副本或3个EC区块、所有元数据至少有9个副本。故障恢复后、中断后的更新将自动同步到已恢复的站点/节点。如果有三个或更多站点、则可以实现零RPO。
多站点故障情形
失败 | 双站点结果 | 3个或更多站点的结果 |
---|---|---|
单节点驱动器故障 |
每个设备使用多个磁盘组、并且每个组至少可以承受1个驱动器发生故障、而不会造成中断或数据丢失。 |
每个设备使用多个磁盘组、并且每个组至少可以承受1个驱动器发生故障、而不会造成中断或数据丢失。 |
一个站点出现单节点故障 |
不会中断操作或丢失数据。 |
不会中断操作或丢失数据。 |
一个站点出现多节点故障 |
指向此站点的客户端操作中断、但不会丢失数据。 指向另一站点的操作将保持无中断、并且不会丢失任何数据。 |
操作将定向到所有其他站点、并且不会中断、也不会丢失任何数据。 |
多个站点出现单节点故障 |
在以下情况下、不会造成中断或数据丢失:
在以下情况下、操作中断并存在数据丢失的风险:
|
在以下情况下、不会造成中断或数据丢失:
在以下情况下、操作中断并存在数据丢失的风险:
|
单站点故障 |
客户端操作将中断、直到故障得到解决、或者存储分段一致性降至强站点或强站点或低站点、以便操作成功、但不会丢失数据。 |
不会中断操作或丢失数据。 |
单站点加单节点故障 |
客户端操作将中断、直到故障得到解决、或者存储分段一致性降低到新写后读取或更低、以便操作成功并可能丢失数据。 |
不会中断操作或丢失数据。 |
单个站点加上其余每个站点的一个节点 |
客户端操作将中断、直到故障得到解决、或者存储分段一致性降低到新写后读取或更低、以便操作成功并可能丢失数据。 |
如果无法满足元数据副本仲裁并可能丢失数据、则操作将中断。 |
多站点故障 |
如果至少有一个站点无法完整恢复、则不会丢失任何操作站点的数据。 |
如果无法满足元数据副本仲裁、操作将中断。只要至少保留1个站点、就不会丢失数据。 |
站点的网络隔离 |
客户端操作将中断、直到故障得到解决、或者存储分段一致性降至强站点或强站点或低站点、以便操作成功、但不会丢失数据 |
隔离站点的操作将中断、但不会丢失任何数据 不会中断其余站点的运行、也不会丢失数据 |
多站点多网格部署
为了添加额外的冗余层,此场景将采用两个StorageGRID集群并使用跨网格复制来保持它们同步。对于此解决方案,每个StorageGRID集群将有三个站点。两个站点将用于对象存储和元数据,而第三个站点将仅用于元数据。两个系统都将配置平衡的 ILM 规则,以使用擦除编码在两个数据站点中同步存储对象。存储桶将采用 Quorum Strong Global 一致性模型进行配置。每个网格将在每个存储桶上配置双向跨网格复制。这提供了区域之间的异步复制。可以选择实施全局负载均衡器来管理对两个StorageGRID系统的集成负载均衡器高可用性组的请求,以实现零 RPO。
该解决方案将使用四个位置、这些位置平均分为两个区域。区域1将包含网格1的2个存储站点作为区域的主网格、并包含网格2的元数据站点。区域2将包含网格2的2个存储站点作为区域的主网格、并包含网格1的元数据站点。在每个区域中、同一位置可以容纳该区域主网格的存储站点以及其他区域网格的纯元数据站点。仅使用元数据节点作为第三个站点将提供元数据所需的一致性、而不会复制该位置中的对象存储。
该解决方案具有四个独立的位置、可为两个单独的StorageGRID系统提供完全冗余、并将RPO保持为0、同时利用多站点同步复制和多网格异步复制。任何单个站点都可能发生故障、同时在两个StorageGRID系统上保持客户端操作不中断。
在该解决方案中、每个对象有四个经过删除的编码副本、所有元数据有18个副本。这样可以在不影响客户端操作的情况下实现多种故障情形。在发生故障恢复时、从中断中进行的更新将自动同步到发生故障的站点/节点。
多站点、多网格故障情形
失败 | 结果 |
---|---|
单节点驱动器故障 |
每个设备使用多个磁盘组、并且每个组至少可以承受1个驱动器发生故障、而不会造成中断或数据丢失。 |
网格中一个站点出现单节点故障 |
不会中断操作或丢失数据。 |
每个网格中的一个站点发生单节点故障 |
不会中断操作或丢失数据。 |
网格中一个站点发生多节点故障 |
不会中断操作或丢失数据。 |
每个网格中一个站点发生多个节点故障 |
不会中断操作或丢失数据。 |
一个网格中的多个站点出现单节点故障 |
不会中断操作或丢失数据。 |
每个网格中的多个站点出现单节点故障 |
不会中断操作或丢失数据。 |
网格中的单站点故障 |
不会中断操作或丢失数据。 |
每个网格中的单站点故障 |
不会中断操作或丢失数据。 |
网格中的单站点和单节点故障 |
不会中断操作或丢失数据。 |
单个站点加上一个网格中其余每个站点的一个节点 |
不会中断操作或丢失数据。 |
单个位置故障 |
不会中断操作或丢失数据。 |
每个网格DC1和DC3中的单位置故障 |
操作将中断、直到故障得到解决或存储分段一致性降低;每个网格丢失2个站点 所有数据仍位于2个位置 |
每个网格DC1和DC4或DC2和DC3中的单位置故障 |
不会中断操作或丢失数据。 |
每个网格DC2和DC4中的单位置故障 |
不会中断操作或丢失数据。 |
站点的网络隔离 |
隔离站点的操作将中断、但不会丢失任何数据 不会中断其余站点的运行、也不会丢失数据。 |
结论
利用StorageGRID实现零恢复点目标(RPO)是在发生站点故障时确保数据持久性和可用性的关键目标。通过利用StorageGRID强大的复制策略(包括多站点同步复制和多网格异步复制)、企业可以保持客户端无中断运行、并确保多个位置之间的数据一致性。信息生命周期管理(ILM)策略的实施以及纯元数据节点的使用进一步增强了系统的弹性和性能。借助StorageGRID、企业可以信心十足地管理数据、因为企业知道、即使在复杂的故障情形下、数据仍可访问且保持一致。这种全面的数据管理和复制方法强调了细致规划和执行对实现零RPO和保护有价值信息的重要性。