BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

将虚拟化搬到云上:Vagrant在AWS上的实践

| 作者 张天雷 关注 4 他的粉丝 发布于 2015年5月7日. 估计阅读时间: 5 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

在研发、调试以及多团队合作过程中,开发人员难免会用到虚拟化技术来帮其构建易于复制和重建的环境。需求的牵引使得VagrantVirtualBox以及VMWare Workstation等虚拟化相关的产品相继诞生。这些产品很好的满足了企业和个人的需求,实现了安全性、便捷性等方面的功能。而另外一方面,虚拟化技术发展的也带动了云计算的崛起。因其高效、便捷和经济的特性,很多公司纷纷开始使用云平台作为其主要的计算环境。Docker 等应用容器引擎的出现,更是为开发者提供一个可移植的容器,方便了应用程序的开发和部署。事实上,云计算已经带来了企业在线业务模式的变革。

但是,在诸多好处的同时,目前的基础架构即服务 (IaaS) 云模型也存在问题。它要求软件开发者必须使用虚拟机管理应用程序。对虚拟机映像的要求限制了云使用者的选择,甚至对某些人而言,还成为了本地环境转移到云平台的一大障碍。为了试图解决该问题,嵌套虚拟化的概念被提出。

所谓嵌套虚拟化就是在虚拟机里再运行虚拟机。对云用户来说,嵌套虚拟化就意味着虚拟机的格式可以与云平台无关。如果能够支持嵌套虚拟化,云平台就可以演变成了高度灵活的虚拟化基础架构,为用户提供更多自由使用的空间。那么,究竟有没有可能在现有框架下,实现类似嵌套虚拟化的功能呢?

针对该问题,GigaSpaces的Michael Sverdlik提供了一种解决方案。本文接下来以云应用的编排系统Cloudify和最流行的云平台AWS作为例子,详细介绍他如何一步一步的创建v2v(虚拟到虚拟)机器,及如何创建可以上传到任何AWS环境的VMDK磁盘镜像。

首先,用户需要利用基于Ruby的Vagrant工具。该工具主要用于创建和部署虚拟化开发环境,其以VirtualBoxVMware或者AWS等虚拟机为底层,以上层Chef等工具来完成自动化安装和配置软件的工作。利用该工具,用户生成一个Vagrantfile和一个已经在VirtualBox镜像上预装Cloudify Manager的Vagrant box。然后,利用Vagrant和VirtualBox就可以在本地对Cloudify进行测试和评估。其过程可以简单概括为:下载Vagrantfile、把vagrant运行起来和利用Packer来创建Vagrant Box三个部分。作为与Vagrant出自相同作者的Packer,创建镜像只需要根据教程输入命令即可。

接下来,再仔细审视一次有没有可能不使用嵌套虚拟化而解决相应的需求。可能的解决方案包括:直接利用本地物理机器、利用专门的方法来允许嵌套虚拟化但是,这两种方案显然需要额外的花费以及精力。还有一种方法就是,直接把虚拟机磁盘镜像转换为VMDK进行使用。关于如何实现物理到虚拟以及虚拟到物理的方法,之前都已经有人实现过。但是,虚拟到虚拟(V2V)究竟能不能实现呢?文章接下来就开始尝试。

所需要的工具和环境包括作为脚本语言的Python、与AWS结合的Boto API、作为任务执行器的Fabric、Packer以及IaaS提供商AWS。具体的实现步骤为:

  1. 在利用packer预装的cloudify上创建一个源镜像(AMI)
  2. 在AWS中利用快照或者源镜像作为一个磁盘来启动一个工作实例
  3. 在工作镜像上,创建一个raw镜像卷作为一个文件,然后在其上创建一个ext4分区
  4. 把数据从源镜像磁盘中复制到之前创建的ext4分区中
  5. 在ext4分区上安装bootloader
  6. 把raw镜像转变为VMDK
  7. 把VMDK和一个OVF描述符和vagrant元数据一起创建一个.box的压缩包
  8. 上传到S3
  9. 清除

最后的结果如何,读者可以根据Github中提供的脚本进行亲自测试。


感谢徐川对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT