Amazon EC2

亚马逊弹性云计算(英语:Amazon Elastic Compute Cloud,简称Amazon EC2)是亚马逊的云计算平台 Amazon Web Services(AWS)的组成部分,允许用户租用虚拟机来运行自己的应用程序。用户通过Web服务启动 Amazon Machine Image(AMI)以配置虚拟机(亚马逊称其为“实例”),可按需创建、启动和终止实例,并按运行时长(最低以秒计)付费这也是名称中“弹性”的由来。EC2 将资源划分为相互隔离的区域和可用区,用户可控制实例所在的地理位置,以优化延迟、提高冗余与可用性。

EC2 于2006年8月开放有限测试,2008年10月退出测试进入正式生产,此后持续增加实例类型、操作系统支持与配套服务。其底层平台从最初的 Xen 半虚拟化演进到将网络与存储卸载至专用硬件的 AWS Nitro System;AWS 还为 EC2 推出自研的 Arm 架构处理器 AWS Graviton 系列,以及面向机器学习的 Inferentia、Trainium 等加速器,并提供可运行 macOS 的 Mac 实例。围绕计算实例,EC2 还提供 Amazon Elastic Block Store(EBS)持久性块存储、弹性 IP 地址、Auto Scaling 自动伸缩和 Amazon CloudWatch 监控等功能。

EC2 提供多种计费与购买方式,包括按需实例、预留实例、Spot 实例和 Savings Plans 等,并通常与多可用区部署、负载均衡和自动伸缩配合以提高可用性。不过,AWS 美国东部等区域曾多次发生重大服务中断(例如2011年、2021年和2025年的事件),影响了大量依赖 EC2 的网站和服务。

历史
据媒体报道,EC2 的早期开发与亚马逊在南非开普敦的团队有关。克里斯·平卡姆是 EC2 项目创始人之一,并从开普敦参与开发;克里斯托弗·布朗也被描述为项目创始成员、架构师和首席开发者;威廉·范比尔容后来加入,并曾领导 EC2 开发团队。 亚马逊于2006年8月25日宣布 Amazon EC2 开放有限测试。AWS 的发布博客将 EC2 描述为一种可通过 Web 服务调用启动 Amazon Machine Image(AMI)的虚拟计算环境;当时的测试版实例提供相当于 1.7 GHz Xeon 处理器的虚拟 CPU、1.75 GB 内存、160 GB 本地磁盘和 250 Mbit/s 网络带宽,价格为每小时0.10美元,并使用 Xen 虚拟机监视器构建。
2006年至2009年:基础功能成型
2007年10月16日,Amazon EC2 新增 Large 和 Extra Large 两种实例类型;此前单一规格的实例类型则被称为 Small。 2008年3月27日,亚马逊增加了静态 IP 地址、可用区和由用户选择的内核。2008年5月29日,AWS 又新增 High-CPU Medium 和 High-CPU Extra Large 两种实例类型,面向 CPU 密集型应用。 2008年8月20日,亚马逊新增 Elastic Block Store(EBS),提供了持久性存储。 2008年10月23日,Amazon EC2 去除测试标签,进入正式生产状态,并公布 EC2 的服务级别协议、Windows 和 SQL Server 的测试版支持,以及负载均衡、弹性伸缩和云监控服务计划;这些功能随后于2009年5月18日加入。

2010年至2017年:专用实例与 Nitro
2010年11月,AWS 推出 Cluster GPU Instance(cg1.4xlarge),配备两块 NVIDIA Tesla M2050 GPU 和 10 Gbps 网络,面向 GPGPU、高性能计算、渲染和媒体处理等工作负载。 2016年9月,AWS 又发布 P2 GPU 实例,最高支持16块 NVIDIA Tesla K80 GPU,面向大规模机器学习、深度学习、计算流体力学、分子建模和计算金融等工作负载。 2017年发布 C5 实例时,AWS 描述了 EC2 从 CC1、C3、C4 到 C5 的硬件卸载演进路径;C5 使用新的 hypervisor,并将联网和 EBS 处理交由硬件加速。AWS 后来将这一架构称为 AWS Nitro System,并称其为所有现代 EC2 实例的底层平台。

2018年至今:自研芯片与新型工作负载
AWS 还逐步将自研的 Arm 架构处理器 AWS Graviton 用于 EC2。2018年11月,首代 Graviton 随 A1 实例推出;2019年12月,Graviton2 随 M6g、M6gd、C6g、C6gd、R6g 和 R6gd 实例公布。 2021年11月,Graviton3 随 C7g 实例首次推出;AWS 于2022年5月宣布 C7g 普遍可用,并称 Graviton3 较 Graviton2 最高提供25%的计算性能提升。 2022年11月,面向 Hpc7g 和 C7gn 的 Graviton3E 被公布。

2020年11月,AWS 推出 EC2 Mac 实例,使开发者可在 EC2 中按需运行 macOS 工作负载,最初实例基于 Intel Mac mini 并通过 Nitro System 接入 EC2。 AWS 官方 Mac 实例页面列出的 Apple silicon 机型后来扩展到 M1、M2、M3 Ultra、M4、M4 Pro 和 M4 Max 等。 在 AI 和机器学习方面,EC2 也加入了更多专用加速器。AWS Inferentia 芯片用于 EC2 Inf1 实例,Inferentia2 驱动的 Inf2 实例面向更复杂的模型推理和分布式推理;AWS Trainium 则是面向大规模 AI 训练和推理的自研 AI 芯片。

实例类型
Amazon EC2 在2006年公开测试时采用名为 Xen 的虚拟机监视器,并向用户提供可按需启动的虚拟计算环境。

AWS 随后逐步将 EC2 的网络和存储虚拟化功能从传统 hypervisor 路径卸载到专用硬件。2017年发布 C5 实例时,AWS 表示 C5 引入了新的 hypervisor,并通过硬件实现联网和存储功能;C5 需要包含 Elastic Network Adapter(ENA)和 NVMe 驱动的 HVM AMI,也不再需要或支持 Xen 半虚拟化网络与块设备驱动。它将虚拟化功能拆分并卸载到专用硬件和软件,也使 AWS 能够提供裸机实例,让客户自带 hypervisor 或不使用 hypervisor。

AWS 按实例的计算、内存、存储和联网能力将 EC2 实例类型组织为不同实例族,用户可根据应用程序或软件的需求选择实例类型。 实例类型名称由实例族和实例大小组成,族名中的首字母通常表示系列,例如 C 表示计算优化型、M 表示通用型、R 表示内存优化型,数字表示代际,后缀可表示处理器或能力选项。 根据 AWS 官方实例类型页面,EC2 实例类型按用途主要分为以下类别;下列实例族仅为示例,不同 AWS 区域和可用区支持的实例类型不完全相同。

  • 通用型(例如 M8g、M8i、M7i、M6i、T4g、T3 等):在计算、内存和联网资源之间提供均衡配置,适用于 Web 服务器、代码仓库和中小型数据库等多种工作负载。
  • 计算优化型(例如 C8g、C8i、C7i、C6i、C6g、C5 等):面向受计算能力限制、可受益于高性能处理器的应用,例如批处理、媒体转码和专用游戏服务器。
  • 内存优化型(例如 R8g、R8i、R7i、R6i、X8g、U7i 等):用于需要在内存中处理大型数据集的工作负载,例如内存数据库、数据分析和企业应用。
  • 加速计算型(例如 P6-B200、P5、G6、G6f、Inf2、Trn2、F2 等):使用硬件加速器或协处理器更高效地执行特定功能,例如浮点运算、图形处理、机器学习推理和训练等任务。
  • 存储优化型(例如 I8g、I7i、I4i、D3、Im4gn、Is4gen 等):面向需要在本地存储上对大型数据集进行高吞吐、低延迟随机 I/O 访问的工作负载,例如高吞吐数据库、数据处理和数据流应用。
  • 高性能计算优化型(例如 Hpc8a、Hpc7g、Hpc7a、Hpc6a 等):面向大规模高性能计算(HPC)工作负载,例如复杂模拟、深度学习和视觉特效渲染。

AWS 文档列出的 EC2 计费与购买选项包括:

  • 按需实例:按启动实例的使用时长付费,不需要预付款或长期承诺。
  • Savings Plans:承诺在一或三年期限内按每小时固定美元用量使用 AWS 资源,以降低相对于按需价格的费用。
  • 预留实例:承诺在一或三年期限内使用特定实例配置,包括实例类型和区域,以降低费用。
  • Spot 实例:请求使用 AWS 云中未使用的 EC2 容量,可显著降低成本,但适用于可中断或运行时间较灵活的应用。Spot 价格被称为基于供需关系;然而,2011年的一项研究认为,该价格通常并非为出清市场而设定,而是由未公开的保留价格主导。
  • Dedicated Hosts:为完全专供用户使用的物理 EC2 服务器付费,可用于使用既有的按插槽、按核心或按虚拟机授权的软件许可证。
  • Dedicated Instances:按小时为运行在单租户硬件上的实例付费。
  • Capacity Reservations:在特定可用区预留 EC2 实例容量;EC2 Capacity Blocks 可用于提前预留一组 GPU 实例,供机器学习工作负载使用。

成本
截至2026年6月,EC2 的费用因区域、操作系统、实例类型、购买选项、运行时长和附加资源而异。AWS 的按需价格说明称,按需实例可按小时或按秒(最低60秒)为计算容量付费,不需要长期承诺;Linux、Windows 等若干系统的按需实例按秒计费。 AWS 的价格说明还列出,数据传输、公有 IPv4 地址、EBS、Elastic Load Balancing 和 CloudWatch 等项目可能另行计费。

预留实例
EC2 预留实例(Reserved Instances)不是实体实例,而是应用于账户中匹配按需实例用量的账单折扣。预留实例按实例类型、区域、租户属性和平台等变量定价,期限为一年或三年;购买时可选择全额预付、部分预付或无预付。

AWS 将预留实例分为 Standard 和 Convertible 两类。Standard 预留实例通常折扣较高但不能交换,Convertible 预留实例可在期限内交换为具有不同属性的另一项 Convertible 预留实例。预留实例还可按区域或可用区确定范围:区域预留实例不保留容量,但折扣可应用于该区域内任一可用区的匹配用量;可用区预留实例则在指定可用区保留容量。 AWS 的价格页面称,Standard 预留实例相对于按需实例最高可节省72%,Convertible 预留实例最高可节省66%。

Spot 实例
Amazon EC2 Spot 实例使用 AWS 云中暂未使用的 EC2 容量,价格低于按需实例;AWS 产品页称其相较按需价格最高可低 90%。Spot 实例价格由 Amazon EC2 设置,并根据 Spot 实例的长期供需情况逐步调整。

Spot 实例适用于可中断、无状态、容错或运行时间较灵活的工作负载,例如数据分析、批处理、后台处理、容器化工作负载和高性能计算。当 Amazon EC2 需要收回容量时,Spot 实例可能被终止、停止或休眠,并在中断前提供约两分钟通知;AWS 还可在实例中断风险升高时发出再平衡建议。

AWS 文档列出的 Savings Plans 包括 Compute Savings Plans、Database Savings Plans、EC2 Instance Savings Plans 和 SageMaker AI Savings Plans。与 EC2 直接相关的 Compute Savings Plans 可跨实例系列、大小、区域、操作系统和租户属性应用于 EC2 用量,也可应用于 Fargate 和 Lambda;EC2 Instance Savings Plans 则要求承诺某一区域内的特定 EC2 实例系列,但可在该系列内跨实例大小、操作系统和租户属性应用。Savings Plans 不提供容量预留,也不适用于 Spot 用量或已由预留实例覆盖的用量;AWS Cost Explorer 可生成购买建议并展示历史用量。 选择 AMI 时,用户通常需要考虑操作系统(如 Linux 或 Windows)、架构、根卷类型、提供方和附加软件;AWS 文档还列出 Amazon Linux 2023、Ubuntu、Red Hat Enterprise Linux 和 Windows Server 等操作系统相关资源。

2006年8月公开测试时,EC2 服务提供 Linux AMI。 2020年11月30日,亚马逊宣布将 macOS 加入 EC2 服务,最初支持在 Mac Mini 上运行的 macOS Mojave 和 macOS Catalina。 Amazon Linux 2 是 AWS 的 Linux 操作系统,设计目标是为 EC2 上的应用提供稳定、安全和高性能环境,并包含便于与 AWS 集成的软件包;AWS 文档称 Amazon Linux 2023(AL2023)是其后继版本,建议从其他 Linux 发行版迁移到 AL2023。

Amazon Linux 2023 是 Amazon Linux 的第三代版本,也是 Amazon Linux 2 的后继版本。AWS 将其描述为面向云和企业应用的通用 RPM 系 Linux 发行版,提供长期支持;AL2023 AMI 和容器镜像默认锁定到特定的软件包仓库版本,以提供确定性更新。 AWS 文档还称,AL2023 有独立于 Fedora 的发布和支持生命周期,GA 版本包含来自 Fedora 34、35 和 36 的组件,也有部分组件更接近 CentOS Stream 9 或由 AWS 独立开发;其内核来自 kernel.org 的长期支持内核选项。 截至2026年6月,AWS FAQ 列出 Amazon Linux 2 支持至2026年6月30日,AL2023 支持至2029年6月。 2012年11月,AWS Marketplace 增加了 FreeBSD、Debian 和 CentOS 三种开源操作系统;AWS 当时称这些系统由开源社区直接提供,除通常的 EC2 实例费用外不另收费。 其中 FreeBSD/EC2 平台早期由 FreeBSD 开发者兼安全官科林·珀西瓦尔维护。

持久性存储
EC2 实例启动时,可为其启动磁盘或“根设备”选择两种存储类型之一。第一种选项是使用本地“实例存储”磁盘作为根设备(最初这是唯一选择)。第二种选项是使用 EBS 卷作为根设备。实例存储卷属于临时存储,在 EC2 实例重启后仍会保留;但当实例停止或终止时(例如通过 API 调用,或由于故障),该存储会丢失。

Amazon Elastic Block Store(EBS)提供可附加到 Amazon EC2 实例的原始块设备。这些块设备随后可像任何原始块设备一样使用。在典型用例中,这包括使用文件系统格式化设备并将其挂载。此外,EBS 支持若干高级存储功能,包括快照和克隆。EBS 卷大小最高可达 16 TB。EBS 卷构建于复制存储之上,因此单个组件发生故障不会造成数据丢失。
EBS 于2008年8月由亚马逊向公众推出。

弹性 IP 地址
AWS 文档将弹性 IP 地址定义为面向动态云计算的静态公网 IPv4 地址。该地址分配给 AWS 账户,并保留到用户显式释放;用户可将其重新映射到同一账户中的其他实例,以快速应对实例或软件故障。未关联的弹性 IP 仍占用账户资源,AWS 会对所有弹性 IP 地址收费。

弹性伸缩
Amazon EC2 Auto Scaling 会根据负载和预设策略自动调整 Auto Scaling 组中的实例数量,帮助应用在需求变化时维持目标容量。用户可以设置最小、最大和期望容量,并通过基于指标或计划的策略启动、终止实例;它常与 CloudWatch 指标和警报配合使用。 一个潜在问题是虚拟机可能需要数分钟才能准备好可用,因此并不适合时间敏感型应用;虚拟机启动时间取决于镜像大小、虚拟机类型、数据中心位置等因素。

Amazon CloudWatch
Amazon CloudWatch 是用于实时监控 AWS 资源和 AWS 上运行应用程序的服务,可提供指标、警报、仪表板、日志和其他可观测性工具。许多 AWS 服务会自动向 CloudWatch 发送基础指标,用户也可发布自定义指标。CloudWatch Agent 可从 EC2 实例、本地服务器和容器化应用收集指标、日志和跟踪;AWS 文档称该代理支持 Windows 和 Linux,并可收集 CPU、内存、磁盘、网络、进程等系统级指标。
Amazon CloudWatch 收集的指标使弹性伸缩功能能够动态增加或移除 EC2 实例。 自2014年7月起,CloudWatch Logs 服务也可用。
可靠性
AWS 将 EC2 资源划分为彼此隔离的区域和可用区。区域是独立的地理区域,可用区则是同一区域内多个相互隔离的位置;如果把全部实例都放在单一位置,一旦该位置发生故障,相关实例就会同时受影响。

通过将实例分布在多个可用区,用户可以把单一位置故障的影响降到最低;AWS 也建议在启动初始实例时优先使用系统健康和可用容量选出的可用区,或者在需要时显式指定可用区。

2010年12月1日,在美国政治压力下,亚马逊停止向 WikiLeaks 提供服务。 阿桑奇表示,WikiLeaks 选择亚马逊时就知道自己很可能会被该服务移除,“以便区分言辞与现实”。 互联网团体匿名者试图攻击 EC2 作为报复;不过,亚马逊未受该攻击影响。

2010年12月12日,亚马逊网站短暂离线,尽管起初尚不清楚这是由于攻击还是硬件故障造成的。亚马逊一名官员后来表示,这是由硬件故障导致的。

2011年4月21日美国东部时间上午5点前不久,EC2 位于北弗吉尼亚的数据中心发生故障,导致包括 Foursquare、Springpad、Reddit、Quora 和 Hootsuite 在内的多个网站瘫痪。 AWS 事后总结称,问题主要涉及美国东部区域单一可用区内一部分无法完成读写请求的 EBS 卷,并导致依赖这些卷的实例卡住;一次网络容量升级中的流量切换错误,使部分 EBS 节点同时失去主网络和备用网络连接,引发大量卷重新镜像。AWS 称,该可用区内约13%的 EBS 卷一度处于“卡住”状态,最终有0.07%的卷无法以一致状态恢复。

2011年8月7日,AWS EU West 区域的一个可用区发生供电中断。AWS 事后总结称,公用电力供应商的 110 kV 变压器故障导致该可用区大部分供电丧失;备用发电机未能为部分负载接入,几乎所有 EC2 实例和58%的 EBS 卷一度断电。AWS 还披露,另有一个独立的 EBS 快照清理软件错误影响了部分快照,并为受影响客户创建恢复快照。

2011年8月8日,亚马逊北弗吉尼亚数据中心又发生一次网络连接中断,使 Reddit、Quora、Netflix 和 FourSquare 等服务受到影响。 这次故障持续约 25 分钟。

2012年10月22日,AWS 美国东部区域再次发生服务事件,影响 EC2、EBS、RDS 和 ELB 等服务。AWS 事后总结称,一个可用区内部分 EBS 卷性能下降或卡住,根因是 EBS 存储服务器上的运营数据收集代理存在潜在错误;事件期间启用的 EC2/EBS API 节流策略也使部分客户经历数小时的 API 降级。 同年12月24日,美国东部区域的 Elastic Load Balancing(ELB)控制平面因维护流程误删部分状态数据而发生故障;AWS 称,峰值时6.8%的运行中 ELB 负载均衡器受到影响,几乎所有受影响负载均衡器于次日上午恢复。

2015年9月20日,美国东部区域的 DynamoDB 故障影响 DynamoDB 客户和依赖 DynamoDB 的其他服务;AWS 称 EC2 Auto Scaling 出现显著 API 故障并延迟执行扩缩容活动,CloudWatch 出现 EC2 指标延迟或缺失,AWS 管理控制台部分登录请求也受影响。

2016年6月4日,悉尼区域因恶劣天气造成的公用电力中断和部分电力冗余系统未按设计工作,导致单一可用区内大量实例断电,主要影响 EC2 实例及其关联 EBS 卷。

2017年2月28日,美国东部区域的 S3 故障由一次调试操作中输入错误引发,导致比预期更多的服务器被移除。AWS 称,当 S3 API 不可用时,依赖 S3 的其他服务也受到影响,包括 EC2 新实例启动、需要从 S3 快照读取数据的 EBS 卷和 AWS Lambda。

2019年8月23日,东京区域单一可用区的冷却控制系统故障导致部分 EC2 服务器过热并关机,影响该可用区的 EC2 实例和 EBS 卷,也影响依赖相同底层 EC2 资源的 RDS、Redshift、ElastiCache 和 WorkSpaces 等服务。

2020年11月25日,美国东部区域的 Amazon Kinesis 故障源于前端服务器容量增加后触发的线程资源耗尽问题;AWS 称,Kinesis 被多个 AWS 服务使用,因此事件也影响了这些依赖服务。

2021年12月7日,美国东部区域内部网络拥塞影响了监控、内部 DNS、授权服务和部分 EC2 控制平面等基础服务,导致多个 AWS 服务延迟和错误率升高。

2023年6月13日,美国东部区域的 AWS Lambda 故障导致 Lambda 函数调用错误率和延迟升高,并波及 Amazon STS、AWS 管理控制台、Amazon EKS、Amazon Connect 和 Amazon EventBridge 等服务。

2024年7月30日,美国东部区域一个供 AWS 内部服务使用的 Kinesis Data Streams 单元退化,导致 CloudWatch Logs、Amazon Data Firehose、S3 事件发布框架、ECS、Lambda、Redshift 和 AWS Glue 等服务出现延迟和错误率升高。

2025年10月19日至20日,美国东部区域的 DynamoDB 故障由自动 DNS 管理系统中的潜在竞态条件触发,随后影响 DynamoDB API、Network Load Balancer 和 EC2 新实例启动;AWS 称,现有 EC2 实例未受影响,但新实例启动失败、EC2 API 错误率和延迟升高,EC2 于10月20日13:50(太平洋时间)完全恢复。

参见

  • Amazon Virtual Private Cloud
  • 阿里云
  • AppScale
  • Bitnami

*

  • ElasticHosts
  • Eucalyptus (软件)

*
*
*

  • Google App Engine
  • Google Cloud Platform

*
*

  • Linode

*

  • Microsoft Azure

*

  • OpenShift
  • Oracle Cloud

*

  • OVHcloud
  • Rackspace Cloud

*

  • Savvis

*
*

参考资料
外部链接
*

评论 (0)

  • 还没有评论,来抢沙发吧。