Amazon Elastic Compute Cloud(EC2)实例使用Elastic Block Storage(EBS)作为根卷以及应用程序的附加数据存储。有必要根据工作负载选择合适的EBS卷类型以实现高性能,并在生产环境中适当地备份EBS卷。我们需要一个解决方案来随时备份和恢复来自EBS卷快照的应用程序数据,我们不应为存档旧快照支付不必要的成本。本文介绍为应用程序选择正确的EBS卷类型,并提供使用无服务器技术处理EBS快照的机制。
EBS卷类型
Amazon EBS提供具有不同性能特征和成本模型的不同卷类型。我们可以根据应用程序要求(工作负载类型)选择卷类型,以实现更高的性能并节省总体存储成本。EBS卷有两种不同的类别,SSD支持的卷和支持HDD的卷。当工作负载是I / O密集型时使用SSD支持的卷,例如在应用程序中频繁读写的事务性工作负载。其性能评级为IOPS。当应用程序需要以较低的速率和高吞吐量连续读写磁盘时,将使用支持HDD的卷。其性能按吞吐量MiB / s进行评级。
SSD支持的EBS卷
SSD卷是高性能EBS存储。它们以现代固态硬盘存储技术为后盾。它可用作通用SSD卷(GP2)和预配置IOPS SSD卷(IO1)。GP2卷通过提供高性能和平衡价格来帮助操作各种工作负载,而IO1提供高性能和高吞吐量,适用于任务关键型,低延迟工作负载,尤其是托管数据库,如Cassandra,MongoDB, Postgres,MySQL和Oracle数据库工作负载。GP2卷可以创建从1 GB到16 TB的大小,IO1卷可以从4 GB到16 TB创建。它提供每卷16,000到64,000的IOPS,具体取决于卷的类型和大小。
HDD支持的EBS卷
HDD卷以较低的价格进行吞吐量优化。它以磁存储技术为后盾。它进一步分为吞吐量优化的HDD和冷HDD。这些卷类型可以分别以更便宜和最便宜的价格用于频繁和不频繁访问的工作负载。它通常用于托管数据仓库和大数据解决方案等场景,我们需要考虑吞吐量和存储价格。但它不能用作任何EC2服务器的启动卷。
此卷类型的大小可以从500 GB到16 TB创建,并且每卷提供250到500的IOPS。每卷的最大吞吐量范围为200 MiB / s至500 MiB / s。
为应用程序选择适当的EBS卷类型
如果我们的解决方案依赖于频繁访问数据并且应用程序和数据库之间的事务频繁,我们需要以相对较低的成本提供高性能和可靠的数据存储。我们对应用程序和数据库数据目录使用通用SSD卷用于根卷和预配置IOPS SSD卷,这需要连续的读写操作和低延迟。当应用程序在没有太多延迟的情况下接收到它可以处理的最大流量时,我们可以在负载条件下监视卷的性能。基于此,我们可以增加/减少IOPS计数以降低存储成本。
EBS卷数据保护
加密EBS卷可以保护静态数据和动作。我们可以在创建EBS卷的同时对其进行加密。加密卷加密该卷内的所有数据,并在数据在EC2实例和EBS存储之间移动时提供加密。从这些卷创建的EBS快照也是加密的。使用加密卷对性能没有影响,但对I / O延迟的影响很小。我们无法公开加密卷,也无法在AWS账户之间共享其快照。我们可以将加密卷用于应用程序数据目录,以保护我们的数据静止和运动。
![e477b96492369e7365e7b417f42d2471.png](https://i-blog.csdnimg.cn/blog_migrate/a1780cc552b4105c0e4892658dffc859.jpeg)
此体系结构图说明了lambda函数的实现,该函数每天在所有区域中对AWS账户中的EBS卷进行快照备份,并清除小于指定保留期(以天为单位)的快照。通过实施此解决方案,我们无需手动清理任何EBS快照,并且可以根据保留策略维护EBS快照卷的数量。它有助于我们减少不必要的AWS计费成本,并避免保留不再有用的快照。使用我们的解决方案备份的卷应该有一个Tag with Key,“Backup”,该键具有该键的一些值,将使用该名称创建快照,后跟时间戳。它将检查在提及的删除保留期数之前创建的快照。
如何实施此解决方案
我们将此解决方案实现为CloudFormation堆栈。CloudFormation模板创建资源,例如具有所有重要配置的Lambda函数,例如运行时,处理程序,内存设置,超时值等。为了带来安全性,我们将lambda执行角色附加了细粒度的IAM策略。此IAM角色和策略在同一个cloudformation模板中定义。lambda函数由充当cron调度程序的Cloud Watch事件触发。执行lambda函数后,它将创建卷快照并清除早于保留期的快照。CloudFormation模板还负责创建一个具有调用lambda函数所需权限的前夕。可以使用相同的Cloud Formation模板在多个AWS账户中复制此基础架构。
监控无服务器应用程序
我们可以使用CloudWatch指标来监控我们的解决方案。CloudWatch公开有关lambda执行和错误率的指标,包括延迟。有了这些指标,我们会根据需要优化我们的解决方 我们在Cloud Watch日志流中使用lambda发布的日志进行调试。
重构/维护申请
实施此解决方案不需要维护窗口。它不会影响我们基础设施中的任何内容。该解决方案易于维护。lambda函数的代码库在S3中可用。每当我们对代码进行任何更改时,我们都必须更新lambda函数以在即将执行期间实现更改。如果您希望更新/禁用备份计划,请更新CloudFormation堆栈。