减少AWS云开销的10项最佳实践方案

亚马逊网络服务通过灵活性、简单性和创新为您企业的环境带来了革命,但是您企业是否通过其实现了原本预期的节省成本的目标呢?本文中,我们将为广大读者诸君介绍优化您企业AWS开销的一些关键性的策略。

自从其于2006年进入市场以来,亚马逊网络服务(AWS)就已然永远地改变了整个IT世界了。尽管其价格多年来已经大幅下降了,但仍然有许多企业客户了解到,迁移到公共云服务并不总是能够帮助他们实现预期的成本节约的目标。

这并不意味着迁移到公共云服务是一个错误。公共云服务在敏捷性、响应性、简化操作和提高创新方面提供了巨大的优势。

这方面的错误在于:假设在不实施管理和自动化的情况下迁移到公共云服务,也能带来成本的节约。为了应对不断上涨的云基础设施成本,我们建议您企业组织不妨参考和借鉴本文中所介绍的这些最佳实践方案,以减低和优化成本,并实现您企业环境的价值最大化。

删除独立的EBS卷

在AWS账户中发现数千美元的独立未连接的弹性块存储服务( Elastic Block Storage ,EBS)卷是很普遍的。这些都是正在消耗成本,但却未被用于任何用途的卷(volumes)。当一个实例启动时,一个EBS卷通常会被连接,以作为应用程序的本地块存储。而当一个实例通过AWS控制台启动时,会有一个确保相关的EBS卷在该实例终止时被删除的设置。

但是,如果未选中该设置,则当一个实例终止时,该卷将仍然继续保持。而亚马逊也将继续按全价收取该卷的费用,尽管事实上,该卷已经不使用了。

通过在您的基础设施中不断检查独立未连接的EBS卷,可以帮助您企业每月节省数千美元的AWS账单。

一个大型的网络游戏公司就通过删除未使用的EBS卷,并主动监测独立未连接卷的方法,降低了三分之一的EBS的使用。

专业贴士:最佳的实践方案是,当某个卷有超过两个星期的时间未被连接时,就对其进行删除,因为同一卷被再次利用是不可能的。

删除旧的过期快照

许多企业组织都使用EBS快照来创建即时点副本的恢复点,以防数据丢失或在发生灾难的情况下使用。然而,如果得不到严密监控的话,EBS快照的成本可能会迅速失控。单个快照的成本并不昂贵,但是,当供应多个快照时,其成本会快速增长。

而使得这个问题的严重程度进一步加剧的一个因素是:企业用户可以通过配置设置,来自动基于每日的工作创建后续快照,而没有安排删除旧的快照。

企业组织可以通过监控快照成本和每个实例的使用情况,确保其不会失控,进而得以获得对于EBS快照的控制。在您企业设置一个应该为每个实例保留多少快照的标准。请记住,大部分的时候,一项恢复都是基于最新的快照进行的。

一家B2B SaaS公司发现,在其数百万份的EBS快照中,有很大比例的EBS快照的历史都已经超过两年了,完全可以删除。

专业贴士:寻找适合删除的快照的一种方法是确定该快照没有与之相关联的卷。当一个卷被删除时,其快照仍然保持在您的环境中是很常见的。务必小心不要删除正在作为实例的卷被使用的快照。

删除未关联的弹性IP地址

一个弹性IP地址是可以与一个实例相关联的一个公共IP地址,允许该实例能够通过互联网被访问到。当一个实例运行时,一个弹性IP地址的定价结构是独特,其弹性IP是免费的。

然而,如果一个实例被停止或终止,该弹性IP地址又没有被关联到另一个实例,您企业仍然会为该未被关联的弹性IP收取费用。不幸的是,在AWS管理控制台中,想要确定并对未被关联的弹性IP实施管理是很难的。

这可能会;也可能不会推动您企业的AWS环境成本的显著上涨,但掌握浪费的资源,并在管理成本失去控制之前,对其进行积极主动而非消极被动的管理却是相当关键的。

从最佳实践的角度来看,每月弹性IP收费应尽可能接近零。如果未关联的弹性IP是在AWS账户中,他们要么需要被关联到某个实例;要么就彻底删除,以免浪费成本。

一家大型电信公司了解到:在其环境中的微小的变化会带来弹性IP地址费用的显著改变。在减少其整体的月度开支过程中,该公司在其帐户之一终止了数百个闲置的实例。然而,该公司的领导忘记了释放关联的弹性IP地址。直到随后的一个月,AWS的账单发票被寄来,其弹性IP费用将近40000美元,该公司的财务部门才了解到如此代价高昂的错误。

终止僵尸资产

僵尸资产是在您企业的云环境中运行,但却并没有被用于任何目的的基础设施组件。僵尸资产有多种形式。例如,他们可以是曾用于特定目的,现在已经不再使用且未被关闭的EC2。当在实例启动过程中失败或由于脚本错误未能重新配置实例时,僵尸EC2实例也可能会发生。

僵尸资产也可以是以未被有效使用的闲置弹性负载均衡器(ELB);或者一款闲置的关系数据库服务(RDS)实例的形式出现。

不管是任何原因,只要这些资产处于运行状态,AWS都将对其收取费用。

这些僵尸资产必须被隔离,评估,如果被认为不重要的话,并应该立即终止。在对其终止或停止之前,对资产进行快照或时间点复制,以确保如果该资产再次需要的话您可以恢复它。

一家客户有一个夜间处理进程,以帮助加快其工程速度——将一个匿名生产数据库加载到RDS,以便在一个安全的环境用于测试和验证。这个过程运作良好,并为工程师们节省了大量的时间。

然而,虽然自动化在新的环境中很擅长,该客户从来没有做过一个清理僵尸资产的计划。

每天晚上,一个新的RDS实例将运转起来,关联到相关的资源,然后被遗弃,最终留下数百僵尸资源。

专业贴士:通过识别在过去的30天内,CPU的最大利用率小于5%的实例来开始搜寻您企业的僵尸。这并不意味着这个实例是一个僵尸,但其值得进一步调查研究。

升级到最新一代的实例

每隔几年,AWS都会发布下一代的实例,具备改进的价格计算性能和其他诸如集群、增强的网络、关联新类型的EBS卷等功能。例如,将一款c1.xlarge集群升级到c3.xlarge能够削减高达60%的成本,同时带来更快的处理速度。

对大多数企业客户而言,从上一代实例升级到当前一代的实例是一个双赢。其不仅提供了性能优势,同时也带来了每小时的成本节约。

对大多数公司来说,集群实例类型从第一代到第二代的迁移将有可能是一个渐进的过程。第一步是决定哪些帐户拥有待被转换的实例。如果您企业在预留实例( Reserved Instances,RIs)投入了巨资,那么只有那些到期或严格按需运行的实例应该被转换。

一家大型的B2B SaaS公司发现,在过去12个月内,他们所运行的60%的实例时间采用的都是老一代的实例类型。分析显示,将这些实例升级到最新一代,将帮助他们每年节省数百万美元。

适当调整EC2实例和EBS卷的规模

调整弹性计算云(Elastic Compute Cloud,EC2)实例的规模是具有潜在最大影响的降低成本的举措。开发人员们启动比必要的更大的新实例是很常见的。

这可能是故意给他们自己额外的余量,因为他们不知道新的工作负载的性能要求。一个EC2实例的过度配置可能会导致更高的成本。

如果没有性能监控或云管理工具,会很难评价资产是否是过度配置或配置不足。

有些信息可以从Amazon CloudWatch云监控服务收集,考虑CPU的利用率、内存利用率、磁盘利用率和网络输入/输出利用率是非常重要的。随着时间的推移审查这些趋势指标,使得企业用户可以围绕着减少实例规模大小而做出决定,而不损害实例上的应用程序的性能。

因为实例利用不充分是很常见的,您企业可以通过确保所有的实例都有合适的规模大小来降低成本。

专业贴士:为合理精简规模的一个好的开始是寻找平均CPU利用率低于5%,和30天内最大CPU利用率低于20%的实例。符合这一标准的实例可以考虑精简或终止了。

与EC2实例类似,EBS卷也可以被适当调整规模。不是看其CPU、内存、磁盘和网络方面的指标,EBS卷的规模调整所需考虑的关键要素是容量、IOPS和吞吐量。如前所述,移除未关联的卷是减少与EBS卷相关的成本的一种方式。

另一种方法是:评估哪些卷被过度配置,并且可以通过修改以潜在的节约成本。 AWS提供了多种类型的EBS卷,从冷HDD硬盘驱动器到配置的IOPS SSD固态硬盘,每种类型都有其各自不同的价格和性能。通过在所有卷上分析读/写能力,您企业可以找到节约成本的机会。

如果一个卷被关联到一个实例,并且几乎没有在该卷上有任何的读取/写入操作,该实例要么是无效的;要么是不必要的卷。这些都可以考虑进行规模调整。

通常,看到通用SSD或配置的IOPS SSD卷几乎很长的一段时间没有任何读/写操作是很典型的。他们可以被降级为吞吐量优化HDD硬盘或冷HDD硬盘卷,以降低成本。

在一个日程安排进度表上停止和启动实例

正如前面所强调的,只要实例是处于运行状态,AWS都将收取费用。相反,如果一个实例处于停止状态,则没有关联到该实例的相关费用。

对于那些24小时全天候运行的实例,根据月份的不同,亚马逊每月将对每个实例收取672至744小时的费用。而如果实例在工作日的下午5点到次日9点之间、以及周末和节假日被关闭,则每月每个实例收取152至184小时的费用,从而每月为您企业节省了488至592小时的费用。

这是一个极端的例子,因为灵活的工作时间和全球化的团队意味着您企业不可能在正常工作时间以外关闭实例。然而,生产之外,您可能会发现许多并不需要真正全天候运行的实例。

最具成本效益的环境能够基于一个日程安排设置来动态地停止和启动实例。每个群集的实例都可以以不同的方式处理。这些开关灯类型的政策往往比RI购买模式更符合成本效益,所以关键是要分析对于这种政策的实施。

专业贴士:为非生产系统每周应该运行的小时数设定一个目标。一家大型出版公司将该目标设定为每周不到80小时,从而帮助他们每月节省了数千美元。

在EC2、RDS和自动优化上购买预留实例

采购预留实例(RI)是一种非常有效的节省成本的技术,但许多企业组织往往都被过多的选项搞得不知所措。

AWS的预留实例让您企业能够充分利用特定的实例类型以换取对您企业计算费用的折扣,以及为保证您企业在未来运行此类型的一个实例的能力而提供容量预留。

预留实例类似于购买的优惠券,无论起是否是全部预付、部分预付、或者没有预付的购买方式,客户均可以应用到正在运行的实例。较之按需购买的价格,预留实例可以为您企业节省高达75%的费用,所以,对于任何持续使用EC2和RDS的企业客户而言,这根本就是想都不用想的。

围绕着预留实例的一个常见的误解是他们不能被修改。这不是真的!一旦购买,预留实例可以以几种不增加额外成本的方法被修改:

在同一区域内切换可用性区

在经典EC2与虚拟私有云之间切换

在同一个系列中改变实例类型 (这包括拆分和合并实例类型)

改变从预留实例采购中获得益处的帐户

通过预留实例采购,最成熟的AWS客户运行超过80%的EC2基础设施。一个最佳的实践方法是不要让这个数字下降到60%以下,以获得最大效率。

一个消费者旅游网站现在通过预留实例运行其超过90%的EC2实例,从而为该公司每年节省了数百万美元。

关键在于不仅要购买预留实例,同时还要不断对其进行修改,以获得最大的价值。

如果预留是闲置或没有得到充分利用,修改意味着预留实例可以包括更大程度的按需使用。这确保了预留实例尽可能有效地操作,保存了利用最大化的机会。

在AWS Redshift和ElastiCache上购买保留节点

EC2和RDS并不是在AWS上使用预订的唯一资产。Redshift和ElastiCache是两项您企业可以预订购买以降低成本的额外服务。

Redshift保留节点的功能类似于EC2和RDS实例,其可以全部预付、部分预付、或1到3年的期限没有预付费用。

ElastiCache预留缓存节点让您企业能够为您想要预留的每个缓存节点选择一个费用较低、一次性付款的方式,并反过来为该缓存节点收到一个显著的每小时收费折扣。

亚马逊ElastiCache提供了三种ElastiCache预留缓存节点类型(轻型、中型和重型利用预留缓存节点),使您企业可以通过有效的小时价格,平衡您付出的预先付款。

充分利用预留节点,可以为您企业的AWS账单带来显著影响。

将对象数据迁移到成本较低的层

AWS以不同的价位和性能水平提供了几个层的对象存储。许多AWS用户倾向于S3存储,但您企业可以通过将旧数据迁移到成本较低的层节省75%以上的成本。

最佳的实践方法是基于其实际使用情况,将数据在不同的存储层之间迁移。例如,罕见访问存储(Infrequent Access Storage)便是长期存储、备份和灾难恢复内容的理想选择,而Glacier则最适合存档。

此外,罕见访问存储类别设置被为对象级别,并可以作为标准存在于同一个存储中。转换与在存储中编辑内容的性质或创建一个生命周期的转换策略以存储类别之间自动转换S3对象一样简单。

如下是一个对AWS当前对象存储产品的快速一览:

专业贴士:最佳的实践做法是,任何存储在S3中超过30天的对象都应该被转换到S3罕见访问。虽然标准存储类的定价是基于在存储中所存储的内容的量而分层的,最低价格为每月每GB 0.0275美元,罕见访问存储则仍然为每月每GB 0.0125美元。

结论

重要的是要记住,这些最佳实践方法并不意味着是一次性的活动,而是持续性的过程。由于云计算的动态性和不断变化的性质,企业用户成本优化的活动最好应不断进行。