如果你想构建一个内部云或私有云,Canonical希望你选择Ubuntu 10.04作为操作系统,这个最新的Ubuntu版本包含了一套叫做Ubuntu企业云的功能集。
在保持开源的传统上,Ubuntu企业云是和开源的Eucalyptus私有云平台集成的,这样可以减少先安装Linux,再安装Eucalyptus,最后进行私有云配置的步骤。此外,对于公共云用户,Ubuntu/Eucalyptus还与亚马逊EC2公共云兼容。
注意,你必须花时间熟悉Ubuntu和Eucalyptus,因为很多问题查阅Ubuntu文档是找不到解决办法的,例如,我们发现Ubuntu文档对自定义镜像很少有描述,而这是部署Ubuntu企业云一个重要的步骤。
基本上,Ubuntu企业云可以部署在企业内部运行作业/批处理应用程序的硬件上,最初的想法是分配存储,然后快速建立多个虚拟机来处理数据,收集数据,然后推倒基础设施,便于随后再重用。
Ubuntu企业云提供类似于亚马逊公共云基础设施的内部云控制方法,它的工具可以用来处理周期性作业或一次性分布式应用程序,如DNA分析,视频渲染,或数据库表重新格式化/重建索引。
Ubuntu企业云使用开源的基于内核的虚拟机平台(KVM)托管虚拟机,这一点很重要,因为Eucalyptus提供的镜像既包括KVM又包括Xen内核,但如果你使用Ubuntu企业云,则必须使用KVM。
开始
为了成功地运行Ubuntu企业云,我们至少要两个专用系统,一个用于前端应用,其中包括云控制器,集群控制器,Walrus控制器和存储控制器,其它系统成为一个可以托管虚拟机的节点。
控制器服务很好理解,www.linuxidc.com因为它们与亚马逊EC2云组件非常类似,Ubuntu企业云云控制器是一个前端服务应用程序,要连接到它进行云服务的管理,它支持调用EC2 API,并为我们提供了Web用户界面。
集群控制器管理各个集群节点(VM)资源,并通过开源libvrt库与每个节点/VM通信,关于给定硬件平台上可以托管多少个虚拟机,Canonical也有相关基线建议。
Walrus控制器扮演类似亚马逊S3(简单存储服务)的角色,Ubuntu企业云存储控制器与亚马逊的弹性块存储(EBS)类似,可以将连续的虚拟磁盘附加给正在运行的实例,激活资源存储虚拟化控制,为便于管理,每个集群都有一个存储控制器。
安装
安装过程非常简单,插入Ubuntu服务器光盘,选择Ubuntu企业云,安装过程中只需要我们简单地进行选择或是输入主机名,ip地址范围等浅显易懂的内容。
安装程序会自动创建证书,密钥,私钥和其它相关数据,如果是独立安装的Eucalyptus,那么大部分参数需要手工设置。
接下来在节点上运行安装程序,如果两台机器都在同一个网络上,节点会自动发现集群和云控制器,虽然可以在单个机器上安装,但Ubuntu建议不要在生产环境中这样做。
配置
大部分配置信息是在安装期间设置的,我们也可以连接到Ubuntu企业云Web界面,默认管理员用户密码是admin/admin,我们可以修改用户的密码,或邮件地址、姓名等信息。
完成设置后,我们可以下载一个zip文件,其中包括我们的凭据(X.509证书,公/私钥对),这些东西与亚马逊EC2工具都是兼容的,同时,你还可以获得一个查询ID和安全密钥,推荐使用Firefox的HybridFox插件来管理。
为了省电,我们可以将未使用的节点关闭,需要时再开启,设置好后,控制器可以根据需要远程开关机,我们必须将各个节点的网卡“通过局域网唤醒”功能开启。
此外,服务器托管主机至少要支持下面几种常见的Linux电源管理命令:pm-suspend,pm-hibernate或 poweroff。默认情况下,如果节点超过5分钟仍然没有人使用,就会自动使用上述命令之一关机。
为此我们专门进行了测试,5分钟后确实自动关闭了,后来我们尝试加载一个新实例,机器又自动开机了。
镜像包
必须预先配置一个虚拟机,操作系统仅安装必需的组件,虚拟机构建好后就可以复制成多个虚拟机实例了。
Ubuntu企业云Linux镜像的方法和命令与亚马逊EC2非常相似,如果你已经熟悉了在EC2上的操作,那么这里一点问题都没有,即使不会,Eucalyptus Web页面也提供了足够的帮助信息。
为了打包我们的镜像,我们从一个基础的Ubuntu 10.04企业云服务器镜像开始,启动好实例后,我们使用ssh连接到机器,根据指示安装更多的应用程序功能选项,在这个例子中,我们使用了LAMP服务器选项。初始化安装后,我们升级到最新的软件包,然后安装我们的测试网站,最后使用命令行工具构建镜像包,打包命令非常聪明,它会先检查磁盘空间。
镜像打包不是一件容易的事情,一般都要经过大量的测试和错误过程,下面是我们用来打包最新Ubuntu 10.04的命令:
euca-bundle-image -i /boot/initrd.img-2.6.32-21-generic-pae –ramdisk true -r i386
euca-upload-bundle -b lamp-bucket -m /tmp/initrd.img-2.6.32-21-generic-pae.manifest.xml
euca-register lamp-bucket/initrd.img-2.6.32-21-generic-pae.manifest.xml
euca-bundle-image -i /boot/vmlinuz-2.6.32-21-generic-pae –kernel true -r i386
euca-upload-bundle -b lamp-bucket -m /tmp/vmlinuz-2.6.32-21-generic-pae.manifest.xml
euca-register lamp-bucket/vmlinuz-2.6.32-21-generic-pae.manifest.xml
euca-bundle-vol -p lamp-server -d /mnt –kernel eki-0E6C159C –ramdisk eri-4FE51677 -r i386 -s 5120
euca-upload-bundle -b lamp-bucket -m /mnt/lamp-server.manifest.xml
euca-register lamp-bucket/lamp-server.manifest.xml
使用/监控
Ubuntu企业云使用Eucalyptus的euca命令来监控和管理实例。此外,基于Firefox的插件HybridFox为监控、访问和使用云资源提供了一个简单的GUI,另外还有亚马逊提供的ElasticFox,但在我们的测试中,ElasticFox不能工作,因为最新的版本与Eucalyptus不兼容。HybridFox工作得很好,结合HybridFox和Ubuntu企业云Web界面可以简化私有云的管理,我们也建议使用这对组合。
使用HybridFox,我们可以查看所有的镜像,实例,安全密钥对,安全组,弹性IP地址范围,EBS卷和集群,我们可以从一个镜像创建一个新的实例,通过ssh连接到这些实例,添加或编辑我们的密钥对,安全组,创建/删除或附加EBS卷。遗憾的是,我们不能从运行中的实例创建新的包,必须从命令行来完成这项工作。
总结
Ubuntu企业云在Ubuntu和Ecalyptus,以及一系列命令行工具提供紧密集成,这些命令与亚马逊的指令兼容,因此可以透明地将私有云转移到亚马逊公共云。如果公共云让你精神紧张,也可以利用Ubuntu和Ecalyptus在数据中心轻松搭建自己的内部云了。