基于剑桥大学的Xen虚拟化技术
,亚马逊的弹性计算云(Elastic Computer Cloud——EC2)
是
一个允许用户按需创建、启动、停止基于Linux的服务器实例的计算服务。每个虚拟机实例是一个虚拟的私有服务器,它在启动时通过DHCP获取一个IP地
址。虚拟机镜像——亚马逊称之为Amazon Machine
Images(AMIs),可以像VMware的虚拟设备那样被存档和传输,因此开发者可以安装一个所需软件的初始实例并快速将其部署到许多虚拟服务器
上。
InfoQ的上一篇文章
着
眼于该服务对于开发团队的吸引力,如Oracle的Coherance团队,他们在短期内需要大量计算能力。该服务的灵活性还使其对那些基于Web的创业
企业具有很强的吸引力:因为不需要购买昂贵的硬件,你没有前期投入,运行成本相当的低,而且你可以在你的Linux实例上安装任何想装的软件。通过在需要
的时候启动或停止额外的实例,使得该服务可以很方便地适应流量模式的变化。最后,该服务有知名的亚马逊做强力后盾,它有着交付高伸缩性、健壮性的Web基
础架构的业绩。尽管这样,缺少SLA(Service Level
Agreement——服务水平协定)仍造成了采用EC2的巨大障碍,有一些企业不愿意将其数据或关键业务委托到EC2上。
还有实际的问题需要克服。比如虚拟服务器使用DHCP获取地址的本质意味着服务器每次启动IP地址都会改变。其结果是,在停机之后,Web站点需要
更新其DNS入口——这一过程可能需要花费高达96个小时才能完成。为解决这一问题,亚马逊推荐使用动态DNS解决方案,如DynDNS,在最近一篇博客文章
中,Codesta的Oliver Chan提供了如何为EC2设置DynDNS的细节。
相同的博客还为那些考虑使用EC2服务的开发者提供了一些其他有用的线索:
- “在花费太多时间配置和定制AMI之前,一开始先找一个适合你需求的现成的AMI,这样你就不必后面的旅途中重复同样的工作了。检查一下亚马逊资源中心上的公用AMI列表
,可能会找到适合你需求的东西”
- “当使用‘ec2-bundle-vol’命令打包你自己的镜像时,使用‘-d’标志以确保你指定了一个干净的目录,否则将同一镜像打包两次会因为临时文件冲突而导致错误发生。”
- “当在你的镜像上工作时,注意主驱动器/分区(系统文件放在这儿)只有十分有限的容量(我们的情况是10GB)。因此当要处理大的文件/目录时使用‘/mnt’,它有超过100GB的空间。”
- “如果机器停止了,除了那些最后一次你执行‘ec2-bundle-vol’备份了的数据,你所有的数据都将丢失。”
随着EC2持续增强,使开发者能更容易的使用该服务的开源工具和类库正不断涌现。其中一个这样的项目是,构建在Chris Richardson的EC2Deploy之上的Cloud Tools
,它由以下几部分组成:
- EC2Deploy框架——一个基于Groovy的框架,用于把Java EE应用部署到Amazon EC2。
- 被配置运行Tomcat及与EC2Deploy一起工作的AMI。
- 一个Maven插件,使用EC2Deploy往EC2上部署Web应用。