提高应用程序的弹性和性能,使用 Multi

提升应用程序的弹性与性能:多可用区 Amazon FSx for OpenZFS

作者:Benjamin Hodgens 和 Tom McDonald发布日期:2024年2月5日标签:高级、Amazon CloudWatch、Amazon FSx for OpenZFS、RDS for MariaDB、存储、技术如何做

飞机加速app官方下载

关键要点

多可用区部署:Amazon FSx for OpenZFS 现在支持多可用区MultiAZ,提高高可用性和耐久性。不需要应用修改:用户可在无需修改应用程序的情况下轻松实现文件存储的高可用性。故障转移与故障恢复测试:介绍如何测试故障转移和故障恢复操作,以及应用级测试结果。性能监控:通过 Amazon CloudWatch 监控应用程序和文件系统性能的变化。

在现代商业关键应用中,通常需要高可用性以满足服务级别协议SLAs。此外,用户面临合规性要求和灾难恢复计划的挑战,以确保工作负载的可用性。对于需要高可用性的工作负载,通常也需要高性能、低延迟的文件存储。考虑将业务关键应用迁移到 AWS 的客户希望了解可用的保障措施和工具,以满足这些严格的业务连续性要求。

Amazon FSx for OpenZFS 是一种完全托管的文件服务,提供高性能、低延迟的 NFS v3 和 v4 访问,以及近乎即时的卷快照和精简配置卷克隆等先进存储管理功能。此前,FSx for OpenZFS 仅提供单可用区SingleAZ部署选项,该选项使用单个文件服务器进行部署。这种方案需要用户配置每周的维护窗口,在此期间文件系统可能会因为必要的补丁或其他维护活动而暂时不可用。对于许多用户工作负载来说,这是高性能存储的可接受权衡,但其他用户则要求更高的可用性和耐久性选项,特别是在使用自管理的 Amazon EC2 实例的 MariaDB 数据库时。因此,Amazon 于 2023 年 8 月发布了 FSx for OpenZFS 的 多可用区 部署选项,使用户能轻松部署跨越多个可用区的文件存储,以支持需要提升可用性和耐久性的工作负载。

本文将展示用户如何在无需任何应用程序修改的情况下,利用 Amazon FSx for OpenZFS 提高其耐久性和可用性。我们将审视多可用区 Amazon FSx for OpenZFS 的架构,测试故障转移操作及故障转移/故障恢复事件期间的应用级测试结果。其带来的好处包括为关键业务应用包括数据库提供高可用性和简化操作恢复功能。

架构概述 FSx for OpenZFS 多可用区配置

图1 显示 FSx for OpenZFS 设计的细节,旨在提高数据耐久性、故障容忍性和可用性。多可用区文件系统透明地由两组文件服务器和两组存储磁盘组成。任何写入到文件系统的数据都是同步的,因此数据总是会在两个可用区之间完全复制。

在传统的高可用性存储方案中,多个存储节点共享一个浮动的虚拟 IP 地址,并且在同一子网中有独立的管理 IP。当活动节点故障时,系统会检测到故障,浮动 IP 地址将被备用节点接管,从而随存储一起转移。由于 FSx for OpenZFS 能够使用 AWS 基础设施和具有独立网络子网的多个可用区,其客户端访问的高可用性机制与传统高可用性网络存储的实现方式有所不同。

实施和测试故障转移/故障恢复的先决条件

要实施多可用区 FSx for OpenZFS,您需要满足以下先决条件:

一个 AWS 账户。在 Amazon 虚拟私有云 (VPC) 中选择的位于不同可用区的两个子网。上述子网中的 Amazon FSx for OpenZFS 多可用区部署。在您选择部署解决方案的子网中运行的 EC2 实例。对 Linux 的基本使用知识。

在 FSx for OpenZFS 中,活动和备用文件服务器配置在您选择的虚拟私有云网络VPC的两个独立可用区中。当您选择“标准创建”选项时,如图2所示,通过一种端点 IP来维护客户对文件系统的可用性,而您在创建文件系统时会被提示配置该 IP。使用“快速创建”文件系统选项时,默认可选用您所选择的 VPC 中的未分配 IP 范围。

请注意,在使用“快速创建”模式下默认设置,此 端点 IP 是子网外的一个 IP 地址,但在VPC CIDR 范围内。在使用“标准创建”选项时,您可以选择一个 VPC 外的 IP 范围,或自己指定一个 IP 地址范围。在这些选项中,端点 IP 的作用类似于传统高可用性文件服务中使用的浮动 IP。在 FSx for OpenZFS 的情况下,底层机制不同,使得文件服务器可以位于不同子网中这是多可用区服务的必要组成部分。当发生故障转移时,指向活动文件服务器的路由会自动更新为指向另一台文件服务器,确保客户服务的透明连续性。

所有这些实施细节都不会影响服务操作的简便性或功能。然而,由于与传统高可用性存储的概念差异,我们认为值得提及这些内容,以帮助澄清配置选择。

测试故障转移/故障恢复

作为一种完全托管的服务,FSx for OpenZFS 在用户定义的每周维护窗口期间,对文件系统进行系统更新和维护。此维护窗口允许服务在需要的情况下进行更新,且对用户的干扰最小。补丁并不频繁发生,通常每几周一次。

当启动维护时,文件系统会从活动文件服务器完全导出,暂时对新访问请求不可用。然后,文件系统将导入到对立的文件服务器即之前的备用文件服务器更新网络路由,IO 操作得以恢复。接着,服务用来支撑活动文件服务器的托管实例将被更新。一旦维护完成,另一方向回迁到原活动文件服务器。同样,这一过程对访问文件系统的客户完全透明。

用于维护的故障转移机制与主要可用区丢失时发生的相同行为:文件系统会立即导入到辅助可用区,并在活动文件服务器丢失时将其恢复可用。

要测试 FSx for OpenZFS 的故障转移/故障恢复事件,可以更改文件系统的吞吐量能力,如图3所示。当修改文件系统的吞吐量时,底层的 FSx for OpenZFS 服务器会在后台透明交换,以匹配请求的吞吐量。

更新文件系统吞吐量的过程仅需几分钟。您应该会在 AWS 管理控制台 中看到 Updating to XXX MB/s 消息,如图4所示。

在图5中,您可以使用 Amazon CloudTrail 监控故障转移事件,查找 ReplaceRoute 事件。在此示例中,我们将吞吐量从 160MB/s 更改为 360MB/s。出现了 1252PM 的 ReplaceRoute API 调用,紧接着是 1255PM 的故障恢复。请注意,用户名为 FSx,表示 FSx 服务发起了 API 调用。

应用级故障转移/故障恢复影响验证

为测试 FSx for OpenZFS 的故障转移/故障恢复影响,我们将在 Amazon Linux 2 EC2 实例上部署 MariaDB 数据库服务器。接着,我们使用 mysqlslap 进行负载测试。

mysqlslap 工具是一种诊断程序,旨在模拟 SQL 客户端负载并报告每个阶段的时长。这使我们能够测量多可用区故障转移/故障恢复对客户端应用负载的影响。

EC2 实例配置与测试步骤

在 EC2 实例上,我们执行以下步骤以准备测试。

在 Linux 客户端上安装 MariaDB 服务器,启用服务并启动数据库: bash sudo yum install y mariadbserver sudo systemctl enable mariadb sudo systemctl start mariadb

提高应用程序的弹性和性能,使用 Multi

确保为数据库设置根密码,安全性始终是我们的首要任务。我们在第4步中需要此密码。 bash sudo mysqlsecureinstallation

将数据库移动到 FSx for OpenZFS 卷: bash sudo systemctl stop mariadb sudo mv /var/lib/mysql /mnt/fsx/data/mysql

更新配置文件: bash sudo systemctl start mariadb

验证新位置是否位于 FSx NFS 挂载中:sqlMariaDB [(none)]gt select @@datadir @@datadir             /mnt/fsx/data/mysql/ 

使用 autogeneratesql 功能启动 mysqlslap 负载测试。将 password 替换为您之前设置的根密码。 bash sudo mysqlslap user=root p password host=localhost concurrency=200 iterations=2000 numberintcols=5 numbercharcols=20 autogeneratesql verbose

通过 Amazon CloudWatch 监控性能,该服务与 FSx for OpenZFS 集成于控制台中。

更改文件系统的 吞吐量能力 以触发故障转移事件。监测 CloudWatch 和 MariaDB,以观察故障转移及故障恢复的影响。

结果分析

在本文开头,我们承诺将讨论 FSx for OpenZFS 如何通过多可用区部署提高现有应用程序的耐久性和可用性。现在,我们将检查上述测试结果及其对应用程序故障转移事件的影响。

在 mysqlslap 测试期间,工作负载保持稳定,平均吞吐量为 42MB/s,操作次数为 639 ops/sec,平均 RTT 为 506 ms。这表明,在故障转移事件期间,工作负载能够正常执行,保持了对存储的一致低延迟。

吞吐量变化引发了 160616 和 160952 的 ReplaceRoute API 调用,如图6所示:

通过 CloudWatch 绘制数据见图7,我们看到吞吐量和 ops/sec 在故障转移/故障恢复事件发生期间保持稳定状态。

在测试期间运行 nfsiostat,我们捕获了 RTT 延迟,在故障转移/故障恢复事件发生期间除了短暂的峰值外,一直保持在 5ms。尽管在故障转移/故障恢复操作期间延迟有所增加,但需要指出的是,这表明 EC2 实例操作系统能够在故障转移期间持续运行,影响极小。

清理资源

为了避免未来产生费用,请删除此解决方案创建的资源。

终止为此工作创建的 EC2 实例。删除 Amazon FSx for OpenZFS 多可用区部署。删除 Amazon VPC 和相关组件。

结论

在本文中,我们展示了用户如何在无需任何应用程序修改的情况下,利用 Amazon FSx for OpenZFS 提高其耐久性和可用性。我们审视了多可用区 Amazon FSx for OpenZFS 的架构,如何测试故障转移操作,以及故障转移/故障恢复事件期间的应用级测试结果。

我们建议大多数生产工作负载使用多可用区文件系统,因为它提供了高可用性和耐久性模型。您应在需要高可用性的工作负载中使用多可用区文件系统,以确保在硬件故障、文件系统维护和可用区中断等事件发生时保持可用性。这种额外的功能为用户在与内部应用消费者保持紧密 SLA 时增加了弹性。Amazon FSx for OpenZFS 在大多数 AWS 区域均可用,并且现在提供跨多个可用区的高可用性,确保在故障转移/故障恢复事件期间,应用程序能够持续满足业务目标而不会中断。如需了解更多信息,请查阅 Amazon FSx for OpenZFS 用户指南,并 开始构建。

标签

Amazon CloudWatch、Amazon FSx for OpenZFS、AWS 云存储、[RDS

用 DPO、Amazon SageMaker Studio 和 Amazon SageMaker Ground Truth 对 Meta Llama 3 进行人类偏好的调整作者:Anastasia T...

新推出:基于Graviton4的内存优化Amazon EC2 X8g实例关键要点新发布的X8g实例:基于Graviton4的内存优化EC2 X8g实例现已推出,提供十种虚拟大小和两种裸金属大小,支持高...