EC2 (Elastic Compute Cloud)
- AMI, Amazon machine image, 机器镜像,有四种类型
- Published by AWS
- AWS marketplace
- Generated from existing instance
- Uploaded from VMDK, VHD, etc
- How to address an instance
- Public DNS name
- Public IP address
- Elastic IP address
- Initial access
- 可以通过用户名/密码,证书的方式login instalce,如果通过证书,那么在Linux上AWS会自动将对应的publickey存入文件:~/.ssh/authorized_keys
- 如果登录windows,则需要通过console上传private key来解密登录密码
- Firewall
- 可以通过security group来保护instance,指定port,protocol,source/destination等规则
- 如果security group有重复的部分,则取并集作为最终的rule
- Security group是有状态的,这与ACL不同
- Bootstrapping
- 在启动instance的时候,可以指定初始化执行脚本,用于patchs,updates和某些应用软件的安装,或一些其它初始化的工作
- UserData没有加密,因此不要存放敏感的数据
- VM Inmport/Export
- 可以将On-premises环境的VM导入到EC2,也可以将EC2的instance导出到On-premises环境的VM
- 通过AMI创建的Instance不支持导出,只能导出哪些通过导入方式创建的instance
- Metadata
- 通过在instance里面访问URL得到当前instance的metadata: http://169.254.169.254/latest/meta-data
- Metadata 包含instance id,instance type,AMI,security group等
- Manage Instance
- 可通过Tag来管理instance,分组等,默认最多支持10个tag
- Monitor Instance
- 可通过CloudWatch来监控instance的状态,如CPU,磁盘,网络利用率等,但不能监控内存使用
- 修改Instance类型
- 可以修改instance的type和security group,如果修改type,需要先shutdown instance,再选择其它的类别,现在支持不同family类别的修改了
- 低配置的instance修改为高配置的instance,会增加额外费用
- Termination Protection
- 可以设置termination protection,这样在console,cli,API中就不能直接terminate instance,需要关闭termination protection
- 但Auto Scaling group,spot instance不受此影响,该terminate就terminate
- Price options
- On-demand instance: 按需实例,可随时创建,随时terminate,价格最高
- Reserved-instance:预留实例,长期使用,价格一般,但需要长期租用
- All upfront:首次支付所有费用,最便宜(当前三种费用比较,以下一样)
- Partial upfront,首次支付部分费用,剩下了每月支付,价格一般
- No upfront,首次不支付费用,每月支付,价格最贵
- Spot-instance:竞价实例,价格最低。如何理解spot instance?AWS是一个大的计算和存储平台,一般情况下都会有一些剩余的计算和存储资源。为了更充分利用这些资源,减少浪费,AWS提供spot instance,用户可以以非常廉价的费用来申请spot instance。如果用户给定的价格高于当前spot instance的价格,且AWS还有额外的资源,那么AWS就会为用户分配相应的资源。但如果AWS没有额外的计算和存储资源,或者用户的报价低于当前spot instance价格(spot instance价格可能会经常变化),AWS会提前两分钟通知instance,并自动terminate instance。这种类型的instance通常适用于允许instance随时被terminate的场景,如获取和处理queue数据,大数据,媒体解码等。可以理解为,多一个spot instance,则整体系统性能会提高,少一个spot instance,也不会太影响整个系统,只是性能稍低。
- 最佳实践:一般情况下,上面上种instance可以混合使用,有长时间运行需求,则创建一些reserved instance,在某些时间段有请求高峰,则创建一些on-demand instance,如果可以允许terminate instace,如处理queue数据等,则可以考虑使用spot instance。
- Tenancy options
- Shared tenancy:共享租期,默认方式。所有账号的所有instance共享AWS硬件环境
- Dedicated instance:专用instance,运行在专用的硬件环境上,如磁盘,网卡,内存等,且不会与其他account共享资源。AWS随机分配某个host。
- Dedicated host:专用主机,当前帐号专用某一个server,用户可以指定某个host。
- 注意:如果在创建VPC的时候指定了某种类别,则以VPC中的为准,而不管instance本身设置成什么类型
- Place Groups
- 用于提高网络性能
- Enhanced networking
- 通过enable Single Root I/O Virtualization (SR-IOV)来提高网络性能
- More Packages Per Second (PPS)
- Lower latency
- Less jitter
- Instance Store
- 某些高规格的instance支持instance store,在创建volume的时候可以选择是EBS还是instance store
- Instance store免费,low durability,high IOPS
- 存放临时数据,如缓存,交换分区,buffer等,不要存放需要持久化的数据
- 在terminate,stop instance的时候会自动清除,但reboot的时候不会
EBS (Elastic Block Store)
- Magnetic volumes
- 最便宜,最基本的卷
- 容量:1GB-1TB
- IOPS:<=100
- 使用场景:不常访问的数据,需要低成本,顺序访问磁盘
- General-Purpose SSD
- 最常用的卷
- 容量:1GB-16TB
- IOPS:<10000
- 使用场景:操作系统分区,小型数据库,开发和测试环境
- Provisioned IOPS SSD
- 性能最好的卷,价格最贵
- 容量:4GB-16TB
- IOPS:<20000
- 使用场景:大型数据库应用,需要性能高的场景
- Throughput-Optimized HDD
- 性能一般,但对磁盘吞吐量做了优化
- 容量:<16TB
- IOPS:500
- 吞吐量:500MB/s
- 场景:IOPS要求低,但对吞吐量要求高的场景
- Cold HDD
- 性能一般,但对磁盘吞吐量做了优化
- 容量:<16TB
- IOPS:250
- 吞吐量:250MB/s
- 场景:IOPS要求低,但对吞吐量要求高的场景
- 分区性能比较
- Provisioned IOPS SSD > General-Purpose SSD > Throughtput-Optimized HDD > Cold HDD > Magnic
- EBS-Optimized instances
- 创建instance时候可以选择该instance以提高EBS的性能,但须额外支付一定费用
- Protecting Data
- EBS的数据本身会在AZ内复制,以提高数据安全,这个是AWS控制的,对用户完全透明
- 通过创建snapshot,可以增量备份volume,snapshot存在于AWS内部账号的S3上面,用户不能直接访问,snapshot在AZ间复制,这个也是AWS控制的
- 发送命令创建snapshot后,snapshot处于pending状态,volume不受影响,可立即使用
- 通过snapshot还原volume后,volume立即可用,但数据是lazy load的,在访问时才第一次加载
- Snapshot可用于volume的扩容,先在volume上创建snapshot,再通过snapshot创建更大容量的新volume
- Volume支持KMS加密以提高数据安全