在EC2的基础篇中提到过AMI是EC2实例使用的模板,它决定了该实例中包含了哪种操作系统,哪些软件以及系统的配置。在实际的开发中经常会需要自己生成自己的AMI。
假如有一个使用场景,我在EC2实例上开发一个小型的私人项目,开发到一定阶段后就要测试,考虑到成本问题,在测试阶段不能一直启动着EC2实例。为了能够什么时候测试什么时候启动实例,其实可以将实例停止掉,然后再随时启动,但是为了防止意外删除实例,需要利用现有的实例来生成一个AMI。否则,到测试阶段为止在实例上安装的软件,安装包,以及各种配置都需要重新布置一遍。利用生成的AMI可以随时启动EC2实例。这个栗子不太好,因为对实例启动实例保护的设置的话,是不会被意外删除的。
假如在生成环境中,在实例上搭建一个网站,实例上就会包括程序,数据等,当搭建好之后,就可以提供给客户使用了。访问网站的人数是会变化的,当访问的人突然增加,系统负载增大的时候,就需要多启动几个实例来承担负载。这时候,肯定不能在新的实例上搭建环境,准备程序数据等,因为这会出现同步的问题。最简单的方法就是对正在运行的实例生成一个AMI,每当有启动实例需要的时候,就可与直接从生成的AMI上启动实例,这样可以快速的响应需求。在实际的生产环境中,会和负载均衡器和AutoScaling一起配合使用。
在介绍EC2实例的存储类型的时候接触到过EBS卷,这里再详细地介绍一下。
在利用EBS卷启动EC2实例之后,如果对作为根卷的EBS卷的大小或者类型不满意的时候,可以对生成的EBS根卷进行更改,类型以及大小都可以更改。可以新生成EBS卷,然后将新生成的EBS卷和EC2实例关联起来,这里需要注意的是,EC2所在的可用区和新生成的EBS卷所在的可用区必须相同。
在新生成EBS卷的时候,可以选择对这个EBS卷进行加密与否。如果选择加密,那么对这个加密的EBS卷生成快照后,生成的快照也是会自动被加密的;同理,通过被加密的快照来还原EBS卷的时侯,被还原的EBS卷也是会被加密的。
EBS卷的快照:可以在某个时点对EBS卷拍摄快照,这时候EBS卷生成的快照中会包含EBS卷中包含的所有数据。快照的备份:在前一个时点对EBS卷生成了一个快照,现在由于EBS卷中的数据发生了变化,再对这个EBS卷拍摄快照的话,新生成的快照中的数据,只有从上次拍摄快照后发生变化的数据。也就是说EBS卷的快照备份的时候是按照增量备份的形式进行备份的。比如每天对EBS卷都拍摄快照,那么第一天拍摄的快照中包含了EBS卷中的所有数据,第二天,EBS卷中多出了5M的数据,那么第二天拍摄的快照中只有上次拍摄快照后发生改变的数据,也就是5M的数据。第三天,EBS卷比第二天的多出1M数据的话,第三天拍摄的快照中的数据,只有第二次拍摄快照后改变的数据,也就是1M的数据,以此类推。
由于EC2实例只能利用相同可用区中的EBS卷,所以如果1a可用区中有一个EC2实例,想要利用1b可用区中的EBS卷,那么首先先对1b可用区中的EBS卷生成一个快照,然后将这个快照还原成EBS卷,还原成EBS卷的时候,可以选择还原到哪个可用区中,这时候就可以选择将其还原到1a的可用区中,这样1a的EC2实例就可以利用这个EBS卷了。如果在另一个区域中想要利用现在区域的1b可用区中的EBS卷的话,就需要将1b可用区中的EBS卷生成一个快照,然后将此快照进行复制操作,选择复制目的地的区域即可。