侧边栏壁纸
  • 累计撰写 208 篇文章
  • 累计创建 16 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录
AWS

AWS成本优化实践

Wake
2023-03-15 / 0 评论 / 0 点赞 / 1,032 阅读 / 1,529 字

使用AWS已经很久了。看公司每个月账单的时候发现公有云的花费真的挺多的(具体多少不便透露,反正不算小客户了)。我最近研究了下我们的账单,发现有不少的优化空间,起码可以把花销降低一半甚至1/3。这篇文章是我在团队内部分享如何优化公有云花费的一次整理。

成本优化的基本原则

选择合适的EC2模型

EC2有按需实例(用多少时间,给多少钱),预留实例(一次买一年的,不管用多少都得交一年的钱),spot实例(aws从资源池里面空闲的资源,价格非常便宜,但是可能因为资源紧张导致申请机器的时候申请不到)。
关于价格,我用c4x.8large为例,按需/预留/spot的一小时价格分别为 10.844 / 3.871 / 2.7267。

选择EC2模型的参考:

  • 对于7*24小时运行的业务(比如在线服务,数据库应用),购买预留实例最划算。
  • 对于离线业务,采用spot实例最划算。并且跑完任务就自动回收机器最好。
  • 对于短时间的测试等等,可以直接使用预留。

注意新建一个实例的时候不能指定这个机器用预留实例。因为机器买了之后是否匹配到预留实例是由aws作出的决定。并且aws有灵活的转换因子,我举个例子,我提前买了一个m4.8xlarge的预留,并且此时没有实例命中了这个预留,这个时候我买了两台m4.4xlarge的按需实例,那么就会命中m4.8xlarge的预留,一个m4.8xlarge等于两个m4.4xlarge。

选择合适的S3存储

目前新加坡区有5种S3的存储,针对长期和短期的数据提供了不同的方案。

标准存储 0.1755元/GB 月

适合不断频繁访问的热数据。

标准-IA 0.1030029

适用于不常访问但在需要时要求快速访问的数据。标准 – IA 非常适合长期文件存储、来自同步和共享的旧数据、备份数据以及灾难恢复文件。

要求一个文件最小128K,小于128K按照128K收费。

最少存储30天,不足30天按照30天收费。

S3 One Zone-IA 0.08240232

和标准-IA区别是,S3数据只放在单个可用区,如果发生可用区故障会导致数据无法访问。所以适合存储一些备份的副本或者其他易于创建的数据(就算单个可用区故障导致数据丢失,还是可以创建回来)。

128K和30天限制和标准-IA相同。

以基因分析生产线为例,看下应该如何选择存储

  • 配置文件。因为每天访问几十次,所以放标准存储。
  • 生产线日志文件。根据业务方要求,这些文件需要保存三个月用于debug。这些数据也不是特别重要的数据,所以可以用one-zone,然后设置生命周期策略,3个月之后自动删除。
  • 业务方会不定期的来检索这些数据,所以用标准-IA/不频繁访问。
  • 每个开发自己的存储空间,使用标准,且限制最大1T。
  • 测试和内测环境,使用标准,限制最大1T。
  • 批量重跑的结果,因为数据量很大,上百T,并且访问不频繁,所以可以一个月之后放glacier。需要读的时候提前几个小时说即可。

另外,S3提供了一个analytics-storage-class和智能分层技术来帮助我们选择合理的S3存储。

选择合适的EBS

选择合适容量,合理估算。
对于数据库应用,选择SSD提供出色的随机读写性能,对于大数据应用选择HDD,提供出色吞吐量。并不是SSD一定比HDD性能好,需要根据业务选择。
可以用HDD的,就不要用SSD,因为SSD价格是HDD的两倍。
比如搭建测试k8s环境的时候,磁盘统一用HDD,正式环境的磁盘可以用SSD。

优化对外的网络流量

aws对于inbound流量和同一个zone的流量一般是不收费的,但是如果是outbound流量,费用就大了,以S3为例,传出到internet的流量是0.933/G,10个T的数据就是1W,流量比存储贵的多!
尤其是公有云和私有云公用的情况下,这块一定梳理清楚。

监控,度量,改进

把成本作为metric之一监控起来非常有必要,这样每天都可以看到公有云花费增长的趋势,让每个人有一个直观的感受,让每个工程师都开始专注成本,形成一种文化。
具体方案分成两步。首先需要给每个资源打tag,具体参考AWS Tagging Strategies。然后拿到详细的消费表格然后解析把数据存储到Prometheus,然后通过Grafana展示出来。

总结

通过选择合适的EC2,S3,和EBS,同时优化outbound流量可以极大降低成本。最重要的是去度量成本的花费并且监控起来,让大家知道公有云的钱花在哪里了,让团队每个人都去在意这件事情,形成一种文化。

0

评论区