搭建简易私有云平台
众说周知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 , 它包含了如下部分
1. Cloud Controller (clc)
2. Cluster Controller (cc)
3. Walrus (the S3-like storage service)
4. Storage Controller (sc)
5.
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 上执行:
1. sudo euca_conf --no-rsync --discover-nodes
2.
至此, 一个私有的云计算平台已经搭建好了, 下面就开始说, 如何使用了, 很简单吧!
三 云计算平台管理之命令行工具(Euca2ools)
1) 在 https://YourIP:8443 中注册个人信息然后登录下载 证书 euca2-yourname-x509 .zip
2) 在客户端机器上执行
1. $ mkdir ~/.euca
2. $ cd ~/.euca
3. $ unzip euca2-yourname-x509 .zip
4. $ chmod 0700 ~/.euca
5. $ chmod 0600 ~/.euca/*
6.
3) 在客户端机器上执行, 安裝 Euca2ools 和 EC2-API-Tools
1. . ~/.euca/eucarc
2. echo "[ -r ~/.euca/eucarc ] && . ~/.euca/eucarc" >> ~/.bashrc
3. sudo apt-get install euca2ools
4. sudo apt-get install ec2-api-tools
5. sudo reboot
6.
4) 在客户端机器, 使用 Euca2ools 上传 Kernel / Ramdisk / FS Image (使用者可注册 Image,但只有管理者才可注册 kernel/ramdisks)
1. 目前 Eucalyptus 系統上没有 Kernel、Ramdisk 和 FS Image ,所以我們使用官方提供的 Image (上传需要用到三个指令)
1. euca-bundle-image - 打包好將要上传的档案
2. euca-upload-bundle - 上传到 Eucalyptus
3. euca-register - 注册上传的档案
4.
2. 上传Kernel, 如:
1. euca-bundle-image -i /boot/vmlinuz-2.6.31-14-generic-pae --kernel true
2. euca-upload-bundle -b kernel -m /tmp/vmlinuz-2.6.31-14-generic-pae.man
ifest.xml
3. euca-register kernel/vmlinuz-2.6.31-14-generic-pae.manifest.xml
4.
3. 上传 Ramdisk
1. euca-bundle-image -i /boot/initrd.img-2.6.31-14-generic-pae --ramdisk
true
2. euca-upload-bundle -b ramdisks -m /tmp/initrd.img-2.6.31-14-generic-pa
e.manifest.xml
3. euca-register ramdisks/initrd.img-2.6.31-14-generic-pae.manifest.xml 4.
4. 查看已上传到档案:
方法一: https://YourIP:8443/#images
方法二: euca-describe-images
5. 根据查看的结果, 上传FS Images:(分配 Kernel 和 Ramdisks 給 VMs 有三种方法, 见附录三)
1. tar zxvf karmic-server-uec-i386.tar.gz
2. euca-bundle-image -i karmic-server-uec-i386.img --kernel eki-977213C6
--ramdisk eri-0CBA157D
3. euca-upload-bundle -b images -m /tmp/karmic-server-uec-i386.img.manife
st.xml
4. euca-register images/karmic-server-uec-i386.img.manifest.xml
5.
5) 申請 key pair,以便 ssh 登入 instance
1. ec2-add-keypair mykey >mykey.private
2. chmod 0600 mykey.private
3.
6) 在客户端机器, 开启虚拟机.
1. 查看 euca-describe-images ,获得希望启动Image emi
2. 启动一个虚拟机:
1. euca-run-instances -k mykey -n 1 emi-8022139D
2.
3. 查看这个虚拟机的基本信息, 比如IP 地址, 和 此实例id
1. euca-describe-instances
2.
4. 登录这个新启动的虚拟机
1. ssh -i mykey.private [email protected]
2.
5. 终止这个虚拟机实例
1. euca-describe-instances(获得instance-id)
2. euca-terminate-instances
3.
附录一: 虚拟测试环境的搭建:
1. 虚拟机软件: Sun VirtualBox
2. 管理 -> 全局设定 -> 网络 中 选择 "Host-Only" 点编辑, 然后选择 "DHCP服务器", 禁用" 启用服务器"
3建立两台虚拟机, Linux/Ubuntu ,网络选择Host-Only 方式
4在宿主机器上, 将可以联互联网的 网卡设置为 针对 Host-Only 网卡的共享
说明, 这里之所以采用 , Host-Only + 通过宿主机器共享上网 ,而不采用Bridged 的联网方式, 是前者可以在离开网络支持的情况下, 虚拟机之间的关系保持不变.
附录二: VirtualBox 系统克隆及其可能后续操作:
1) VirtualBox 的虚拟硬盘的克隆命令: VBoxManage clonevdiold.vdinew.vdi
2) Ubuntu 修改主机名:
1. 启用root 用户: sudopasswd root
2. .以root 用户身份登录
3. pico /etc/hosts : 修改对应的旧的主机名
4. pico /etc/hostname : 删除该文件的所有内容,添加新的主机名
5. 执行命令: hostname
6. logout
7. 禁用root 用户: sudopasswd -l root
3) 如果找不到网卡, 不妨, 查看一下: ifconfig –a , 然后配置 /etc/network/interfaces , 然后重启网卡 附录三: 分配 Kernel 和 Ramdisks 給 VMs 有三种方法
1) 在 'ec2-bundle-image' 步骤指定
ec2-bundle-image -ivmimage.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