38、AWS成本规划、跟踪与控制全攻略

AWS成本规划、跟踪与控制全攻略

一、数据查看与报告生成

在AWS环境中,当你有多个服务运行时,你会希望深入分析数据。你可以调整视图,通过分组或服务等条件进行过滤,也能将数据下载为CSV文件。点击“新建报告”,你可以打开报告模板,像预留实例(RI)利用率或RI覆盖率报告(当然,这仅在你购买了预留实例时才有意义)。

二、AWS成本和使用报告

乍一看,从计费仪表板访问的成本和使用报告的内容与成本探索器有些重叠,因为它们都提供有关计费成本、费率以及产品和定价属性的数据。然而,报告的独特价值在创建报告过程的交付选项页面中有所体现。在那里,你可以选择启用对Athena、Redshift和QuickSight的支持。Athena能让你使用SQL高效查询数据;Redshift是处理大量数据的强大工具;而Amazon QuickSight则是按会话付费的从数据存储中提取商业智能的工具。

AWS报告适用于业务繁忙、难以跟踪众多动态部分的账户。通过其规范化的数据模型,报告将离散的成本组件组织在各个列中,针对此类分析进行了优化。报告被配置为定期写入你账户中已添加适当权限的S3存储桶,创建报告对话框中提供了示例存储桶策略。

三、AWS可信顾问

从主AWS服务菜单访问可信顾问仪表板,你可以快速了解你的账户配置与AWS最佳实践的符合程度。合规性和健康数据分为以下五个类别:
| 检查类别 | 检查内容 |
| — | — |
| 成本优化 | 检查未充分利用或运行但闲置的资源,这些资源可能会让你产生不必要的费用。 |
| 性能 | 检查配置不匹配的情况,例如过度使用EBS磁碟卷,这可能会不必要地影响性能。 |
| 安全性 | 检查潜在的易受攻击的配置,如开放的S3存储桶权限或安全组。 |
| 容错能力 | 检查适当的复制和冗余配置,以确保单个服务故障不太可能导致灾难性损失。 |
| 服务限制 | 检查你对AWS服务的使用情况,确保你没有接近默认限制。 |

每个检查的结果都有颜色编码,告诉你是否合规,并附有问题的详细描述。有时,对于需要开放权限的S3存储桶托管的静态网站,你可能会选择忽略警告。但定期查看可信顾问,了解是否有新问题出现仍然很重要。需要注意的是,访问可信顾问的大多数指标需要将支持升级到商业或企业计划。

四、在线计算器工具

为多个资源栈进行成本建模的一个有效方法是收集全面的定价信息,并据此计算栈中每个元素的价格。但考虑到单个栈中服务和价格水平的排列组合数量之多,以及价格变化的频繁程度,准确的成本建模可能会变得极其复杂。幸运的是,AWS提供了简单月度计算器。

简单月度计算器

简单月度计算器(http://calculator.s3.amazonaws.com/index.html)允许你详细选择服务资源(例如,在us-east-1区域,选择基于Linux m4.large实例类型构建的3个EC2实例,搭配一个500GB预配置IOPS SSD EBS卷,设置为1000 IOPS)。你还可以输入实例预计实际运行的月份比例。截至目前,AWS计划弃用简单月度计算器,并用AWS定价计算器(https://calculator.aws/#)取而代之。不过,旧的计算器仍然可用,而且在某些人看来,它比新版本更实用,且尚未确定具体的停用日期。

由于AWS不同区域的成本可能不同,所以要确保在每个适合你应用的区域对资源进行定价。不同的EBS和RDS存储类型也是如此,要探索SSD、预配置IOPS等存储类型的定价。当你输入项目将使用的所有相关服务的栈资源后,估计的月度账单将显示在页面顶部的标签中。点击该标签,你将获得栈月度成本的详细分项明细,还能以CSV格式下载。保存估计值会生成一个URL,可与同事或客户分享。

下面通过一个练习来展示如何在简单月度计算器中构建自己的栈:
1. 访问http://calculator.s3.amazonaws.com/index.html开始新的计算。如有必要,点击“全部重置”,并取消选择顶部的“免费使用层”框。
2. 在us-west-2(俄勒冈)区域,点击左侧的“Amazon EC2”标签,然后点击“添加新行”旁边的加号。选择两个运行在Linux c5d.xlarge实例类型上的实例,每周运行120小时(5天),计费选项保持为“按需计费”。
3. 添加两个每个100GB的通用EBS卷,并在“数据传输”部分添加200GB的数据传入和400GB的数据传出。你可以随时点击顶部的“估计”标签查看结果。
4. 再次点击“服务”标签,点击左侧的“Amazon S3”链接。输入200GB的存储、250000个PUT请求和1000000个GET请求用于S3标准存储和请求。输入600GB的存储,并使用10个生命周期转换用于S3标准 - 低频访问(S3 Standard-IA)存储和请求。
5. 在“Amazon CloudFront”标签中输入每月400GB的数据传出量。
6. 在“Amazon弹性负载均衡”标签中,输入应用程序负载均衡器数量为1,每个ALB的平均新连接数/秒为5,平均连接持续时间为300秒,每个ALB处理的总数据量为400GB。
7. 查看“估计”标签中的详细账单。仅供参考,此次计算的总费用约为每月320美元。

五、计算资源成本优化

虚拟化革命使得服务器密度大幅提高成为可能,即你可以在一台服务器的物理资产上运行比以往更多的计算工作负载。遵循AWS最佳实践有助于充分利用你的资产。接下来,我们将探讨如何充分发挥AWS基础设施的价值,包括选择最适合工作负载的EC2实例类型,以及更深入地了解预留实例和现货实例的有效使用方法。

最大化服务器密度

无论是运行在EC2上的应用程序,还是使用AWS关系数据库服务(RDS)的数据库,选择合适的实例类型对于提高性能和降低总体成本都至关重要。例如,M5实例类型系列针对英特尔至强可扩展处理器的高核心数进行了优化,你可以将多个资源密集型工作负载整合到一个高端M5实例(如m5.24xlarge类型)上,从而可能减少总体实例数量。同样,单个P2实例的高性能并行处理NVIDIA K80 GPU核心、增强的网络和默认的EBS优化功能,通常可以替代其他系列的多个实例,适用于高需求的分析和机器学习工作负载。

每个EC2实例类型的独特功能可在http://aws.amazon.com/ec2/instance-types上查看详细比较。此外,Amazon现在提供了AWS计算优化器服务。启用该服务后,计算优化器将分析你账户中过去14天内运行的所有计算资源,识别改进之处和潜在的节省成本机会。该服务的成本仅为你正常的持续计算和相关CloudWatch费用。

AWS Lambda也提供了一种服务器密度,虽然运行Lambda函数并没有节省你的服务器资源,但通过“无服务器”模型,你确实从计算成本中获得了更多价值。容器技术(如Docker)则充分体现了虚拟化的灵活性。无论是在Amazon的弹性容器服务上运行Docker集群,使用Amazon Elastic Container Service for Kubernetes(Amazon EKS),还是手动将自己的EC2实例配置为Docker主机,你都能将虚拟应用程序或微服务紧密地部署到主机硬件的各个角落。

EC2预留实例

在之前的学习中,你了解到为至少持续12个月的全天候计算需求购买预留实例(RI)。下面我们进一步探讨一些细节,帮助你做出更明智、更有效的选择。

  • 传统预留实例的使用
    基本操作很简单,你可以通过购买预留实例让AWS为你预留低成本的长期计算容量(实际上,你并非购买了“预留实例”本身,而是购买了以折扣价格使用常规EC2实例的权利)。你也可以通过Amazon EC2预留实例市场购买实例,在这个市场中,你可以接管其他AWS用户因使用计划变更而剩余的预留实例。就像启动普通EC2实例一样,你需要选择符合你配置要求的RI,包括租期(默认或专用)、实例类型和平台(从Linux、SUSE、Red Hat Enterprise Linux [RHEL]、Microsoft Windows Server和Microsoft SQL Server等操作系统中选择)。

你能节省的费用以及获得的灵活性取决于你前期的决策。例如,你可以多支付一些费用购买可转换RI,只要新实例的价值等于或大于原实例,你就可以在以后更换实例。可转换RI比按需实例最多可节省54%的费用。标准RI比按需实例最多可节省75%的费用,但在整个期限内,你将被锁定在最初选择的实例配置上。

你可以选择指定单个可用区,或者支付额外费用以保持在所选区域内的任何可用区运行RI的灵活性。你还可以安排RI在指定的重复时间窗口内启动,通过EC2仪表板中的“计划实例”链接(而非常规的“预留实例”链接)按计划购买。最后,你可以使用以下三种付款选项之一支付RI费用:全额预付(价格最低)、部分预付和无预付(按小时计费)。

  • 使用节省计划
    EC2付款选项中新增了两种购买方式,即节省计划。节省计划与RI类似,你需要承诺在一到三年的时间内持续使用服务,但它提供了更大的灵活性。节省计划有两种类型:
    • 计算节省计划 :对于任何EMR、ECS、EKS或Fargate工作负载,比按需实例最多可节省66%的费用(相当于可转换RI),允许你在任何AWS区域的受支持资源之间进行切换。
    • EC2实例计划 :比按需实例最多可节省72%的费用(相当于标准RI),但使用变更限制在单个AWS区域内。

在这两种情况下,你将获得高达初始每小时承诺用量(例如每小时10美元)的覆盖。节省计划不会用于支付已通过有效RI支付的资源费用。

EC2现货实例

你之前也了解过EC2现货实例,即短期“租赁”的EC2实例,它们以极低的价格提供,但生命周期不稳定且可能会被强制关闭。下面我们详细了解一些相关定义:
- 现货价格 :给定一组启动规格(类型、区域和配置文件值)的现货实例的当前市场价格。现货价格可能会毫无预警地上涨或下跌,有时会导致正在运行的实例关闭。
- 现货实例中断 :当现货价格超过你设定的最高价格时,EC2有三种反应方式供你选择:终止(永久删除所有相关资源和卷)、停止(仅在使用EBS支持的AMI时可用)和休眠。
- 现货实例池 :所有符合特定启动规格的未使用EC2实例。现货舰队从匹配的现货实例池中获取实例。
- 现货舰队 :一组为满足现货舰队请求而启动的现货实例(有时包括按需实例)。现货舰队可以由使用多个启动规格、从多个现货实例池获取的实例组成。
- 请求类型 :在“请求现货实例”页面配置请求时,你可以选择三种请求类型:一次性实例请求、请求并维护(使用舰队维护目标容量)和按持续时间预留(请求在1到6小时内不间断运行的实例)。

你可以从EC2仪表板配置现货实例请求。在“请求现货实例”页面,你可以设置总目标容量(你希望运行的最大实例数或vCPU数)、要启动的AMI和实例类型、是否要纳入负载均衡,以及在启动实例时要传递给实例的任何用户数据。你可以使用为任务构建的私有AMI,或者传递用户数据(就像你在之前的练习中所做的那样)来定义工作负载。

下面通过一个练习展示如何使用AWS CLI请求一个简单的现货舰队:
1. 在使用AWS CLI启动现货请求之前,你需要从AWS账户中收集一些信息。从EC2启动实例对话框的“快速启动”标签中,复制例如Ubuntu LTS AMI的AMI ID并保存,后续会用到。
2. 从VPC仪表板中,点击左侧的“子网”链接,记录VPC中两个子网的子网ID(默认VPC应该就可以)。在VPC仪表板中,点击“安全组”,记录适合你的现货实例所需权限的安全组的组ID。由于这只是一个简单的演示,任何组都可以。如果没有现有的组,可以创建一个新组。
3. 现在你需要创建一个IAM角色,该角色将授予现货管理器启动和停止EC2实例的权限。从IAM角色页面,点击“创建角色”,选择“AWS服务”,选择“EC2”,然后选择“EC2 - 舰队”,接着点击“下一步”。
4. 在下一个屏幕上,选择“AWSEC2FleetServiceRolePolicy”并点击“创建角色”。在IAM角色列表中找到你的新角色,点击它并复制其ARN。
5. 完成上述操作后,创建一个Config.json文件,内容如下(使用你账户中的正确值):

{
    "SpotPrice": "0.04",
    "TargetCapacity": 2,
    "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
    "LaunchSpecifications": [
        {
            "ImageId": "ami-1a2b3c4d",
            "SecurityGroups": [
                {
                    "GroupId": "sg-1a2b3c4d"
                }
            ],
            "InstanceType": "t2-micro",
            "SubnetId": "subnet-1a2b3c4d, subnet-3c4d5e6f"
        }
    ]
}
  1. 运行以下CLI命令指向你刚刚创建的Config.json文件:
aws ec2 request-spot-fleet --spot-fleet-request-config file://Config.json
  1. AWS CLI可能会报告错误,因此请仔细阅读消息并找出问题所在。当命令仅返回一个类似以下示例的现货舰队ID时,你就知道请求成功了:
{
    "SpotFleetRequestId": "sfr-6b8225fe-b6d2-4c58-94d7-d14fdd7877be"
}
  1. 仅获得现货舰队ID并不意味着一切都正常运行。你应该前往EC2仪表板的“现货请求”页面,选择你的舰队条目,点击页面下半部分的“历史记录”标签,查看消息。如果出现任何错误,请进行纠正,如有必要,取消请求并使用更正后的配置重新发起请求。
  2. 完成使用后,别忘了关闭你的资源。
自动扩展

你已经了解到如何使用自动扩展来有效增加计算资源以满足需求。但不要忘记,自动扩展配置还应设置为在需求下降时缩减实例数量。你可以通过配置扩展器,当运行实例的平均使用率低于设定阈值时,减少实例组的大小。这样做可以显著降低成本,也是整个云计算模型的最大优势之一。

弹性块存储生命周期管理器

EC2实例附带的EBS卷通过复制得到了很好的保护,但就像所有技术一样,不能保证不会出现问题。最佳实践一直是通过创建快照来备份卷,但每隔几小时添加一个新快照,随着时间的推移,可能会产生相当可观的存储成本。

显而易见的解决方案是删除旧的快照,只保留较新的副本。然而,你可能不会经常手动执行此操作,因此自动化是更好的选择。通过EC2仪表板访问的EBS生命周期管理器允许你创建一个轮换策略,设置新快照的创建频率和你希望保留的最大快照数量。

通过以上介绍,你可以全面了解AWS环境中成本规划、跟踪和控制的方法,以及如何优化计算资源的使用,从而在满足业务需求的同时,最大程度地降低成本。

AWS成本规划、跟踪与控制全攻略

六、总结与关键要点回顾

在AWS的使用过程中,成本管理是一个至关重要的环节。以下是对前面所介绍内容的关键要点总结:

  1. 预算与成本跟踪

    • 可以创建AWS预算来监控账户的全部或选定区域的使用情况,并在成本接近指定阈值时发出警报。利用成本分配标签能更高效地将预算聚焦于运行资源的子集。
    • 成本探索器和成本与使用报告都可用于跟踪历史计费成本、费率和产品属性,但成本与使用报告更适合大规模运营所需的大数据分析。
    • AWS组织可用于整合单个所有者所属多个账户的计费和访问管理管理。
  2. 资源优化

    • 选择合适的EC2实例类型,并在适当情况下运行容器工作负载,是最大化服务器资源使用并降低成本的有效方法。
    • 对于EC2预留实例,可选择可转换RI以获得更大的长期灵活性,并安排预留可用性以满足重复时间段的需求。
    • 现货实例可以单独请求或作为舰队请求,并可根据特定应用需求设置对关闭的反应方式。
  3. 工具利用

    • AWS可信顾问可监控和报告账户配置状态与最佳实践和账户限制的符合情况。
    • 简单月度计算器和AWS总体拥有成本计算器是帮助你找到最具成本效益和高效构建应用程序栈的重要工具。

下面通过一个mermaid流程图来展示整个成本管理的主要流程:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始成本管理]):::startend --> B(设置预算和标签):::process
    B --> C{选择成本跟踪工具}:::decision
    C -->|成本探索器| D(跟踪历史成本):::process
    C -->|成本与使用报告| E(进行大数据分析):::process
    D --> F(资源优化):::process
    E --> F
    F --> G{选择实例类型}:::decision
    G -->|EC2预留实例| H(优化预留策略):::process
    G -->|EC2现货实例| I(配置现货请求):::process
    H --> J(使用AWS工具辅助):::process
    I --> J
    J --> K(自动扩展和EBS管理):::process
    K --> L([结束成本管理]):::startend
七、实际应用案例分析

为了更好地理解上述成本管理方法在实际中的应用,下面通过一个具体案例进行分析。

假设一家初创公司计划在AWS上部署一个基于Web的应用程序,该应用程序需要处理大量的用户请求和数据存储。公司的目标是在满足业务需求的前提下,尽可能降低成本。

  1. 前期规划

    • 成本预算 :公司首先创建了一个AWS预算,设定了每月的成本上限,并使用成本分配标签将预算聚焦于应用程序相关的资源。
    • 资源选型 :通过简单月度计算器,公司对不同的实例类型和存储配置进行了成本估算。最终选择了M5实例类型系列,因为它们针对高核心数进行了优化,适合处理大量用户请求。同时,选择了S3标准存储和S3标准 - 低频访问存储来满足数据存储需求。
  2. 资源部署与优化

    • 预留实例 :考虑到应用程序的长期稳定运行,公司购买了一部分标准RI,以获得最大的成本节省。同时,为了保持一定的灵活性,还购买了少量的可转换RI。
    • 现货实例 :对于一些非关键的任务,如数据处理和备份,公司使用了EC2现货实例。通过合理配置现货请求,确保在价格合适时获取实例,并设置了适当的中断反应方式,以避免数据丢失。
    • 自动扩展 :配置了自动扩展组,根据用户请求的流量自动调整实例数量。当流量高峰时,自动增加实例;当流量低谷时,自动减少实例,从而降低成本。
  3. 持续监控与调整

    • 成本跟踪 :使用成本与使用报告和AWS可信顾问定期监控成本和账户配置状态。通过分析报告,及时发现并解决潜在的成本问题。
    • 资源优化 :根据业务需求的变化,不断调整实例类型和存储配置。例如,随着数据量的增加,将部分数据迁移到S3标准 - 低频访问存储,以降低存储成本。

通过以上的成本管理策略,该初创公司成功地在满足业务需求的前提下,将AWS成本控制在预算范围内,并实现了资源的高效利用。

八、未来趋势与展望

随着云计算技术的不断发展,AWS的成本管理也将面临新的挑战和机遇。以下是一些可能的未来趋势:

  1. 人工智能与机器学习的应用 :AWS可能会引入更多基于人工智能和机器学习的成本管理工具,通过对历史数据的分析和预测,帮助用户更精准地规划成本和优化资源。
  2. 绿色云计算 :随着环保意识的增强,AWS可能会推出更多支持绿色云计算的功能,鼓励用户使用可再生能源的资源,同时降低成本。
  3. 混合云与多云环境的成本管理 :越来越多的企业采用混合云或多云环境,AWS可能会提供更强大的工具来管理跨云环境的成本,实现资源的统一调度和优化。

总之,AWS成本管理是一个不断发展和完善的领域。用户需要密切关注最新的技术和趋势,不断学习和实践,以实现更高效的成本控制和资源利用。

通过本文的介绍,你已经对AWS环境中的成本规划、跟踪、控制以及计算资源优化有了全面的了解。希望这些信息能帮助你在实际应用中更好地管理成本,实现业务的可持续发展。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值