AWS 小白书
M03-EC2 基础
01-EC2 基础

虚拟化技术

想要理解 EC2,我们需要先了解什么是虚拟化技术。简单来说,虚拟化是在一台物理服务器上创建多个虚拟机,每个虚拟机拥有自己的操作系统和应用程序,以及独立的计算、内存、网络和存储资源。但实际上它们都是在同一台物理服务器上运行的。

为啥用虚拟机,而不是物理机?

当我们使用物理机时,我们必须为每个应用程序或服务购买一台单独的机器,这样会带来一些问题。 首先,这些机器可能会在使用效率上存在浪费,因为它们可能会一直保持运行,但实际上只是在某些时候运行得很慢。

另外,每次我们需要扩展我们的应用程序或服务时,我们都需要购买和设置新的机器,这将需要很多时间和资金。

虚拟化技术可以解决这些问题。它允许我们在一台物理机器上运行多个虚拟机,每个虚拟机都像一台完整的计算机,可以运行自己的操作系统和应用程序。

这样,我们可以更有效地利用物理资源,因为我们可以将多个应用程序或服务运行在同一台机器上。当我们需要扩展我们的应用程序或服务时,我们可以轻松地创建和启动新的虚拟机,而不需要购买和设置新的物理机器。

所以使用虚拟化技术可以更加充分利用硬件资源提高计算效率,并降低成本

EC2 (Elastic Computing Cloud)

EC2是AWS云平台上最常用的一项服务,可以简单理解为“租用云上的虚拟服务器”,而这种服务器在 EC2 中叫做实例 ( Instance ),EC2 属于云服务中的 IaaS 级别的服务。

我们可以随时根据自己的需求启动、停止或调整虚拟机,而无需考虑硬件采购、配置、运维等问题。这样,就可以让我们更专注于自己的应用程序开发和部署,而不必担心计算资源的扩展和管理问题。

为啥不自己来,要用 EC2?

如果你是一个个人用户,可能会想要在你的电脑上使用虚拟化技术来运行多个操作系统或者在不同的环境下测试软件。 但是如果你是一个企业用户或者需要在云上运行应用程序的开发者,那么 EC2 可能是更好的选择。

首先,EC2 提供了更可靠的硬件和网络基础设施,这意味着你的应用程序可以在更高的可用性和性能条件下运行。EC2 服务在多个数据中心部署,这些数据中心都有严格的物理安全措施,包括实时备份和灾难恢复计划,以确保你的应用程序能够在任何情况下保持高可用性。

其次,使用 EC2 可以大大降低你的 IT 成本。使用虚拟化技术,你需要自己购买和维护硬件和网络设备,需要雇佣更多的 IT 人员来管理和维护基础设施。而使用 EC2,你可以按需付费,不需要承担额外的硬件和网络成本,并且不需要担心维护和管理基础设施。

此外,EC2 还提供了更高的灵活性和可扩展性。你可以随时根据需要增加或减少计算资源,并可以根据应用程序需求来选择不同的实例类型。这意味着你可以根据实际需求调整计算资源,而不需要提前购买和维护硬件设备。

最后,使用 EC2 可以提高你的应用程序的安全性。AWS 提供了一系列的安全工具和服务,例如防火墙、入侵检测和数据加密,可以帮助你保护你的应用程序免受网络攻击和数据泄漏的威胁。

总之,尽管虚拟化技术是一个有用的工具,但 EC2 可以提供更可靠、更灵活和更安全的云计算环境,让你更专注于你的业务和应用程序的开发和部署。

还不懂看这里

你可以认为,EC2提供电脑的租赁业务,当你想要使用电脑的时候,向他申请,它就会给你电脑,只不过我们会更加专业的叫做这些电脑为服务器。而如果电脑用完了,你就还回去就可以了。同样,因为是租赁,所以计价也动态,用的时候付费,电脑不用的时候不收费。专业一点讲就是按需付费,也叫做 pay-as-u-go。这样你就不用维护任何的服务器,也免去了服务器不用在哪里落灰的情况出现。


EC2 Type

就像我们购买电脑的时候一样,你也需要挑选配置。在 EC2 的语境中,这个叫做 EC2类型。每种类型都有一个特殊的编码来表示,通过这些编码你就可以指定你所需要的 EC2性能,下面这张图中就是一个范例:

你可以在这个网页中查找以有的所有类型及其参数

https://aws.amazon.com/cn/ec2/instance-types/ (opens in a new tab)

我们可以看出在标号中有四段标示,分别为

  1. 实例家族
  2. 实例代数
  3. 实例尺寸
  4. 功能特性

接下来我们就来看一下他们所代表的意思。

实例家族 Instance Family

举个通俗一点的例子,你买电脑的时候,是不是也发现了有轻便本,工作站,游戏本等等这些不同的说法呢。在 EC2 中也有类似的概念,叫做实例家族,可以被看作是一组硬件配置相似的虚拟机,根据不同的需求和应用场景可以选择不同的实例家族来获得最佳的性能和成本效益。每个实例家族都有其独特的特性,例如计算、内存、存储、网络等方面的不同。犹如,我们的应用程序的特性不同,可以分为计算密集型应用,内存密集型应用,网络密集型应用一样,根据我们所要让 EC2所做的负载的不同,它也分为几个大类:

  1. General Purpose(通用型):T 系列和 M 系列,适用于轻负载 Web 应用程序和中小型数据库,提供平衡的计算、内存和网络性能。
  2. Compute Optimized(计算优化型):C 系列,适用于需要高性能计算的工作负载,如批量数据处理、媒体编码和科学模拟。
  3. Memory Optimized(内存优化型):R 系列和 X 系列,适用于需要大量内存的工作负载,如高性能数据库、内存缓存和虚拟桌面。
  4. Storage Optimized(存储优化型):I 系列和 D 系列,适用于需要高性能存储的工作负载,如大型关系型数据库、分布式文件系统和高吞吐量应用程序。
  5. GPU Instances(GPU 实例):P 系列和 G 系列,适用于需要 GPU 计算能力的工作负载,如机器学习、3D 渲染和科学计算。
  6. FPGA Instances(FPGA 实例):F1 系列,适用于需要高度定制的加速器的工作负载,如基因测序、金融分析和视频处理。

实例代数 Instance Generation

而每一家族,也会有代数(Generation)的不同,原因很简单,科技是不断进步的。这个也与我们平时去选购电脑遇到的场景一样。每一代都会在前代的基础上进行改进和升级,以提供更高效、更先进的性能。新的一代会比旧的一代拥有更好的性价比,使用更新的技术。

实例尺寸 Instance Size

当你看到范例中的 xlarge 你是不是想到了买衣服呢?其实和我们买衣服的场景一样,同样款式的衣服也有大小之分。而对于 EC2 来讲不同尺寸,也代表着不同的性能配置,举个例子:

M5.large有2个vCPU、8GB内存。而M5.xlarge则具有更强大的性能,包括4个vCPU、16GB内存。

功能特性 Attribute

在某些实例类型中,会有一些特殊的字母来去标示,这类的机型有着特殊的功能,比如:

  • a– AMD 处理器
  • g– Amazon Graviton 处理器
  • i– 英特尔处理器
  • d– 实例存储卷
  • n– 网络优化
  • b– 数据块存储优化
  • e– 额外的存储或内存
  • z– 高频率

当然实例的类型有很多,我们也不需要记住,知道其代表的含义即可。而不同的实力类型也有着不同使用价格,你可以在这个网页中查看:

https://aws.amazon.com/cn/ec2/pricing/ (opens in a new tab)


AMI Amazon Machine Image

其实就是在虚拟化的语境当中的虚拟机镜像,也可以认为系统磁盘的快照。还是回到我们买电脑的例子,我们在购买电脑的时候,是不是一开机就有操作系统了呢?(一般情况都是),如果我们还需要安装系统,费时费力。所以这是一个效率问题,也是一个成本问题(别忘了 Pay-as-you-go 这件事情呢),也是一个标准化的问题。同样我们也希望EC2给到我们的服务器也是如此。

更加专业一点的说法,AMI 可以让我们有一个可重复使用的、可定制的、且易于部署的EC2实例的启动点。通过使用AMI,用户可以轻松地创建具有特定应用程序和配置的EC2实例,而无需从头开始手动配置每个实例。


用户数据 UserData

EC2的用户数据是一些文本数据,可以通过EC2实例首次启动时传递给实例。用户数据主要用于配置和自动化EC2实例的初始化过程,包括安装软件、设置环境变量、运行脚本等。

用户数据可以帮助自动化配置EC2实例,例如将实例初始化为特定的应用服务器或者数据库服务器。它还可以用于自动更新实例中的应用程序或系统配置,减少手动操作的错误和时间。这有点像,我们在购买电脑的时候,要开始使用电脑,我都需要安装一些生产力软件。那我们就可以将这些安装软件的过程写成脚本,当这台电脑首次启动的时候,我们就让他自动完整这些安装和配置的操作。特别是在需要大规模创建和管理EC2实例的场景中,使用用户数据可以简化配置和管理过程,提高效率。

用户数据是EC2中非常关键的特性,使用的恰当,可以帮助快速、自动化地配置EC2实例,减少手动操作的错误和时间,提高工作效率和可靠性。

元数据 MetaData

在一个 EC2 实例自己看来,它就是一个普普通通的服务器,但是在 EC2 整个这个服务看来,这台实例确实独一无二的。而元数据就是为了帮助我们从实例内部获取这些特定信息的功能特性。具体来说,元数据是存储在EC2实例上的一些数据,包括实例的ID、所在的区域等等。这些信息是通过一个特殊的URL访问的,我们可以使用这个URL来获取实例的元数据,进而进行各种操作。 例如我们需要获取这个实例的 ID,我们可以在示例内部访问下边的这个url:

http://169.254.169.254/latest/meta-data/instance-id (opens in a new tab)

这样,元数据可以帮助我们自动化配置实例,例如在实例启动时运行一些特定的配置。

EC2 生命周期

下图是 AWS 文档中,对于 EC2 声明周期的描述。

应该是比较直观了,不过我们还是来解释一下。

首先,就是 Pending 阶段,这是实例生命周期的第一个阶段。在这个阶段,AWS 正为我们的申请实例分配资源并启动实例。这个过程可能需要几秒钟或几分钟的时间,具体时间取决于你选择的实例类型和你所在的 AWS 区域的负载情况。

在实例启动成功后,实例的状态将变为“running”。

当你不再需要 EC2 实例时,你可以选择将其停止(Stop)或终止(Terminate)。当你选择停止实例时,实例会从“running”状态变为“stopped”状态。你可以随时重新启动这个实例。当你选择终止实例时,实例会从任何状态(包括“running”和“stopped”状态)变为“terminated”状态,而且你也不能够再次启动这个实例了。