博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

云计算实践入门:简易搭建一个私有云平台

Posted on 2011-11-18 11:17  奥客  阅读(1519)  评论(0编辑  收藏  举报

云计算实践入门:简易搭建一个私有云平台
www.cloudcomputing-china.cn
 

 

众说周知Amazon EC2是一个公共云的计算平台,属于IaaS(基础设施即服务)这类。现在有一款开源的项目Eucalyptus(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems),同样实现了Amazon EC2的功能,由于其开源性,注定了搭建一个私有的云计算平台成为可能.  更方便的是Ubuntu9.10服务器版已经集成了Eucalyptus这个开源软件,使的搭建企业私有的云计算平台变得方便而简单。

 

下面我们将一步步来搭建这个私有的云计算平台.

 

一   准备工作

 

1)   至少准备两台机器, 当然我这里是用虚拟机软件(Sun VirtualBox)来虚拟出两台实际的机器

 

(如果你也采用Sun VirtualBox,有些注意事项,可以参见后面的附录一)

 

2)   底层操作系统:  Ubuntu9.10 服务器版  (http://www.ubuntu.com/cloud)

 

3)   云服务环境 : Eucalyptus   , ( Ubuntu9.10 服务器版 内置)    http://eucalyptus.com/

 

4)   Eucalyptus 命令行客户端

 

5)   Eucalyptus客户端: Elastic Fox   ,这是一个firefox插件 :  http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609

 

--------------------------------------------------------------------------

 

二  云计算服务的搭建(使用Ubuntu自带的向导,十分简单的哦)

 

1)    一台机器, 作为Cluster(Front End) ,  命名为: ubuntu-cluster ,  它包含了如下部分

 

Cloud Controller (clc)   Cluster Controller (cc)   Walrus (the S3-like storage service)   Storage Controller (sc)   2)    至少一台机器作为Node,    命名为: ubuntu-node1,它包含了如下部分

 

Node Controller (nc)

 

3)   在作为Cluster的机器上 ,安装基本系统: Ubuntu9.10 服务器版

 

1.安装引导时,要选择 "Install Ubuntu Enterprise Cloud" 

    2. 安装过程中,如果提示"Cluster" 还是"Node",一定要选择Cluster

    3.安装过程中,提示"Configure postfix" 时 选择 internet Site

    4. 安装过程中,提示"Name your cluster" 时 ,请取一个合适的名字,比如我取之为: cluster1

    5. 安装过程中,提示"a list of available IP addresses on your network", 一定要选择一个可用的公共IP段.

 

4)   在作为Node的机器上 ,也安装基本系统: Ubuntu9.10 服务器版

 

1.安装引导时,要选择 "Install Ubuntu Enterprise Cloud" 

    2. 安装过程中,如果提示"Cluster" 还是"Node",一定要选择Node, (如果Cluster正在运行,这一步可能不会出现,自动会选择Node

    3.安装完一个节点后,,后续的节点可以采用克隆方法,参见后面的 附录二

 

5) 在Cloud Controller(位于ubuntu-cluster)上注册所有的Node机器:  在ubuntu-cluster上执行:

 

sudo euca_conf --no-rsync --discover-nodes   至此,一个私有的云计算平台已经搭建好了,下面就开始说,如何使用了,很简单吧!

 

三 云计算平台管理之命令行工具(Euca2ools)

 

1)在   https://YourIP:8443  中注册个人信息然后登录下载 证书 euca2-yourname-x509 .zip

 

2) 在客户端机器上执行

 

$ mkdir ~/.euca   $ cd ~/.euca   $ unzip euca2-yourname-x509 .zip   $ chmod 0700 ~/.euca  $ chmod 0600 ~/.euca/*   3) 在客户端机器上执行,  安裝 Euca2ools 和 EC2-API-Tools

 

. ~/.euca/eucarc   echo "[ -r ~/.euca/eucarc ] && . ~/.euca/eucarc" >> ~/.bashrc   sudo apt-get install euca2ools   sudo apt-get install ec2-api-tools   sudo reboot   4)在客户端机器,使用 Euca2ools 上传 Kernel / Ramdisk / FS Image  (使用者可注册 Image,但只有管理者才可注册 kernel/ramdisks)

 

1. 目前 Eucalyptus 系統上没有 Kernel、Ramdisk 和 FS Image,所以我們使用官方提供的 Image (上传需要用到三个指令)

 

euca-bundle-image - 打包好將要上传的档案   euca-upload-bundle - 上传到 Eucalyptus   euca-register - 注册上传的档案   2. 上传Kernel,如:

 

euca-bundle-image -i /boot/vmlinuz-2.6.31-14-generic-pae --kernel true   euca-upload-bundle -b kernel -m /tmp/vmlinuz-2.6.31-14-generic-pae.manifest.xml   euca-register kernel/vmlinuz-2.6.31-14-generic-pae.manifest.xml   3.上传 Ramdisk

 

euca-bundle-image -i /boot/initrd.img-2.6.31-14-generic-pae --ramdisk true   euca-upload-bundle -b ramdisks -m /tmp/initrd.img-2.6.31-14-generic-pae.manifest.xml   euca-register ramdisks/initrd.img-2.6.31-14-generic-pae.manifest.xml   4. 查看已上传到档案:

 

方法一: https://YourIP:8443/#images

 

方法二: euca-describe-images

 

5. 根据查看的结果,上传FS Images:(分配 Kernel 和 Ramdisks 給 VMs 有三种方法,见附录三)

 

tar zxvf karmic-server-uec-i386.tar.gz   euca-bundle-image -i karmic-server-uec-i386.img --kernel eki-977213C6 --ramdisk eri-0CBA157D   euca-upload-bundle -b images -m /tmp/karmic-server-uec-i386.img.manifest.xml   euca-register images/karmic-server-uec-i386.img.manifest.xml   5) 申請 key pair,以便 ssh 登入 instance

 

ec2-add-keypair mykey >mykey.private   chmod 0600 mykey.private   6) 在客户端机器,开启虚拟机.

 

1.查看 euca-describe-images ,获得希望启动Image emi

 

2.启动一个虚拟机:

 

euca-run-instances -k mykey -n 1 emi-8022139D   3.查看这个虚拟机的基本信息,比如IP地址,和 此实例id

 

euca-describe-instances   4.登录这个新启动的虚拟机

 

ssh -i mykey.private root@192.168.100.X   5.终止这个虚拟机实例

 

euca-describe-instances(获得instance-id)   euca-terminate-instances    附录一: 虚拟测试环境的搭建:

 

1.虚拟机软件:  Sun VirtualBox

 

2.管理 -> 全局设定 -> 网络 中 选择 "Host-Only"  点编辑,然后选择 "DHCP服务器", 禁用"启用服务器"

 

3建立两台虚拟机,  Linux/Ubuntu ,网络选择Host-Only方式

 

4在宿主机器上,将可以联互联网的 网卡设置为 针对 Host-Only 网卡的共享

 

说明,这里之所以采用 ,  Host-Only +  通过宿主机器共享上网 ,而不采用Bridged的联网方式,是前者可以在离开网络支持的情况下, 虚拟机之间的关系保持不变.

 

附录二:  VirtualBox 系统克隆及其可能后续操作:

 

1) VirtualBox 的虚拟硬盘的克隆命令:   VBoxManage  clonevdi old.vdi new.vdi

 

2) Ubuntu 修改主机名:

 

1. 启用root用户: sudo passwd root

2. .以root用户身份登录

3. pico /etc/hosts   :  修改对应的旧的主机名

4. pico /etc/hostname  :  删除该文件的所有内容,添加新的主机名

5. 执行命令: hostname <新的主机名>

6. logout

7. 禁用root用户:  sudo passwd -l root

 

3)如果找不到网卡,不妨,查看一下:  ifconfig –a ,然后配置 /etc/network/interfaces ,然后重启网卡

 

附录三: 分配 Kernel 和 Ramdisks 給 VMs 有三种方法

 

1) 在 'ec2-bundle-image' 步骤指定

 

ec2-bundle-image -i vmimage.img --kernel --ramdisk

 

2)在 'ec2-run-instances' 步骤指定

 

ec2-run-instances --kernel --ramdisk

 

3) 在 https://your.cloud.server:8443  选择 'Configuration' 标签,新增 和 作为预设的 kernel和 ramdisk

 

附录四: 如何删除Image

 

1) 先取消注册

 

ec2-deregister

 

2) 移除位于 bucke 的档案

 

ec2-delete-bundle -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY --url $S3_URL -b -p

 

3) 移除 image 和 bucke (—clear)

 

ec2-delete-bundle -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY --url $S3_URL -b -p --clear

 

附录五:  Euca2ools常用命令:

 

euca-describe-availability-zones verbose 察看可用的资源

 

euca-describe-instances 察看目前正在執行的 虚拟机(VM)

 

euca-bundle-image 打包好将要上传到档案

 

euca-upload-bundle 上传档案到 Eucalyptus

 

euca-register  组成已经上传到档案

 

euca-describe-images  查看可用的 images

 

 

 

了解Eucalyptus

 

Eucalyptus云计算软件,在一个开源的平台上(也可以商业化),提供了对这些资源的抽象。Eucalyptus的源码是公开的。并且有提供给CentOS 5.3、OpenSUSE 11、Debian 5以及Ubuntu 9.04的软件包。Eucalyptus选择Xen和KVM作为虚拟化的管理程序。目前版本是2.0.2。Eucalyptus组件:在逻辑上,Eucalyptus云包括4个组件:客户端、云控制器(简称cls或者“cloud”)、集群控制器(cc)以及节点控制器(nc)。客户端依赖于解决方案,但可能以浏览器脚本、一个用户空间应用程序、或者甚至是一个内核模块的形式出现。云控制器是从客户端进入云的接口,并为云提供逻辑决定。云控制执行对客户端进行认证的服务,并将客户端的请求转化为事务。集群控制器是一个节点控制器集合。它负责状态信息并与所提供的虚拟机进行交互。可是,节点自身是通过管理程序(Xen或者KVM)来与在线以及离线虚拟机进行交互的。一个节点控制器在一个单独的机器上是作为一个独立的实例存在的。但是,多个节点控制器组成了特定的云。Eucalyptus包含的软件包,根据其组件进行相应地命名:eucalyptus云控制器(eucalyptus-cloud)、eucalyptus控制器(eucalyptus-controller)以及节点控制器(eucalyptus-nc)。在这篇文章中,使用Ubuntu 9.04系统。安装的先决条件是在所有的节点上都配置一个一致的网络时间协议(NTP),并在节点控制器之间进行桥接配置。进行桥接的步骤超过了这篇文章的范畴,但Ubuntu提供了相应的文档。安装的第一步是下载Eucalyptus(32位或者64位)。在下载完程序之后,转到下载到的目录(在这个例子中,使用/tmp)。然后在每一台组成云控制器、集群控制器以及节点控制器的机器上执行下述命令:   root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#

tar zxvf eucalyptus-1.5.1-*.tar.gzroot@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#

cd eucalyptus-1.5.1-*root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#

echo deb file://${PWD} ./ >> /etc/apt/sources.listroot@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#

   apt-get update   apt-get update命令会对平台所需的先决条件进行安装,其中开放的Java框架占据了下载量的很大一部分。apt-get将需要执行相当长的一段时间。对每一个组件,依赖于角色,会各自安装自己的软件包。在云控制器上:   root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-cloud   在控制器上:   root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-cc   以及最后在节点控制器上:   root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-nc   集群现在已经建立起来。可以在合适的系统上,通过下述命令来启动服务:   /etc/init.d/eucalyptus-cloud   /etc/init.d/ecualyptus-cc   /etc/init.d/eucalyptus-nc