AWS 之 EC2

353 阅读14分钟

简介

EC2(Elastic Compute Cloud)亚马逊云计算服务(Amazon Web Services,AWS)提供的一种虚拟机实例服务。它是一种弹性的云计算服务,可让您快速启动虚拟机实例,灵活地进行计算资源的调整,并根据需求付费

通过EC2可以创建、配置和管理虚拟机实例,这些实例在云中运行。每个EC2 实例都是一个虚拟服务器,具有自己的操作系统、计算资源和存储设备。您可以选择适合需求的实例类型、操作系统和软件配置,并根据需要增加或减少实例数量

创建 EC2 实例

创建EC2实例涉及以下一些主要的知识点:

  1. 实例类型(Instance Type)
  2. AMI(Amazon Machine Image)
  3. 子网(Subnet)
  4. 安全组(Security Group)
  5. 存储选项
  6. 密钥对(Key Pair)
  7. 用户数据(User Data)
  8. IAM 角色(IAM Role)

EC2 实例类型

EC2 实例类型是 AWS 中可用的不同配置和性能的虚拟机实例的分类。每种实例类型都具有不同的计算能力、内存、存储和网络性能,以满足不同应用程序和工作负载的需求

根据计算、内存、存储和网络性能来选择适合需求的实例类型。不同的实例类型适用于不同的用途和工作负载

EC2实例类型是由实例族(Instance Families)、实例代系(Instance Generations)和实例规格(Instance Sizes)这三个要素组合而成的

  • 实例族:EC2 实例类型根据应用场景和使用需求进行分组,形成不同的实例族
    • General Purpose(通用用途):适用于多种应用场景,提供均衡的计算、内存和存储资源。例如:t3、m5
    • Compute Optimized(计算优化):专注于提供高性能的计算能力,适用于需要高速计算的工作负载。例如:c5、c6g
    • Memory Optimized(内存优化):针对内存密集型应用程序,提供大内存容量和高性能的实例类型。例如:r5、r6g
    • Storage Optimized(存储优化):专注于提供高性能的存储系统,适用于需要大容量和高吞吐量的应用程序。例如:i3、d3
    • GPU Instances(GPU 实例):针对图形处理和加速计算任务,提供具有强大GPU性能的实例类型。例如:p3、g4
    • FPGA Instances(FPGA 实例):针对使用可编程逻辑进行加速计算的工作负载,提供FPGA资源的实例类型。例如:f1
  • 实例代系:AWS 不断推出新的EC2 实例代系,每个代系提供更高的性能和功能。例如:第一代实例为M1,第二代实例为M3,依此类推。新的代系通常会引入更快的处理器、更快的存储、更高的网络性能和更多的功能
  • 实例规格:每个实例类型都有不同的规格,表示实例的大小和容量。例如:t3.micro、m5.large、c5.4xlarge等。实例规格通常取决于实例的CPU核数、内存容量、存储大小和网络性能等

AMI

根据 AMI 创建 EC2 实例

AMI是一个预配置的虚拟机镜像,不仅包括操作系统(Linux、Windows、macOS),还包括了一个完整的虚拟服务器环境,可以将AMI看作是一个虚拟机的模板或快照。它包含了操作系统、应用程序、配置和数据等一切必要的组件,用于创建和启动EC2实例

AMI 有两种类型:AWS 提供的公共 AMI或创建自己的自定义 AMI

AMI 本身并不是一个运行中的实例,而是一个用于创建新EC2 实例的基础镜像。当启动新的EC2 实例时,实际上是基于 AMI 创建一个全新的虚拟机,该虚拟机拥有 AMI 中所包含的操作系统和预配置的软件设置

通过 EC2 实例创建 AMI

由于AMI是用于启动EC2 实例的模板,因此可以将已经运行的EC2 实例制作成AMI,然后再使用该AMI快速部署相同配置的EC2 实例,提高效率并确保实例配置的一致性

AMI可以包含多个快照(Snapshots),这些快照是实例根卷(Root Volume)和其他数据卷的镜像备份。当您创建AMI时,AWS 会自动创建实例的快照,并将这些快照存储在 Amazon S3 中

快照是 Amazon Elastic Block Store(EBS)的一种功能,它是对EBS 卷(卷是EC2 实例的块存储设备)的逐块备份。快照不直接包含AMI本身,而是用于创建AMI的一部分

子网

子网的定义:VPC 的 IP 地址范围内的一个区段,其中可放置隔离的资源组

选择在子网中启动实例,以实现对实例进行隔离和网络分段

安全组

EC2 安全组是 AWS 中一种虚拟防火墙,用于控制EC2实例的网络流量。安全组规则定义了允许进入和离开实例的流量类型、协议和端口范围,通过配置适当的安全组规则,您可以实现对EC2实例的网络流量控制和安全保护。您可以限制访问特定端口、协议和IP地址范围,从而减少潜在的安全风险,控制入站和出站流量

安全组是基于实例级别的网络访问控制,依赖于 VPC 环境

存储选项

在创建EC2实例时,存储类型的配置主要是围绕EBSEFS展开。然而,除了这两种存储类型之外,还有实例存储S3,只是它们不直接在创建EC2实例时的存储选项之列

  • EBS 卷(Amazon Elastic Block Store): 是一种持久性的块存储,可以附加到EC2实例并保留数据。EBS 卷的数据在实例停止或终止后仍然保留。EBS卷可用于根卷(包含操作系统和应用程序)或数据卷(用于持久性数据存储)
  • EFS(Amazon Elastic File System): 是一种全托管的文件存储服务,适用于需要在多个EC2实例之间共享数据的场景
  • 实例存储(Instance Store):EC2实例上的临时存储空间,也称为实例存储卷,通常用于临时性存储需求,例如缓存、临时文件等。它与实例的生命周期绑定,一旦实例停止或终止,其中的数据将会丢失
  • S3(Amazon Simple Storage Service): 是一种对象存储服务,用于存储和检索任意数量的数据。S3提供高度可扩展、安全和持久的存储,并且可以通过HTTPHTTPS接口进行访问。S3适用于大规模的数据存储,可用于备份和归档、大数据分析、静态资源的托管等

总结来说,当在创建EC2实例时,主要的存储选项是EBSEFS

  • 如果需要持久性的块级存储,可以选择EBS 卷
  • 如果需要在多个EC2实例之间共享文件系统,并且需要高可用性和可扩展性,可以选择EFS
  • 至于实例存储S3,它们也是重要的存储服务,但它们不是直接作为创建EC2实例的存储选项,而是适用于不同的用例和数据存储需求

密钥对

密钥对是用于安全地访问EC2实例的一种身份验证方法。在创建EC2实例时,可以选择使用现有的密钥对或创建新的密钥对

密钥对包括两个部分:公钥私钥公钥存储在EC2 实例中,而私钥则保存在您本地计算机或其他安全的地方。当您通过SSH(对于 Linux 实例)或远程桌面(对于 Windows 实例)连接到EC2 实例时,需要使用私钥来进行身份验证。EC2 实例会验证您提供的私钥是否与实例中存储的公钥匹配,如果匹配成功,您将获得访问实例的权限。指令如下:

ssh -i /path/to/your/private-key.pem ec2-user@your-instance-public-ip

在默认情况下,EC2 实例是基于密钥对来进行身份验证的。如果想要使用用户名 + 密码来进行实例连接,则需要自己配置(也不推荐)

用户数据

用户数据是在创建EC2 实例时可以指定的一段脚本或命令,它用于在实例启动时自动运行一些初始化任务或配置操作。通常用于自动化部署和配置实例,使实例在启动时能够自动完成一系列预定义的任务

EC2 实例在启动时会检测用户数据,并在实例启动后自动执行。用户数据可以是 Shell 脚本、命令行命令、配置文件等,取决于要实现的具体任务

使用用户数据的一些常见用途包括:

  1. 软件配置: 通过用户数据,可以自动安装、配置和启动应用程序和服务,以便在实例启动时预先配置软件环境
  2. 自动更新: 可以使用用户数据来自动更新实例上的软件包和操作系统,确保实例一直保持最新的状态
  3. 文件下载和配置: 可以使用用户数据来下载文件、配置文件、密钥等,以便实例在启动时获得必要的配置信息
  4. 启动脚本: 如果您需要在实例启动时运行自定义的脚本或命令,用户数据提供了一个简单的方式来实现

用户数据执行的时机是在实例的第一次启动时,它不会在实例的停止和重新启动时再次执行。如果需要在每次实例启动时都执行用户数据脚本,可以在脚本中添加相应的逻辑来处理这一需求

总之,使用用户数据可以极大地简化和加速实例的配置和初始化过程,特别是在需要大量相似实例的场景下,如:自动扩展和负载均衡。但请务必小心配置正确的用户数据,因为用户数据的错误或恶意内容可能导致实例不正常运行

IAM 角色

创建EC2 实例时,可以为实例指定一个IAM 角色,从而授予EC2 实例访问其他 AWS 服务或资源的权限,而无需在实例上直接暴露安全凭证(如:Access Key 和 Secret Access Key)

通过使用IAM 角色,可以将安全凭证管理的复杂性降到最低,并且可以确保EC2 实例只能访问其所需的最少权限,提高了安全性和可管理性。请确保仅授予实例所需的最小权限,并定期审查角色的权限策略,以确保安全性

EC2 实例

EC2 实例基本信息

在完成EC2 实例的创建过程后,AWS 会根据您的配置信息自动创建一个EC2 实例EC2 实例是一台虚拟机,它将在 AWS 云中启动并运行

生成的实例包括一些重要的信息,如:实例 ID、公共 IP 地址、私有 IP 地址等

  • 实例 ID: 每个EC2 实例都有一个唯一的实例 ID,可以使用实例 ID来标识和管理特定的实例
  • 公共 IP 地址: 如果创建EC2 实例时,网络设置的Auto-assign public IP是启动状态,那么创建好的EC2 实例在启动时会自动分配一个公共 IP 地址,它是实例可以通过 Internet 访问的地址。公共 IP 地址是临时的,当实例停止或重启时,可能会发生变化
  • 私有 IP 地址: EC2 实例还会分配一个私有 IP 地址,它是实例在 VPC 内部的地址,用于实例在 VPC 内部与其他资源进行通信

EC2 置放群组

置放群组(Placement Group)是EC2提供的一种功能,用于控制在同一物理硬件上放置EC2 实例的策略。通过将多个实例放置在同一个置放群组中,可以实现这些实例之间的低延迟、高带宽网络连接,适用于需要高性能通信的应用程序

置放群组有三种类型:集群置放群组(Cluster Placement Group)、分区置放群组(Partition Placement Group)、分布置放群组(Spread Placement Group)

  • 集群置放群组: 适用于需要低延迟和高吞吐量网络性能的应用程序。将实例尽可能放置在同一物理硬件上,以实现更快速的网络通信
  • 分区置放群组: 适用于需要大规模扩展的应用程序,可以容纳更多的实例。实例被均匀分布在不同的硬件分区上,提供更好的容错性和可伸缩性
  • 分布置放群组: 适用于提高实例的可用性和容错性。实例被放置在不同的硬件故障域中,减少硬件级别的故障对多个实例的影响

连接 EC2 实例

EC2 实例 可以通过终端或者 AWS 提供的 EC2 实例连接的方式进行连接

  1. 采用终端进行连接也因为操作系统的不同而存在两种情况:

    • Linux:ssh -i /path/to/your/key.pem ec2-user@your-ec2-public-ip
    • Windows:图形化工具或者命令行
      • 远程桌面连接工具(Remote Desktop Connection)来建立 RDP 连接
      • mstsc /v:your-ec2-public-ip
  2. 采用 EC2 实例连接会简单很多,唯一的条件便是你登录到 AWS 控制台,选中需要连接的实例,点击connect按钮并选择使用EC2 实例连接即可正常连接

EC2 实例购买

购买EC2 实例的选项有 5 种情况可选:

  • 按需实例(On-Demand Instances):

    • 特点:按小时或按秒计费,可以临时启动和停止实例,十分灵活
    • 适用场景:短期或不规律的工作负载,试用、开发、测试、突发性任务等
  • 保留实例(Reserved Instances):

    • 特点:预付费购买,可以选择 1 年3 年的合约期
    • 适用场景:长期稳定的工作负载,提供较大折扣优惠
  • 竞价实例(Spot Instances):

    • 特点:按竞价定价,能够提供最大的折扣优惠,可以获取闲置计算资源的折扣价格,但价格波动较大
    • 适用场景:临时性、可中断的工作负载,或对成本敏感的任务
  • 混合实例(EC2 Instance Fleet):

    • 特点:结合按需实例竞价实例,以满足优先级和成本需求
    • 适用场景:同时需要稳定性和成本优化的工作负载
  • 专用主机(Dedicated Hosts):

    • 特点:EC2 实例部署到完全专用的物理服务器上,提供更高的隔离和控制级别
    • 适用场景:许可证约束、合规性要求或特定安全性需求的场景

小结

本篇文章是关于EC2 实例的分享,讲述了关于创建EC2 实例、创建完成后的EC2 实例的基本信息与连接以及EC2 实例购买的选择

现在对前面的内容做一个简要的总结。因为EC2 实例就是一个虚拟机,当你在选择电脑时你可能会关注 CPU、RAM、存储、IP、防火墙等配置,同理,创建一个EC2 实例你也从这些方面考虑吧~只不过术语名称可能会略有不同

  • 实例类型(Instance Type): 决定了实例可用的 CPU 和 RAM 资源。不同的实例类型具有不同的 CPU 核心数量和 RAM 大小
  • 存储选项:
    • EBS(Amazon Elastic Block Store): 提供了块级别的持久性存储,用于持久性数据存储
    • EFS(Amazon Elastic File System): 一个全托管的文件存储服务,适用于需要在多个EC2 实例之间共享数据的场景
  • IP(公共 IP 和私有 IP): 公共 IP 用于通过Internet访问实例,私有 IP 用于实例在VPC内部通信
  • 安全组: 安全组是一种虚拟防火墙,用于控制实例的网络流量