簡易搭建一個私有云平臺
眾說周知Amazon EC2是一個公共云的計算平臺,屬于IaaS(基礎(chǔ)設(shè)施即服務(wù))這類.
現(xiàn)在有一款開源的項目Eucalyptus(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems),同樣實現(xiàn)了Amazon EC2的功能,由于其開源性,注定了搭建一個私有的云計算平臺成為可能. 更方便的是Ubuntu9.10服務(wù)器版已經(jīng)集成了Eucalyptus這個開源軟件,使的搭建企業(yè)私有的云計算平臺變得方便而簡單.
下面我們將一步步來搭建這個私有的云計算平臺.
一 準(zhǔn)備工作
1) 至少準(zhǔn)備兩臺機器, 當(dāng)然我這里是用虛擬機軟件(Sun VirtualBox)來虛擬出兩臺實際的機器
(如果你也采用Sun VirtualBox,有些注意事項,可以參見后面的附錄一)
2) 底層操作系統(tǒng): Ubuntu9.10 服務(wù)器版 (http://www.ubuntu.com/cloud)
3) 云服務(wù)環(huán)境 : Eucalyptus , ( Ubuntu9.10 服務(wù)器版 內(nèi)置) http://eucalyptus.com/
4) Eucalyptus 命令行客戶端
5) Eucalyptus客戶端: Elastic Fox ,這是一個firefox插件 : http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609
--------------------------------------------------------------------------
二 云計算服務(wù)的搭建(使用Ubuntu自帶的向?qū)?十分簡單的哦)
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的機器上 ,安裝基本系統(tǒng): Ubuntu9.10 服務(wù)器版
1.安裝引導(dǎo)時,要選擇 "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的機器上 ,也安裝基本系統(tǒng): Ubuntu9.10 服務(wù)器版
1.安裝引導(dǎo)時,要選擇 "Install Ubuntu Enterprise Cloud"
2. 安裝過程中,如果提示"Cluster" 還是"Node",一定要選擇Node, (如果Cluster正在運行,這一步可能不會出現(xiàn),自動會選擇Node
3.安裝完一個節(jié)點后,,后續(xù)的節(jié)點可以采用克隆方法,參見后面的 附錄二
5) 在Cloud Controller(位于ubuntu-cluster)上注冊所有的Node機器: 在ubuntu-cluster上執(zhí)行:
- sudo euca_conf --no-rsync --discover-nodes
至此,一個私有的云計算平臺已經(jīng)搭建好了,下面就開始說,如何使用了,很簡單吧!
三 云計算平臺管理之命令行工具(Euca2ools)
1)在 https://YourIP:8443 中注冊個人信息然后登錄下載 證書 euca2-yourname-x509 .zip
2) 在客戶端機器上執(zhí)行
- $ mkdir ~/.euca
- $ cd ~/.euca
- $ unzip euca2-yourname-x509 .zip
- $ chmod 0700 ~/.euca
- $ chmod 0600 ~/.euca/*
3) 在客戶端機器上執(zhí)行, 安裝 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 系統(tǒng)上沒有 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. 根據(jù)查看的結(jié)果,上傳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 <instance-id>
附錄一: 虛擬測試環(huán)境的搭建:
1.虛擬機軟件: Sun VirtualBox
2.管理 -> 全局設(shè)定 -> 網(wǎng)絡(luò) 中 選擇 "Host-Only" 點編輯,然后選擇 "DHCP服務(wù)器", 禁用"啟用服務(wù)器"
3建立兩臺虛擬機, Linux/Ubuntu ,網(wǎng)絡(luò)選擇Host-Only方式
4在宿主機器上,將可以聯(lián)互聯(lián)網(wǎng)的 網(wǎng)卡設(shè)置為 針對 Host-Only 網(wǎng)卡的共享
說明,這里之所以采用 , Host-Only + 通過宿主機器共享上網(wǎng) ,而不采用Bridged的聯(lián)網(wǎng)方式,是前者可以在離開網(wǎng)絡(luò)支持的情況下, 虛擬機之間的關(guān)系保持不變.
附錄二: VirtualBox 系統(tǒng)克隆及其可能后續(xù)操作:
1) VirtualBox 的虛擬硬盤的克隆命令: VBoxManage clonevdi old.vdi new.vdi
2) Ubuntu 修改主機名:
1. 啟用root用戶: sudo passwd root
2. .以root用戶身份登錄
3. pico /etc/hosts : 修改對應(yīng)的舊的主機名
4. pico /etc/hostname : 刪除該文件的所有內(nèi)容,添加新的主機名
5. 執(zhí)行命令: hostname <新的主機名>
6. logout
7. 禁用root用戶: sudo passwd -l root
3)如果找不到網(wǎng)卡,不妨,查看一下: ifconfig –a ,然后配置 /etc/network/interfaces ,然后重啟網(wǎng)卡
附錄三: 分配 Kernel 和 Ramdisks 給 VMs 有三種方法
1) 在 'ec2-bundle-image' 步驟指定
ec2-bundle-image -i <path/to/my/>vmimage.img --kernel <eki-XXXXXXXX> --ramdisk <eri-XXXXXXXX>
2)在 'ec2-run-instances' 步驟指定
ec2-run-instances <emi-XXXXXXXX> --kernel <eki-XXXXXXXX> --ramdisk <eri-XXXXXXXX>
3) 在 https://your.cloud.server:8443 選擇 'Configuration' 標(biāo)簽,新增 <eki-xxxxxxxx> 和 <eri-xxxxxxxx> 作為預(yù)設(shè)的 kernel 和 ramdisk
附錄四: 如何刪除Image
1) 先取消注冊
ec2-deregister <emi-XXXXXXXX>
2) 移除位于 bucke 的檔案
ec2-delete-bundle -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY --url $S3_URL -b <bucket> -p <file prefix>
3) 移除 image 和 bucke (—clear)
ec2-delete-bundle -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY --url $S3_URL -b <bucket> -p <file prefix> --clear
附錄五: Euca2ools常用命令:
euca-describe-availability-zones verbose 察看可用的資源
euca-describe-instances 察看目前正在執(zhí)行的 虛擬機(VM)
euca-bundle-image 打包好將要上傳到檔案
euca-upload-bundle 上傳檔案到 Eucalyptus
euca-register 組成已經(jīng)上傳到檔案
euca-describe-images 查看可用的 images
【編輯推薦】