账单和成本优化基础知识
入门指南
简介
使用云托管应用程序和系统时,了解账单模型的运作方式以及如何优化成本非常重要。在云中,可以将固定费用(如数据中心和物理服务器)转换为可变费用,并且仅按实际使用的资源量付费。根据您使用的资源类型,有许多不同的账单维度。这些维度可以是资源运行的时间;存储、传输或处理的数据量;API 调用次数等各种维度。
-
如何查看成本?
了解账单的第一步是能够查看您拥有的资源及其运行成本。AWS 管理控制台中的 AWS 账单控制面板显示当前每月成本的简要概览,以及基于当前运行资源的预测。如果您还不熟悉该控制台,我们建议您阅读 AWS 管理控制台入门教程。账单信息视为敏感信息,因此,最初只有任何 AWS 账户的根用户才能访问控制台的这一部分。如果您无法查看账单控制面板,则需要将访问权限委托给您的 AWS IAM 用户。下面是一个账单控制面板示例,其中显示了当前正在使用的服务及其成本:
虽然账单控制面板提供了成本概览和成本简要明细,但您可能需要更详细地查看成本。可以使用 AWS Cost Explorer 成本管理服务详细查看。您可以在其中查看使用了哪些服务,以及每项服务在每月支出中所占的金额。还有一个显示不同值的图表,可以使用此图表筛选多个不同的维度,例如区域或服务。以下是一个账单控制面板示例:
-
预计支出超过一定数额时,会收到提醒吗?
会!这应该是创建新 AWS 账户首先进行的一项设置。按照《Amazon CloudWatch 用户指南》中的说明,根据总估算费用设置提醒。您可以根据自己的需要,基于多个指标或维度设置其他警报。
-
哪些资源免费?
在 AWS Free Tier 中,客户能够在每项 AWS 服务对应套餐的指定限制内免费探索和试用该服务。Free Tier 包括三种不同类型的产品:12 个月免费套餐、永久免费优惠和短期试用。对于提供 12 个月免费套餐的服务,客户可以在账户创建之日起的一年内免费使用该服务,但不超过指定的限制。对于提供永久免费优惠的服务,只要您是 AWS 的客户,就可以在规定的限制内免费使用该服务。对于提供短期试用的服务,可以在指定的时间内免费使用,或者最多只能使用一次,具体取决于所选的服务。若要查看您当前使用的 Free Tier 资源以及每种资源的使用量,请打开您的 AWS 账户中 Billing(账单)部分下的 Free Tier 控制面板。您将会看到如下图所示的页面:
-
可以每月支付可预测的固定金额吗?
AWS 上的服务通常根据不同的维度(如资源运行时长、处理或传输的数据量和请求数量)按用量来计费。有些服务提供免费套餐,您每月的费用取决于使用的服务组合。如果您要寻求一种具有固定、可预测成本的解决方案,Amazon Lightsail 就是这样一种服务,它提供易于使用的虚拟专用服务器 (VPS) 实例、容器、存储、数据库等,且每月价格实惠。要了解相关示例,请参见有关在 Amazon Lightsail 上部署 WordPress 站点的教程。
-
如何减少每月账单?
您可以通过多种方式减少每月账单。这些方式包括优化您正在使用的实例或数据库数量或大小、 从获得许可的数据库迁移到开源数据库、 根据需求自动纵向扩展/缩减或者将您的服务更改为使用 AWS Lambda 或其他无服务器服务,这些服务在不使用时可缩减至零。另一种方法是关闭无需全天候使用的环境和资源。例如,一周总共有 168 个小时。如果开发人员只在办公时间(上午 8 点至下午 6 点 [10 个小时])使用开发环境,每周七天,将该环境关闭可每周节省 98 个小时(约 58.33%)。若要实施此解决方案,可以查看 AWS 实例调度器,以便按照计划自动关闭实例和数据库。以下各部分将介绍有关以下方面的具体场景:使用 AWS Spot 实例;根据负载自动扩缩;优化网络成本、计算成本和数据库成本。
-
什么是 Spot 实例?
启动 EC2 实例时,该实例称为按需型实例,每秒运行时会产生相关成本。您也可以将实例作为 EC2 Spot 实例启动,这样可以利用 AWS 云中未使用的 EC2 容量。与按需型实例价格相比,Spot 实例可提供高达 90% 的折扣。需要注意的是,由于这一点依赖于未使用的 EC2 服务器容量,因此如果按需型实例激增,服务可能会在某个时刻终止,但系统会在终止前 2 分钟发出警告。这样,您可以完成实例上正在运行的任何请求,然后正常关闭,或将其暂停,直到再次有可用的 Spot 容量。您还可以组合使用不同的 Spot 实例类型,以减少没有足够容量处理请求的可能性,请参见下一部分了解更多信息。
-
根据需求自动扩缩资源
根据当前工作负载纵向扩展/缩减资源使您有足够的容量处理传入的请求。对于 Amazon EC2 实例,可以通过使用自动扩缩并基于 CPU 负载、网络 I/O、请求数量等指标配置扩缩规则来实现。对于可预测峰值的工作负载,例如学校使用的系统,大多数人在早上 7 点登录并开始使用,可以将自动扩缩配置为预测性扩缩,比如在上午 6:50 至下午 6:10 之间按计划扩缩。
如前一部分所述,Spot 实例是降低 EC2 实例成本的另一种方法。使用自动扩缩,可以创建由按需型实例和 Spot 实例组合而成的混合实例集,并可以选择要使用的 Spot 实例。例如,您可以将其配置为使用 m5.large 和 m5.xlarge 类型的 Spot 实例,并附上权重以指示每个实例提供的容量,在本例中,m5.xlarge 的计算量是 m5.large 的两倍,因此为其赋值 2,而为 m5.large 赋值 1,自动扩缩将决定在扩缩时选择哪种类型。选择哪种 Spot 实例的维度可以根据最低价格进行配置,即选择权重定义的单位成本最低的实例,也可以根据容量优化进行配置,即选择当前 Spot 容量最大的实例类型,从而减少工作负载中断的几率。
如果您在应用程序中使用 Lambda 函数,那么有一个开源工具 AWS Lambda Power Tuning(托管在 GitHub 上),可以帮助您使用不同的 Lambda 配置测试代码,以找到最佳的性价比组合。
-
优化计算成本
成本优化的一个良好起点是根据 EC2 实例或 Lambda 函数的处理量分析它们的大小。不同的 EC2 实例类型针对不同的工作负载进行了优化,例如高频 CPU、高内存容量、快速 NVME SSD 本地存储、连接 GPU 进行机器学习和高网络吞吐量。例如,如果您发现您的工作负载占用大量 CPU,则相比于 M5 通用实例,使用 C5 系列实例可能会更便宜。相反,如果您发现 CPU 使用量仅为周期性峰值,则可突增 T 系列实例可能更适合您的工作负载。要开始优化计算,您可以使用 AWS Compute Optimizer 分析正在运行的工作负载以提出建议。
-
优化数据传输成本
在 AWS 区域之间、可用区 (AZ) 之间或 AWS 与互联网之间传输数据会产生相关成本。您可以通过优化网络架构设计,以按最佳路线传输流量来降低这部分成本。如果您正在对 AWS 服务(如 Amazon S3 或 Amazon ECR)进行任何调用,第一步是查看 VPC 端点。通过在 VPC 中创建 VPC 端点,您对受支持 AWS 服务的调用将通过该端点路由,并一直在 AWS 网络内,而不是从 VPC 调用到互联网,然后再返回到 AWS 网络。这将有助于避免网络出站成本。
下一步是优化基础设施之间的调用。在跨多个 AZ 部署以实现弹性时,可以使用可用区关联性确保在每个可用区内尽可能多地路由调用。如果您的应用程序使用 Amazon RDS 支持的数据库,可以创建只读副本,这样可以在同一个可用区内使用只读副本进行所有读取调用。
-
优化数据库成本
要开始优化数据库成本,您可以部署额外的只读副本,分流仅读取数据的主数据库中的查询。这将释放处理所有数据更改(更新、插入和删除)的主节点上的容量。这将有助于优化到需要随着负载波动而开始纵向扩展/缩减数据库实例的程度。您可以更改 Amazon RDS 数据库的实例大小,但需要在更改实例类型时使数据库离线。如果您的应用程序需要持续的正常运行时间,则有必要使用 Amazon Aurora,它是一种关系数据库服务,将高端商业数据库的速度和可用性与开源数据库的简单性和经济高效性集于一身。Aurora 与 MySQL 和 PostgreSQL 完全兼容,支持现有应用程序和工具无需修改即可运行。Amazon Aurora Serverless 是 Aurora 的一种按需、可扩展配置,数据库可自动启动、关闭以及根据应用程序的需求纵向扩展/缩减容量。
-
如何优化固定工作负载
如果您尽力优化了工作负载后,有固定的最低负载需要支持,有必要考虑注册节省计划。节省计划是一种灵活的折扣模式,可提供与预留实例相同的折扣,但需要承付在一年或三年内使用特定量(以每小时美元计算)的计算能力。节省计划有两种形式:
计算类节省计划提供最大的灵活性,有助于将成本降低高达 66%(就像可转换预留实例一样)。这种计划自动应用于任何 EC2 实例,而不考虑区域、实例系列、操作系统或租赁,包括属于 Amazon EMR、Amazon ECS 或 Amazon EKS 集群的实例。例如,您可以从 C4 实例转移到 C5 实例,将工作负载从都柏林移至伦敦,或者从 EC2 迁移到 AWS Fargate,在此过程中,无需执行任何操作即受益于节省计划的价格。
EC2 实例节省计划只适用于区域内的特定实例系列,并提供最大的折扣(与标准预留实例相同,高达 72%)。与预留实例相同,您的节省计划涵盖了整个区域内相同实例类型的不同大小(如 c5.4xlarge 或 c5.large)的使用量。您甚至可以从 Windows 切换到 Linux,同时持续享受折扣,而无需对节省计划进行任何更改。
-
帮助成本优化的工具和服务