EC2基础 #
一、什么是EC2 #
1.1 EC2简介 #
Amazon EC2(Elastic Compute Cloud)是AWS提供的弹性云计算服务,提供可调整大小的计算能力。用户可以在云中启动虚拟服务器(称为实例),快速扩展或收缩计算资源。
1.2 EC2核心特性 #
text
EC2核心特性:
├── 弹性
│ └── 几分钟内启动或终止实例
│ └── 自动扩展应对负载变化
│
├── 完全控制
│ └── 完全控制实例
│ └── root访问权限
│
├── 灵活配置
│ └── 多种实例类型
│ └── 多种操作系统
│
├── 集成服务
│ └── 与其他AWS服务深度集成
│
├── 安全可靠
│ └── VPC网络隔离
│ └── 安全组访问控制
│
└── 成本优化
└── 多种购买选项
└── 按需付费
1.3 EC2使用场景 #
| 场景 | 说明 |
|---|---|
| Web应用托管 | 托管网站和Web应用 |
| 应用服务器 | 运行企业应用 |
| 计算密集型任务 | 科学计算、数据分析 |
| 游戏服务器 | 多人游戏服务器 |
| 开发测试 | 开发和测试环境 |
| 批处理 | 大规模数据处理 |
二、EC2核心概念 #
2.1 实例 #
实例是AWS云中的虚拟服务器:
text
实例概念:
├── 定义
│ └── 虚拟计算环境
│
├── 组成
│ ├── CPU
│ ├── 内存
│ ├── 存储
│ └── 网络
│
└── 生命周期
├── pending(启动中)
├── running(运行中)
├── stopping(停止中)
├── stopped(已停止)
└── terminated(已终止)
2.2 AMI(Amazon Machine Image) #
AMI是实例的模板:
text
AMI组成:
├── 根卷模板
│ └── 操作系统
│ └── 应用服务器
│ └── 应用程序
│
├── 启动权限
│ └── 控制哪些账户可以使用
│
└── 块设备映射
└── 附加的存储卷
AMI来源 #
| 来源 | 说明 |
|---|---|
| AWS提供的AMI | 官方维护的镜像 |
| AWS Marketplace AMI | 第三方提供的镜像 |
| 社区AMI | 社区共享的镜像 |
| 自定义AMI | 从实例创建的镜像 |
常用AMI #
text
常用AMI类型:
├── Amazon Linux 2023
│ └── AWS优化,免费
│
├── Ubuntu
│ └── 流行的Linux发行版
│
├── Windows Server
│ └── 微软Windows服务器
│
├── Red Hat Enterprise Linux
│ └── 企业级Linux
│
└── 自定义AMI
└── 包含特定配置
2.3 实例类型 #
AWS提供多种实例类型以满足不同需求:
text
实例类型分类:
├── 通用型(General Purpose)
│ └── 平衡的计算、内存、网络资源
│ └── 代表:t3、m5、m6i
│
├── 计算优化型(Compute Optimized)
│ └── 高性能处理器
│ └── 代表:c5、c6i
│
├── 内存优化型(Memory Optimized)
│ └── 大内存容量
│ └── 代表:r5、r6i、x1e
│
├── 存储优化型(Storage Optimized)
│ └── 高顺序读写性能
│ └── 代表:i3、d3
│
├── 加速计算型(Accelerated Computing)
│ └── GPU/FPGA加速
│ └── 代表:p4、g5、inf1
│
└── HPC优化型
└── 高性能计算
└── 代表:hpc6a
2.4 实例类型命名规则 #
text
实例类型命名格式:
实例族.代号.大小
示例:m5.xlarge
├── m - 实例族(通用型)
├── 5 - 代号(第5代)
└── xlarge - 大小
大小命名:
├── nano - 0.25 vCPU
├── micro - 0.5 vCPU
├── small - 1 vCPU
├── medium - 2 vCPU
├── large - 2 vCPU
├── xlarge - 4 vCPU
├── 2xlarge - 8 vCPU
├── 4xlarge - 16 vCPU
├── 8xlarge - 32 vCPU
├── 12xlarge - 48 vCPU
├── 16xlarge - 64 vCPU
└── 24xlarge - 96 vCPU
三、实例类型详解 #
3.1 通用型实例 #
适合平衡的计算、内存和网络资源需求:
| 实例类型 | vCPU | 内存 | 适用场景 |
|---|---|---|---|
| t3.nano | 2 | 0.5GB | 轻量级应用 |
| t3.micro | 2 | 1GB | 测试开发 |
| t3.small | 2 | 2GB | 小型应用 |
| t3.medium | 2 | 4GB | 中型应用 |
| m5.large | 2 | 8GB | 企业应用 |
| m5.xlarge | 4 | 16GB | 数据库服务器 |
| m5.2xlarge | 8 | 32GB | 应用服务器 |
T3/T4g实例特点 #
text
T系列实例特点:
├── 突发性能实例
│ └── 基准CPU性能
│ └── 可突增CPU
│
├── CPU积分
│ └── 积累积分用于突发
│ └── 积分用完回到基准
│
├── 无限模式
│ └── 可超出积分限制
│ └── 额外付费
│
└── 适用场景
├── 开发测试环境
├── 低延迟交互应用
└── 微服务
3.2 计算优化型实例 #
适合计算密集型工作负载:
| 实例类型 | vCPU | 内存 | 适用场景 |
|---|---|---|---|
| c5.large | 2 | 4GB | Web服务器 |
| c5.xlarge | 4 | 8GB | 高性能计算 |
| c5.2xlarge | 8 | 16GB | 科学建模 |
| c6i.large | 2 | 4GB | 游戏服务器 |
3.3 内存优化型实例 #
适合内存密集型工作负载:
| 实例类型 | vCPU | 内存 | 适用场景 |
|---|---|---|---|
| r5.large | 2 | 16GB | 内存数据库 |
| r5.xlarge | 4 | 32GB | 大数据处理 |
| r5.2xlarge | 8 | 64GB | 实时分析 |
| x1e.xlarge | 4 | 122GB | SAP HANA |
3.4 存储优化型实例 #
适合高存储需求工作负载:
| 实例类型 | vCPU | 内存 | 存储 | 适用场景 |
|---|---|---|---|---|
| i3.large | 2 | 15.25GB | 475GB NVMe | NoSQL数据库 |
| i3.xlarge | 4 | 30.5GB | 950GB NVMe | 数据仓库 |
| d3.xlarge | 4 | 32GB | 2x2TB HDD | Hadoop集群 |
3.5 加速计算型实例 #
适合GPU加速工作负载:
| 实例类型 | GPU | vCPU | 内存 | 适用场景 |
|---|---|---|---|---|
| g4dn.xlarge | 1 T4 | 4 | 16GB | 机器学习推理 |
| p4d.24xlarge | 8 A100 | 96 | 1152GB | 深度学习训练 |
| inf1.xlarge | 1 Inferentia | 4 | 8GB | 机器学习推理 |
四、实例购买选项 #
4.1 按需实例 #
text
按需实例特点:
├── 按秒/小时计费
├── 无预付费用
├── 无长期承诺
├── 最高灵活性
└── 适用场景
├── 不规则工作负载
├── 测试开发
└── 首次部署应用
4.2 预留实例 #
text
预留实例特点:
├── 承诺使用期限(1年或3年)
├── 享受大幅折扣(最高72%)
├── 预付或部分预付
└── 类型
├── 标准预留实例
│ └── 特定实例类型
├── 可转换预留实例
│ └── 可更换实例类型
└── 计划性预留实例
└── 按计划使用
4.3 Savings Plans #
text
Savings Plans特点:
├── 承诺使用金额($)
├── 灵活性更高
├── 折扣最高72%
└── 类型
├── Compute Savings Plans
│ └── 适用于EC2、Fargate、Lambda
└── EC2 Instance Savings Plans
└── 仅适用于EC2
4.4 Spot实例 #
text
Spot实例特点:
├── 使用AWS闲置容量
├── 折扣最高90%
├── 可能被中断
├── 2分钟中断通知
└── 适用场景
├── 批处理任务
├── 大数据分析
├── CI/CD流水线
└── 容错性高的工作负载
4.5 购买选项对比 #
| 选项 | 折扣 | 灵活性 | 中断风险 | 适用场景 |
|---|---|---|---|---|
| 按需 | 无 | 最高 | 无 | 测试、不确定需求 |
| 预留 | 高 | 低 | 无 | 稳定长期负载 |
| Savings Plans | 高 | 中 | 无 | 灵活的长期需求 |
| Spot | 最高 | 低 | 有 | 容错性高的任务 |
五、EC2定价 #
5.1 计费组成 #
text
EC2计费项目:
├── 实例运行时间
│ └── 按秒/小时计费
│
├── EBS存储
│ └── 按GB/月计费
│
├── 数据传输
│ ├── 出站数据传输
│ └── 跨区域传输
│
├── Elastic IP
│ └── 未关联时收费
│
└── 其他
├── AMI存储
└── 快照存储
5.2 定价示例(us-east-1) #
| 实例类型 | 按需价格/小时 | 预留1年/小时 | Spot价格/小时 |
|---|---|---|---|
| t3.micro | $0.0104 | $0.007 | $0.003 |
| t3.small | $0.0208 | $0.014 | $0.006 |
| m5.large | $0.096 | $0.063 | $0.028 |
| c5.large | $0.085 | $0.056 | $0.025 |
六、EC2安全 #
6.1 安全组 #
安全组是实例级别的虚拟防火墙:
text
安全组特点:
├── 状态检测
│ └── 自动允许返回流量
│
├── 规则配置
│ ├── 入站规则
│ └── 出站规则
│
├── 默认行为
│ ├── 入站:拒绝所有
│ └── 出站:允许所有
│
└── 多安全组
└── 一个实例可关联多个安全组
6.2 密钥对 #
密钥对用于SSH登录:
text
密钥对管理:
├── 创建密钥对
│ └── 控制台或CLI创建
│
├── 密钥类型
│ ├── RSA(默认)
│ └── ED25519
│
├── 存储私钥
│ └── 下载后妥善保管
│ └── AWS不保存私钥
│
└── 使用密钥
└── SSH登录时指定
6.3 IAM角色 #
为EC2实例分配权限:
text
IAM角色使用:
├── 创建IAM角色
│ └── 定义权限策略
│
├── 附加到实例
│ └── 实例配置文件
│
└── 实例内访问
└── 自动获取临时凭证
七、EC2最佳实践 #
7.1 实例选择建议 #
text
实例选择原则:
├── 评估工作负载
│ ├── CPU需求
│ ├── 内存需求
│ ├── 存储需求
│ └── 网络需求
│
├── 选择合适类型
│ └── 不要过度配置
│
├── 考虑购买选项
│ └── 稳定负载用预留
│ └── 灵活负载用Savings Plans
│
└── 监控和调整
└── 根据实际使用调整
7.2 安全最佳实践 #
text
安全建议:
├── 最小权限原则
│ └── 安全组只开放必要端口
│
├── 使用IAM角色
│ └── 不在实例上存储凭证
│
├── 定期更新系统
│ └── 安装安全补丁
│
├── 加密数据
│ └── EBS加密
│
└── 监控日志
└── 启用CloudTrail和VPC Flow Logs
7.3 成本优化建议 #
text
成本优化:
├── 选择合适的购买选项
├── 及时释放不用的实例
├── 使用自动扩展
├── 合理配置存储
├── 监控资源利用率
└── 使用Spot实例处理容错任务
八、小结 #
本章介绍了EC2的基础知识:
| 内容 | 要点 |
|---|---|
| EC2概念 | 弹性云计算服务,虚拟服务器 |
| AMI | 实例模板,包含操作系统和配置 |
| 实例类型 | 通用型、计算优化型、内存优化型等 |
| 购买选项 | 按需、预留、Savings Plans、Spot |
| 安全 | 安全组、密钥对、IAM角色 |
下一步学习 #
了解EC2基础后,接下来可以:
最后更新:2026-03-28