SAA-C03-002_EC2_01_Basics
## Amazon EC2
- EC2 是AWS最受欢迎的产品之一
- EC2 = Elastic Compute Cloud = Infrastructure as a Service(基础及设施)
- 主要包括以下功能:
- 租用虚拟机(EC2)
- 数据存储在虚拟驱动器上(EBS)
- 在机器间进行负载分配(ELB)
- 使用自动缩放组来扩展服务(ASG)
- 了解 EC2 对于了解云服务的工作原理至关重要
* * *
## EC2 Sizing & Configuration Options
- 操作系统(OS):Linux,Windows,Mac
- 需要多少计算力与核心(CPU)
- 需要多少随机存储内存(RAM)
- 需要多少存储空间
- 网络连接存储(EBS & EFS)
- 硬件存储(EC2 Instance Store)
- 网卡:网卡速度,公共 IP 地址
- 防火墙规则:Security Group(安全组)
- Bootstrap 脚本(**首次启动配置**):EC2 User Data
* * *
## EC2 User Data
- 可以通过使用 EC2 User Data 脚本来引导启动(bootstrap) EC2 实例
- 引导启动(bootstrapping)意味着在机器启动时启动命令
- 该脚本仅在 EC2 实例首次启动时运行一次
- EC2 User Data 通常用于自动化启动任务
- 安装更新
- 安装软件
- 从互联网下载公共文件
- 任何可以想到的事情
- EC2 User Data 脚本通过 Root 用户来运行
* * *
* * *
## EC2 Instance Types
### Overview
- 根据不同 use case(用例)进行 optimised(最优化)选择不同的 EC2 Instance Type
- AWS 拥有以下命名规定:m5.2xlarge
- m:实例类
- 5:随时间推移进行改进而生成
- 2xlarge:实例类的大小
* * *
### General Purpose(一般目的,性能平衡)
- 适合多种工作负载,比如 Web 服务器或代码储存库(repositories)
- Balance between(平衡):
- Compute
- Memory
- Networking
* * *
### Compute Optimized(计算优化)
- 适合需要高性能处理器的计算密集型任务:
- 批处理(Batch)
- 媒体转码(Media Transcoding)
- 高性能 Web 服务器
- 高性能计算(High Performance Computing = HPC)
- 科学建模和机器学习
- 专用游戏服务器
* * *
### Memory Optimized(内存优化)
- 可以为内存中处理大型数据集的工作负载提供快速性能
- Use case:
- 高性能,关系型/非关系型数据库
- 分布式(Distrubuted)Web 规模缓存存储
- 针对BI(商业智能)优化的内存数据库
- 对大型非结构化数据进行实时处理的应用程序
* * *
### Storage Optimized(存储优化)
- 适合需要对本地存储上的**大型数据集**进行**高顺序读写访问**的存储密集型任务
- Use case:
- 高频率在线事务处理(High frequency online transaction processing = OLTP)系统
- 关系型 & NoSQL 数据库
- 内存数据库缓存(例:Redis)
- 数据仓库应用程序
- 分布式文件系统
* * *
* * *
## Security Groups Introduction
- 安全组(Security Groups)是AWS网络安全的基础
- **安全组**控制了流量如何允许**进出 EC2 实例**
- 安全组仅包含**允许**规则
- 安全组可以引用 **IP** 或者**安全组**
* * *
## Security Groups Deeper Dive
- 安全组充当 EC2 实例的防火墙
- 规定(Regulate):
- Access to Ports(访问端口)
- 授权 IP 范围 - IPv4 和 IPv6
- 控制**入站**(inbound)网络(从其他位置到实例)
- 控制**出站**(outbound)网络(从实例到其他位置)
* * *
## Security Groups Diagram
EC2 Instance IP xxx.xxx.xxx.xxx (attached)SG1,Inbound,Filter IP/Port with Rules(√) ←—— IP xxx.xxx.xxx.xxx(authroised port 22)
EC2 Instance IP xxx.xxx.xxx.xxx (attached)SG1,Inbound,Filter IP/Port with Rules (×)XXX← IP xxx.xxx.xxx.xxx(not authorised port 22)
EC2 Instance IP xxx.xxx.xxx.xxx (attached)SG1,Outbound,Filter IP/Port with Rules (√)——→ WWW,Any IP - Any Port
* * *
## Security Groups Good to Know
- 可以被附加到多个实例
- 锁定到一个区域,或者一个 VPC 组合
- 确保被阻止的流量不会被 EC2 看到
- 更好的维护通过 SSH 访问单独的安全组
- 如果应用程序无法被访问给出 time out(连接超时)错误,那么这是一个安全组问题
- 如果应用程序无法被访问给出 connection refused(连接被拒绝)错误,那么这是应用程序错误或应用程序未被启动
- **默认**情况下,所有**入站**流量都被**阻止**,所有**出站**流量都被**授权**
* * *
## Referencing other security groups Diagram
EC2 Instance IP xxx.xxx.xxx.xxx ←—— SG1,Inbound,Authorising SG1/SG2(√)←—— SG1(attached)EC2 Instance IP xxx.xxx.xxx.xxx
EC2 Instance IP xxx.xxx.xxx.xxx ←—— SG1,Inbound,Authorising SG1/SG2(√)←—— SG2(attached)EC2 Instance IP xxx.xxx.xxx.xxx
EC2 Instance IP xxx.xxx.xxx.xxx XXX← SG1,Inbound,Authorising SG1/SG2(×)XXX← SG3(attached)EC2 Instance IP xxx.xxx.xxx.xxx
* * *
## Classic Port to know
- 22 = SSH(Secure Shell) - 登录 linux 实例
- 21 = FTP(File Transfer Protocol) - 上传文件到文件共享
- 22 = SFTP(Secure File Transfer Protocol) - 使用 SSH 上传文件
- 80 = HTTP(Hyper Text Transfer Protocol) - 访问不安全网站
- 443 = HTTPS(Hyper Text Transfer Protocol Secure) - 访问安全网站
- 3389 = RDP(Remote Desktop Protocol) - 登录 Windows 实例
* * *
* * *
## EC2 Instance Connect
- 在浏览器中连接 EC2 实例
- 无需使用以下载的密钥文件
- AWS 自动将临时密钥上传到 EC2
- 仅适用于 Amazon Linux 2 开箱即用(out-of-the-box)
- 需要确保端口(Port)22 仍然是被打开的状态
* * *
* * *
## EC2 Instances Pirchasing Options
- On-Demand Instances(按需实例)
- Reserved(保留实例):
- 1 & 3 年
- Reserved Instances - 长期工作负载
- Convertible Reserved Instance(可转换保留实例) - 长期工作负载,具有灵活性的实例
- Savings Plans(储蓄计划):
- 1 & 3 年
- 承诺使用量,长期工作负载
- Spot Instance(现货实例) - 短期工作负载,最便宜,可能会丢失实例(可靠度低)
- Dedicated Hosts(专用主机) - 预定整个物理服务器,控制实例放置
- Dedicated Instance(专用实例) - 没有其他客户会共享硬件
- Capacity Reservations(容量预订) - 在任何期限内保留特定 AZ(Available Zone) 的容量
* * *
### On Demand
- 仅支付使用的费用:
- Linux 或者 Windows - 在一分钟后,按秒计费
- 其他系统 \- 按小时计费
- Cost(成本)最高,但没有预付款
- 没有长期使用承诺
- 推荐用于**短期**和**不可间断**的,且无法预测应用程序行为的工作负载
* * *
### Reserved Instance
- 与按需实例相比,拥有72%的折扣
- 预定了特定的实例属性(实例类型,地区,租赁,操作系统)
- 租期
- 1 年(+折扣)
- 3 年(+++折扣)
- 付款选项
- No Upfront(无预付)(+折扣)
- Partial Upfront(部分预付)(++折扣)
- All Upfront(全预付)(+++折扣)
- 推荐用于稳定使用应用程序(Think Database)
- 可以在保留实例商店(Market place)购买或出售
- 可转换保留实例
- 可以转换EC2 实例类型,实例系列,操作系统,范围和租赁
- 拥有高达66%的折扣
<br>
#### *TIPS:折扣随着时间的推移而变化,并不固定*
* * *
### Savings Plans
- 根据长期使用情况获得折扣(高达72%的折扣,与Reserve类似)
- 承诺特定类型的使用(每小时$10,持续1年或3年)
- EC2 储蓄计划外的使用情况是按需付费
- 锁定到特定的实例系列和AWS区域(例:us-east-1区域的M5系列)
- 灵活性:
- 实例大小(例:m5.large,m5.2xlarge)
- 操作系统(例:Linux,Windows)
- Tenancy(租赁)(Host,Dedicated,Default)
* * *
### Spot Instance
- 与按需实例相比,可以获得搞到90%的折扣
- 如果租用时的最高价格低于当前现货价格,会在任何时候丢失实例(仅有2分钟保留期来进行调整)
- AWS 中最具有成本效益的实例
- 适用于抗故障能力高的工作负载:
- 批处理
- 数据分析
- 图像处理
- 任何分布式工作负载
- 具有灵活开始和结束时间的工作负载
- 不适合关键工作负载或数据库
* * *
### Dedicated Hosts
- 具有 EC2 实例容量的物理服务器,完全专属使用
- 允许满足合规性要求并使用现有服务器绑定软件许可证(per-socket,per-core,pe-VM software licenses)
- 购买选项
- On-demand - 为被激活的主机按秒支付费用
- Reserved - 1 或 3 年(无预付,部分预付,全预付)
- 最昂贵的选项
- 适用于具有负载许可模式的软件(BYOL - Bring Your Own License)
- 或者需要强监管或合规性需求的公司
* * *
### Dedicated Instances
- 实例在专用的硬件上运行
- 可以与统一账户中的其他实例共享硬件
- 无法控制实例放置(可以在 Stop/Start 之后移动硬盘)
* * *
### EC2 Capacity Reservations
- 在任何时间内都在特定的 AZ 中保留按需实例容量
- 需要时始终可以访问EC2容量
- 没有时间承诺(随时创建/取消),没有账单折扣
- 结合区域保留实例和储蓄计划,可以获得账单折扣
- 无论是否运行实例,都要按需付费
- 适用于需要位于特定 AZ 的短期且不间断的工作负载
* * *
## Example
- On demand:随时来度假村居住,支付全价
- Reserved:提前计划,如果计划长期入住,可以获得不错的折扣
- Saving Plans:在特定时期内每小时支付一定金额,并入住任何房间类型(例:特大号床,套房,海景房...)
- Spot Instances:酒店允许人们竞标空房间,出价最高的人保留房间,当然也随时会被踢出去
- Dedicated Hosts:预定了度假村的整栋建筑
- Capacity Reservations:即使不入住,也可以以全价预定一个房间
* * *
## EC2 Spot Instance Requests
- 与按需相比可以获得高达90%的折扣
- 当**当前现货价格**小于**最高可支付价格**时,定义**最高可支付价格**以获取实例
- 每小时现货价格因因容量而异
- 如果当前现货价格大于定义的最高可支付价格,则须在2分钟的宽限期内停止或终止(terminate)实例
- 其他策略:Spot Block(现货块)
- 在指定时间范围内(1至6小时)内不被打断的现货块
- 在极少数情况下,实例可以被回收
- 用于批处理,数据分析,或其他抗故障能力较强的工作负载
- 不适合关键工作或数据库
* * *
## Terminate Spot Instance
- 只能取消现货请求的打开,活动或禁用
- 取消现货请求不会终止实例
- 必须首先取消现货请求,然后再终止关联的现货实例,否则关闭实例后会立即被现货请求导致实例再次被打开
* * *
## Spot Fleets(现货队列)
- 现货队列 = 一组现货实例 + 按需实例(可选的)
- 现货队列将尝试在价格限制下满足目标容量
- 定义可能的启动池(Launch pool):实例类型(m5.large),操作系统,AZ(可用区域)
- 可以有多个启动池,以便队列可以选择
- 现货队列在达到容量或最大成本时,停止启动实例
- 现货实例分配策略
- LowestPrice(最低价格):来自价格最低的池(成本优化,短时工作负载)
- Diversified(多样化):分布在所有池中(可用性高,长时工作负载)
- CapacityOptimized(容量优化):对于数个实例具有最佳容量的池
- 现货队列允许我们以最低价格自动请求现货实例、
* * *
## EC2 Section - Summary
- EC2 Instance:AMI(OS) + Instance Size(CPU + RAM) + 存储 + 安全组 + EC2 User Data
- Security Groups:连接到 EC2 实例的防火墙
- EV2 User Data:在实例第一次启动时的脚本
- SSH:启动进入 EC2 实例的终端(port:22)
- EC2 Instance Role:连接到 IAM Role
- Purchasing Options:按需,现货,保留(Standard + Convertible + Scheduled),专用主机,专用实例)
* * *
* * *
* * *

