安全组、EBS、实例存储、AMI

安全组总结

在每一个EC2实例创建的过程中,我们都会被要求为其指定一个安全组(Security Group)。这个安全组充当了主机的虚拟防火墙作用,能根据协议、端口、源IP地址来过滤EC2实例的入向和出向流量。

除了使用安全组之外,我们还可以继续保留系统原生的防火墙(Linux下的iptable和Windows的防火墙)。

安全组是有状态的

  • 如果某个流量被入方向的规则放行,那么无论它的出站规则如何,它的出方向响应流量都会被无条件放行
  • 如果从主机发出去的出站请求,无论入站规则如何,该请求的响应流量都会被无条件放行
  • 我们不能使用安全组来禁止某些特定的IP地址访问主机,要达到这个效果需要使用网络访问控制列表(NACL)
  • 在安全组内只能设置允许的条目,不能设置拒绝的条目
  • 安全组的源IP地址可以选择所有IP地址(0.0.0.0/0),特定的IP地址(比如8.8.8.8/24),或者处于同一个VPC中的其他安全组
  • 一个流量只要被安全组的任何一条规则匹配,那么这个流量就会被允许放
  • 安全组会关联到EC2实例的ENI(网络接口)上

Example

  • 安全组会跟踪TCP/22的入向和出向流量,因为源IP地址定义的是具体的地址(194.233.74.243/32),而不是所有IP地址(0.0.0.0/0)
  • 安全组不会跟踪TCP/80的流量,因为其入向和出向的流量都是针对所有IP地址(0.0.0.0/0)
  • 安全组会跟踪ICMP流量,因为无论规则如何,安全组都会跟踪ICMP流量
入站规则
协议类型 端口号 源 IP
TCP 22 (SSH) 194.233.74.243/32
TCP 80 (HTTP) 0.0.0.0/0
ICMP 全部 0.0.0.0/0
出站规则
协议类型 端口号 源 IP
全部 全部 0.0.0.0/0

安全组(Security Group)和网络访问控制列表(Network Access Control List)都扮演了类似的防火墙功能。

EBS

EBS的特点

  • 亚马逊EBS卷提供了高可用、可靠、持续性的块存储,EBS可以依附到一个正在运行的EC2实例上
  • 如果我们的EC2实例需要使用数据库或者文件系统,那么建议使用EBS作为首选的存储设备
  • EBS卷的存活可以脱离EC2实例的存活状态。也就是说在终止一个实例的时候,我们可以选择保留该实例所绑定的EBS卷
  • EBS卷可以依附到同一个可用区(AZ)内的任何实例上
  • EBS卷可以被加密,如果进行了加密那么它存有的所有已有数据,传输的数据,以及制造的镜像都会被加密
  • EBS卷可以通过快照(Snapshot)来进行(增量)备份,这个快照会保存在S3 (Simple Storage System)上
  • 我们可以使用任何快照来创建一个基于该快照的EBS卷,并且随时将这个EBS卷应用到该区域的任何实例上
  • EBS卷创建的时候已经固定了可用区,并且只能给该可用区的实例使用。如果需要在其他可用区使用该EBS,那么可以创建快照,并且使用该快照创建一个在其他可用区的新的EBS卷
  • 快照还可以复制到其他的AWS区域

不同类型的EBS卷

1.png

实例存储

  • 实例存储为EC2实例提供了短暂的块存储设备
  • 实例存储(Instance Store Volumes)又叫做短暂型存储(Ephemeral Storage)
  • 实例存储是AWS的宿主机上依附的存储(可以理解为实例存储是真实的物理机上安装的磁盘,如下图;而EBS则是专门的另外的存储设备)
  • 实例存储比较适合存放短暂型、变化很快的数据,比方说缓存、爬虫数据和其他短暂的数据
  • 实例存储的大小取决于实例的类型
  • 实例存储的存活与否与实例的状态有关系
  1. 实例重启,实例存储的数据将不受影响
  2. 一旦实例终止,实例存储将永久消失
  3. 实例存储的实例不能进入停止状态(Stop),只能重启(Reboot)或者终止(Terminate)。
  • 另外,需要注意的是,并不是所有的实例类型都支持实例存储。在创建实例的时候,我们可以在AWS市场上选择支持实例存储的镜像,然后在下一步我们只能选择某些特定的实例类型大小;而对于EBS来说,没有那么多限制,我们可以选择任意的实例类型大小。

2.png

AMI系统镜像和快照

Amazon Machine Image (AMI) 是亚马逊AWS提供的系统镜像,这个AMI包含了如下的信息:

  • 由实例的操作系统、应用程序和应用程序相关的配置组成的模板
  • 一个指定的需要在实例启动时附加到实例的卷的信息(比方说定义了使用8 GB的General Purpose SSD卷)

下图所示的是AMI的生命周期,我们可以创建并注册一个AMI,并且可以使用这个AMI来创建一个EC2实例。同时我们也可以将这个AMI复制到同一个AWS区域或者不同的AWS区域。我们同样也可以注销这个AMI镜像。

3.png

EBS快照做成的镜像

我们可以通过创建一个关于EBS的快照将Amazon EBS卷上的数据备份起来,方便之后基于该快照创建新的EBS卷。快照还有如下特点:

  • 备份的快照将会保存在亚马逊S3 (Simple Storage System)
  • EBS快照属于增量备份,即第二次之后的快照只会更新变化了的那一部分数据
  • 我们可以在EC2实例运行的状态下进行EBS的快照操作,但会给EC2的系统带来一定延迟(CPU,内存利用率会变高)
  • 最佳实践是将EC2实例停止,然后将EBS从EC2上卸载下来,进行快照操作
  • 我们可以基于EBS快照在同一个AWS区域创建新的EBS卷,这个卷可以是任何EBS类型,任何支持的大小
  • 我们也可以将快照复制到其他AWS区域
  • 我们可以将快照共享给其他的AWS用户
  • 加密的EBS卷在创建快照后,该快照也会被自动加密
  • 通过加密快照创建的EBS也是自动加密的
  • 在复制未加密的快照时,我们可以在复制过程中对其加密

AMI和EBS快照的使用场景

有几个比较常见的场景会需要我们使用AMI和EBS快照的功能。

如果我们想将一个EC2实例从一个AWS区域迁移到另一个AWS区域,我们需要:

  1. 创建基于这个EC2实例的AMI
  2. 将这个AMI进行复制,复制到另一个AWS区域
  3. 通过这个AMI创新创建一个EC2实例
  4. 充当数据盘的EBS也需要做EBS快照
  5. 将这个EBS快照进行复制,复制到另一个AWS区域
  6. 通过这个EBS快照创建EBS卷,并且依附到EC2实例上去

如果我们想复制一个EBS卷到该AWS区域的不同可用区,我们可以:

  1. 创建一个EBS快照
  2. 通过EBS快照创建一个新的EBS卷,并且定义大小、卷类型、是否加密等属性

4.png

5.png

6.png

7.png

8.png

9.png

10.png

11.png

12.png

13.png

14.png

15.png

EBS (Elastic Block Storage)小结

  • EBS的不同类型,需要了解不同类型的EBS主要的使用场景
  1. 通用型SSD – GP2 (高达10,000 IOPS),适用于启动盘,低延迟的应用程序等
  2. 预配置型SSD – IO1 (超过10,000 IOPS),适用于IO密集型的数据库
  3. 吞吐量优化型HDD -ST1,适用于数据仓库,日志处理
  4. HDD Cold – SC1 – 适合较少使用的冷数据
  5. HDD, Magnetic
  • 不能将EBS挂载到多个EC2实例上,一个EBS只能挂载到1个EC2实例上。
  1. 如果有共享数据盘的需求,请使用EFS (Elastic File System)
  • 根EBS卷默认是不能进行加密的,但可以使用第三方的加密工具(例如BitLocker)对其进行加密
  1. 除了根磁盘外的其他卷是可以加密的

EBS快照(Snapshot)小结

  • EBS的快照会被保存到S3(Simple Storage System)上
  • 我们可以对一个EBS卷创建一个快照,这个快照会被保存到S3上
  • 快照实际上是增量备份,只有在上次进行快照之后更改的数据才会被添加的S3上
  1. 因此第一次快照所花费的时间比较长
  2. 而第二次以后的快照所花费的时间相对短很多
  • 对加密的EBS卷创建快照,创建后的快照也会是加密的
  • 从加密的快照恢复的EBS卷也会是加密的
  • 我们可以分享快照给其他账户或AWS市场,但仅限于这个快照是没有进行过加密的
  • 要为一个作为根设备的EBS卷创建快照的话,建议停止这个实例再做快照

实例存储(Instance Store)

  • 实例存储也叫做短暂性存储(Ephemeral Storage)
  • 实例存储的实例不能被停止(只能重启或终止),如果这个实例出现故障,那么在上面的所有数据将会丢失
  • 使用EBS的实例可以被停止,停止后EBS上的数据不会丢失
  • 重启使用实例存储的实例或者重启使用EBS的实例都不会导致数据丢失

16.png

亚马逊系统镜像(AMI)

  • AMI是区域化的,只能使用本区域的AMI来创建实例;但我们可以将AMI从一个区域复制到另一个区域