簡(jiǎn)易搭建一個(gè)私有云平臺(tái)
眾說(shuō)周知Amazon EC2是一個(gè)公共云的計(jì)算平臺(tái),屬于IaaS(基礎(chǔ)設(shè)施即服務(wù))這類.
現(xiàn)在有一款開源的項(xiàng)目Eucalyptus(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems),同樣實(shí)現(xiàn)了Amazon EC2的功能,由于其開源性,注定了搭建一個(gè)私有的云計(jì)算平臺(tái)成為可能. 更方便的是Ubuntu9.10服務(wù)器版已經(jīng)集成了Eucalyptus這個(gè)開源軟件,使的搭建企業(yè)私有的云計(jì)算平臺(tái)變得方便而簡(jiǎn)單.
下面我們將一步步來(lái)搭建這個(gè)私有的云計(jì)算平臺(tái).
一 準(zhǔn)備工作
1) 至少準(zhǔn)備兩臺(tái)機(jī)器, 當(dāng)然我這里是用虛擬機(jī)軟件(Sun VirtualBox)來(lái)虛擬出兩臺(tái)實(shí)際的機(jī)器
(如果你也采用Sun VirtualBox,有些注意事項(xiàng),可以參見(jiàn)后面的附錄一)
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 ,這是一個(gè)firefox插件 : http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609
--------------------------------------------------------------------------
二 云計(jì)算服務(wù)的搭建(使用Ubuntu自帶的向?qū)?十分簡(jiǎn)單的哦)
1) 一臺(tái)機(jī)器, 作為Cluster(Front End) , 命名為: ubuntu-cluster , 它包含了如下部分
- Cloud Controller (clc)
- Cluster Controller (cc)
- Walrus (the S3-like storage service)
- Storage Controller (sc)
2) 至少一臺(tái)機(jī)器作為Node, 命名為: ubuntu-node1,它包含了如下部分
Node Controller (nc)
3) 在作為Cluster的機(jī)器上 ,安裝基本系統(tǒng): Ubuntu9.10 服務(wù)器版
1.安裝引導(dǎo)時(shí),要選擇 "Install Ubuntu Enterprise Cloud"
2. 安裝過(guò)程中,如果提示"Cluster" 還是"Node",一定要選擇Cluster
3.安裝過(guò)程中,提示"Configure postfix" 時(shí) 選擇 internet Site
4. 安裝過(guò)程中,提示"Name your cluster" 時(shí) ,請(qǐng)取一個(gè)合適的名字,比如我取之為: cluster1
5. 安裝過(guò)程中,提示"a list of available IP addresses on your network", 一定要選擇一個(gè)可用的公共IP段.
4) 在作為Node的機(jī)器上 ,也安裝基本系統(tǒng): Ubuntu9.10 服務(wù)器版
1.安裝引導(dǎo)時(shí),要選擇 "Install Ubuntu Enterprise Cloud"
2. 安裝過(guò)程中,如果提示"Cluster" 還是"Node",一定要選擇Node, (如果Cluster正在運(yùn)行,這一步可能不會(huì)出現(xiàn),自動(dòng)會(huì)選擇Node
3.安裝完一個(gè)節(jié)點(diǎn)后,,后續(xù)的節(jié)點(diǎn)可以采用克隆方法,參見(jiàn)后面的 附錄二
5) 在Cloud Controller(位于ubuntu-cluster)上注冊(cè)所有的Node機(jī)器: 在ubuntu-cluster上執(zhí)行:
- sudo euca_conf --no-rsync --discover-nodes
至此,一個(gè)私有的云計(jì)算平臺(tái)已經(jīng)搭建好了,下面就開始說(shuō),如何使用了,很簡(jiǎn)單吧!
三 云計(jì)算平臺(tái)管理之命令行工具(Euca2ools)
1)在 https://YourIP:8443 中注冊(cè)個(gè)人信息然后登錄下載 證書 euca2-yourname-x509 .zip
2) 在客戶端機(jī)器上執(zhí)行
- $ mkdir ~/.euca
- $ cd ~/.euca
- $ unzip euca2-yourname-x509 .zip
- $ chmod 0700 ~/.euca
- $ chmod 0600 ~/.euca/*
3) 在客戶端機(jī)器上執(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)在客戶端機(jī)器,使用 Euca2ools 上傳 Kernel / Ramdisk / FS Image (使用者可注冊(cè) Image,但只有管理者才可注冊(cè) kernel/ramdisks)
1. 目前 Eucalyptus 系統(tǒng)上沒(méi)有 Kernel、Ramdisk 和 FS Image,所以我們使用官方提供的 Image (上傳需要用到三個(gè)指令)
- euca-bundle-image - 打包好將要上傳的檔案
- euca-upload-bundle - 上傳到 Eucalyptus
- euca-register - 注冊(cè)上傳的檔案
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 有三種方法,見(jiàn)附錄三)
- 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) 申請(qǐng) key pair,以便 ssh 登入 instance
- ec2-add-keypair mykey >mykey.private
- chmod 0600 mykey.private
6) 在客戶端機(jī)器,開啟虛擬機(jī).
1.查看 euca-describe-images ,獲得希望啟動(dòng)Image emi
2.啟動(dòng)一個(gè)虛擬機(jī):
- euca-run-instances -k mykey -n 1 emi-8022139D
3.查看這個(gè)虛擬機(jī)的基本信息,比如IP地址,和 此實(shí)例id
- euca-describe-instances
4.登錄這個(gè)新啟動(dòng)的虛擬機(jī)
- ssh -i mykey.private root@192.168.100.X
5.終止這個(gè)虛擬機(jī)實(shí)例
- euca-describe-instances(獲得instance-id)
- euca-terminate-instances <instance-id>
附錄一: 虛擬測(cè)試環(huán)境的搭建:
1.虛擬機(jī)軟件: Sun VirtualBox
2.管理 -> 全局設(shè)定 -> 網(wǎng)絡(luò) 中 選擇 "Host-Only" 點(diǎn)編輯,然后選擇 "DHCP服務(wù)器", 禁用"啟用服務(wù)器"
3建立兩臺(tái)虛擬機(jī), Linux/Ubuntu ,網(wǎng)絡(luò)選擇Host-Only方式
4在宿主機(jī)器上,將可以聯(lián)互聯(lián)網(wǎng)的 網(wǎng)卡設(shè)置為 針對(duì) Host-Only 網(wǎng)卡的共享
說(shuō)明,這里之所以采用 , Host-Only + 通過(guò)宿主機(jī)器共享上網(wǎng) ,而不采用Bridged的聯(lián)網(wǎng)方式,是前者可以在離開網(wǎng)絡(luò)支持的情況下, 虛擬機(jī)之間的關(guān)系保持不變.
附錄二: VirtualBox 系統(tǒng)克隆及其可能后續(xù)操作:
1) VirtualBox 的虛擬硬盤的克隆命令: VBoxManage clonevdi old.vdi new.vdi
2) Ubuntu 修改主機(jī)名:
1. 啟用root用戶: sudo passwd root
2. .以root用戶身份登錄
3. pico /etc/hosts : 修改對(duì)應(yīng)的舊的主機(jī)名
4. pico /etc/hostname : 刪除該文件的所有內(nèi)容,添加新的主機(jī)名
5. 執(zhí)行命令: hostname <新的主機(jī)名>
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) 先取消注冊(cè)
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í)行的 虛擬機(jī)(VM)
euca-bundle-image 打包好將要上傳到檔案
euca-upload-bundle 上傳檔案到 Eucalyptus
euca-register 組成已經(jīng)上傳到檔案
euca-describe-images 查看可用的 images
【編輯推薦】