可靠性支柱 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

可靠性支柱

Well-Architect AWS ed Framework 的可靠性支柱包括工作负载能够在预期时正确、一致地执行其预期功能。这包括在其全部生命周期内运行和测试工作负载的能力。

可靠的工作负载始于前期的软件和基础设施设计决策。您的架构选择将影响所有 Well-Architected 支柱的工作负载行为。针对可靠性,您必须遵循特定的模式。

可靠性支柱侧重于以下关键领域:

  • 工作负载架构,包括服务配额和部署模式

  • 变更管理

  • 故障管理

了解 Neptune 服务配额

除了中国以外,Neptune 集群的最大容量可以增长到 128 TiB (TiB),中国 AWS 区域 除外,其配额为 64 GovCloud TiB。

128 TiB 配额足以在图表中存储大约 200-4000 亿个对象。在带标签的属性图 (LPG) 中,对象是节点或边上的节点、边或属性。在资源描述框架 (RDF) 图中,对象是四边形。

对于任何 Neptune Serverless 集群,您可以设置海王星容量单位的最小和最大数量 ()。NCUs每个 NCU 由 2 千兆字节 (GiB) 的内存以及关联的 vCPU 和网络组成。最小和最大 NCU 值适用于集群中的任何无服务器实例。您可以设置的最大 NCU 值为 128.0 NCUs,最低的最小值为 1.0。 NCUs通过观察 Amazon CloudWatch 指标ServerlessDatabaseCapacity来优化最适合您的应用程序的 NCU 范围,捕捉您经常遇到的范围,并将该范围内的不良行为或成本关联起来。NCUUtilization如果您发现工作负载的扩展速度不够快,请增加最小值, NCUs 以便在扩展时为最初的激增提供足够的处理能力。

每个 AWS 账户 区域对您可以创建的数据库资源数量都有配额。这些资源包括数据库实例和数据库集群。在您达到某一资源的限制时,再进行创建该资源的调用就会失败并引发异常。有些配额是软配额,可以根据请求增加。有关亚马逊 Neptune 和亚马逊 RDS、Amazon Aurora 和亚马逊 DocumentDB(兼容 MongoDB)之间共享的配额列表,以及请求增加配额的链接(如果有),请参阅亚马逊 RDS 中的配额。

了解 Neptune 部署模式

在 Neptune 数据库集群中,有一个主数据库实例和最多 15 个 Neptune 副本。主数据库实例支持读取和写入操作,并对集群卷执行所有数据修改。Neptune 副本与主数据库实例连接到相同的存储卷,并且它们仅支持读取操作。Neptune 副本可以从主数据库实例卸载读取工作负载。

要实现高可用性,请使用只读副本。在不同的可用区中使用一个或多个只读副本实例可以提高可用性,因为只读副本充当主实例的故障转移目标。如果写入器实例失败,Neptune 会将只读副本实例提升为主实例。发生这种情况时,升级后的实例在重启时会出现短暂的中断(通常少于 30 秒),在此期间,对主实例发出的读取和写入请求会失败,但会出现异常。为了获得最高的可靠性,请考虑在不同的可用区中使用两个只读副本。如果可用区 1 中的主实例离线,则可用区 2 中的实例会升级为主实例,但是在这种情况发生时它无法处理查询。因此,在过渡期间,需要可用区 3 中的实例来处理读取查询。

如果您使用的是 Neptune Serverless,则所有可用区中的读取器和写入器实例将根据数据库负载相互独立地向上和向下扩展。您可以将读取器实例的提升等级设置为 0 或 1,使其随着写入器实例的容量而向上和向下扩展。这使它随时可以接管当前的工作负载。

管理和扩展 Neptune 集群

您可以使用 Neptune auto-sc aling 自动调整数据库集群中 Neptune 副本的数量,以满足基于 CPU 利用率阈值的连接和工作负载要求。通过自动缩放,您的 Neptune 数据库集群可以应对工作负载的突然增加。当工作负载减少时,auto-scaling 会删除不必要的副本,这样您就无需为未使用的容量付费。请注意,启动新实例可能需要长达 15 分钟的时间,因此仅靠自动缩放不足以应对需求的快速变化。

您只能对已经有一个主写入器实例和至少一个只读副本实例的 Neptune 数据库集群使用自动缩放(参见 Amazon Neptune 数据库集群和实例)。此外,集群中的所有只读副本实例都必须处于可用状态。如果任何只读副本处于可用状态以外的状态,则在集群中的每个只读副本都可用之前,Neptune auto-scaling 不会执行任何操作。

如果您遇到需求的快速变化,请考虑使用无服务器实例。无服务器实例可以在短时间内垂直扩展,而auto-scaling可以在较长的时间段内水平扩展。此配置提供了最佳的可扩展性,因为无服务器实例可以垂直扩展,而 auto-scaling 则实例化新的只读副本以处理超出单个无服务器实例最大容量的工作负载。有关 Amazon Neptune Serverless 容量扩展的更多信息,请参阅 Neptun e 无服务器数据库集群中的容量扩展

如果您的扩展需求在可预测的时间发生变化,则可以计划更改最小实例数、最大实例数和阈值,以更好地应对这些不断变化的需求。请记住至少提前 15 分钟安排向外扩展活动,以便这些实例在需要时可以上线。

通过使用数据库参数组中的参数,在 Amazon Neptune 中管理数据库配置。参数组就像是引擎配置值的容器,这些值可应用于一个或多个数据库实例。修改参数组中的集群参数时,请了解静态参数和动态参数之间的区别,以及如何和何时应用它们。使用状态端点查看当前应用的配置。

管理备份和故障转移事件

Neptune 会自动备份您的群集卷,并在备份保留期内保留备份的数据。Neptune 备份是连续且递增的,因此,您可以快速还原到备份保留期内的任何时间点。在创建或修改数据库集群时,您可以指定 1-35 天的备份保留期。

要在备份保留期之后保留备份,您还可以拍摄群集卷中的数据的快照。存储快照会产生 Neptune 的标准存储费用。

当您创建数据库集群的 Amazon Neptune 快照时,Neptune 会创建集群的存储卷快照,备份其所有数据,而不仅仅是单个实例。您随后可通过从该数据库集群快照还原来创建新的数据库集群。恢复数据库集群时,您需要提供要从中还原的数据库集群快照的名称,然后为通过还原创建的新数据库集群提供一个名称。

测试您的系统如何响应故障转移事件。使用 Neptune API 强制执行故障转移事件。当您想要模拟数据库实例的@@ 故障以进行测试或在故障转移发生后恢复到原始可用区的操作时,通过故障转移重启非常有用。有关更多信息,请参阅配置和管理多可用区部署。当您重启数据库写入器实例时,它会故障转移到备用副本。重启 Neptune 副本不会初始化失效转移。

为客户设计可靠性。测试它们在故障转移事件期间的行为。使用指数退避逻辑在客户端中实现重试逻辑。在 Amazon Neptune 的AWS Lambda 函数示例中可以找到实现此逻辑的代码示例。

AWS Backup如果您有一组适用于多个数据库引擎的常见备份要求,请考虑使用。