简介
EC2(Elastic Compute Cloud)是亚马逊云计算服务(Amazon Web Services,AWS)提供的一种虚拟机实例服务。它是一种弹性的云计算服务,可让您快速启动虚拟机实例,灵活地进行计算资源的调整,并根据需求付费
通过 EC2 可以创建、配置和管理虚拟机实例,这些实例在云中运行。每个EC2 实例
都是一个虚拟服务器,具有自己的操作系统、计算资源和存储设备。您可以选择适合需求的实例类型、操作系统和软件配置,并根据需要增加或减少实例数量
创建 EC2 实例
创建EC2实例
涉及以下一些主要的知识点:
- 实例类型(Instance Type)
- AMI(Amazon Machine Image)
- 子网(Subnet)
- 安全组(Security Group)
- 存储选项
- 密钥对(Key Pair)
- 用户数据(User Data)
- 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实例
时,存储类型的配置主要是围绕EBS
和EFS
展开。然而,除了这两种存储类型之外,还有实例存储
和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
提供高度可扩展、安全和持久的存储,并且可以通过HTTP
或HTTPS
接口进行访问。S3适用于大规模的数据存储,可用于备份和归档、大数据分析、静态资源的托管等
总结来说,当在创建EC2实例
时,主要的存储选项是EBS
和EFS
- 如果需要持久性的块级存储,可以选择
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 脚本、命令行命令、配置文件等,取决于要实现的具体任务
使用用户数据的一些常见用途包括:
- 软件配置: 通过
用户数据
,可以自动安装、配置和启动应用程序和服务,以便在实例启动时预先配置软件环境 - 自动更新: 可以使用
用户数据
来自动更新实例上的软件包和操作系统,确保实例一直保持最新的状态 - 文件下载和配置: 可以使用
用户数据
来下载文件、配置文件、密钥等,以便实例在启动时获得必要的配置信息 - 启动脚本: 如果您需要在实例启动时运行自定义的脚本或命令,
用户数据
提供了一个简单的方式来实现
用户数据
执行的时机是在实例的第一次启动时,它不会在实例的停止和重新启动时再次执行。如果需要在每次实例启动时都执行用户数据脚本,可以在脚本中添加相应的逻辑来处理这一需求
总之,使用用户数据
可以极大地简化和加速实例的配置和初始化过程,特别是在需要大量相似实例的场景下,如:自动扩展和负载均衡。但请务必小心配置正确的用户数据
,因为用户数据
的错误或恶意内容可能导致实例不正常运行
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 实例连接的方式进行连接
-
采用终端进行连接也因为操作系统的不同而存在两种情况:
- 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
- Linux:
-
采用 EC2 实例连接会简单很多,唯一的条件便是你登录到 AWS 控制台,选中需要连接的实例,点击
connect
按钮并选择使用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内部通信
- 安全组: 安全组是一种虚拟防火墙,用于控制实例的网络流量