云虚拟化
http://www.aikaiyuan.com/4889.html
http://downloads.opennebula.org/packages/
我們提到的云計(jì)算一般有三種類型:軟件即服務(wù)(Software as a Service, SaaS),平臺(tái)即服務(wù)(Platform as a Service, PaaS)和基礎(chǔ)架構(gòu)即服務(wù)(Infrastructure as a Service, IaaS)。云概念剛出來(lái)的時(shí)候被人說(shuō)的云里霧里摸不著頭,現(xiàn)在云技術(shù)已經(jīng)深入人心,也許你正在使用云而自己沒有察覺呢,比如每天使用的 Gmail 就在 Google 大云上。為了更好理解這三種不同的云,我們可以拿 Google 來(lái)舉例,剛好這家公司提供了三種形式的云服務(wù),首先看 SaaS,Google Gmail/Docs/Gtalk/Maps 這些 Apps 都運(yùn)行在 Google 云上,所以他們?yōu)槠胀ㄓ脩籼峁┝?“軟件即服務(wù)”;Google 同時(shí)提供面向開發(fā)人員的 AppEngine,可以讓開發(fā)人員在他們的平臺(tái)(Platform)上使用 Python, Java 等語(yǔ)言和他們提供的 API 開發(fā)軟件和服務(wù),所以他們?yōu)殚_發(fā)人員提供了 “平臺(tái)即服務(wù)”;Google 自己內(nèi)部構(gòu)建了基于 GFS, BigTable, MapReduce 之上的龐大基礎(chǔ)云設(shè)施,為自己內(nèi)部人員提供了 “基礎(chǔ)架構(gòu)即服務(wù)”,這就是三種不同類型的云。
OpenNebula 是一套開源的云計(jì)算基礎(chǔ)管理工具,用來(lái)方便管理員在數(shù)據(jù)中心統(tǒng)一部署、創(chuàng)建、分配和管理大量的虛擬機(jī),企業(yè)數(shù)據(jù)中心可以利用這套工具搭建自己的私有云,為 自己內(nèi)部提供 IaaS 服務(wù),類似的開源產(chǎn)品還有 Eucalyptus, openQRM 等。以下的安裝過程在 VPSee 的兩臺(tái)裝有 CentOS 5.5 系統(tǒng)的服務(wù)器上完成,一臺(tái)服務(wù)器做 OpenNubula 前端(node00),另一臺(tái)服務(wù)器用來(lái)做節(jié)點(diǎn)(node01),搭建一個(gè)最小的 “云”,如果想擴(kuò)展這個(gè)云的話,只需要逐步增加節(jié)點(diǎn)(node02, node03, …)就可以了。如果對(duì)其他類似的開源云計(jì)算平臺(tái)感興趣的話可以看看:在 Ubuntu 上安裝和配置 OpenStack Nova,最新的 OpenNebula 4.0 安裝看這里:在 CentOS 6.4 上安裝和配置 OpenNebula 4.0.
安裝和配置前端(Front-End)
增加 CentOS Karan 源:
# cd /etc/yum.repos.d # wget http://centos.karan.org/kbsingh-CentOS-Extras.repo # yum update安裝 OpenNebula 需要的軟件包以及編譯 OpenNebula 源代碼所需的工具:
# yum install gcc gcc-c++ make openssl-devel flex bison# yum install ruby ruby-devel ruby-docs ruby-ri ruby-irb ruby-rdoc # yum install rubygems # gem install nokogiri rake xmlparser# yum install scons # yum install xmlrpc-c xmlrpc-c-develCentOS 自帶的 sqlite 版本不行,需要下載和編譯 sqlite 3.6.17 版本:
# wget http://www.sqlite.org/sqlite-amalgamation-3.6.17.tar.gz # tar xvzf sqlite-amalgamation-3.6.17.tar.gz # cd sqlite-3.6.17/ # ./configure; make; make install下載和編譯 opennebula 2.0.1 源碼包后,解壓、編譯和安裝:
# tar zxvf opennebula-2.0.1.tar.gz # cd opennebula-2.0.1 # scons # ./install.sh -d /srv/cloud/one# ls /srv/cloud/one/ bin etc include lib share var啟動(dòng) OpenNebula 前需要配置 ONE_AUTH 環(huán)境變量,這個(gè)環(huán)境變量從 $HOME/.one/one_auth 這個(gè)文件讀取,所以要先創(chuàng)建 one_auth 這個(gè)文件后再啟動(dòng) one(OpenNebula 服務(wù)程序):
# cd /root/ # mkdir .one # cd .one/ # echo "oneadmin:password" > one_auth# one startOpenNebula 支持 KVM, Xen 和 VMware 三種虛擬技術(shù),我們還需要告訴 OpenNebula 我們想用哪種,并重啟 one 以便配置生效:
# vi /etc/one/oned.conf ... IM_MAD = [name = "im_xen",executable = "one_im_ssh",arguments = "xen" ]VM_MAD = [name = "vmm_xen",executable = "one_vmm_ssh",arguments = "xen",default = "vmm_ssh/vmm_ssh_xen.conf",type = "xen" ] ...# one stop # one start安裝和配置節(jié)點(diǎn)(Compute Node)
需要在每個(gè) node 上都安裝 Xen 或 KVM 的虛擬環(huán)境,具體請(qǐng)參考:在 CentOS 上安裝和配置 Xen?和?在 CentOS 上安裝和配置 KVM,還需要 ruby 運(yùn)行環(huán)境:
# yum install ruby交換 SSH Key
因?yàn)?OpenNebula Front 和 Nodes 之間是通過 SSH 通訊的,所以 front 和 nodes 之間要設(shè)置成 SSH 無(wú)密碼登錄避免 front 運(yùn)行 node 上腳本或克隆鏡像的時(shí)候輸入密碼,首先在 front 和 nodes 上配置 sshd:
# vi /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes# /etc/init.d/sshd restart在 front (node00) 上創(chuàng)建 key 后拷貝到 node (node01):
# ssh-keygen -t rsa # ssh-copy-id -i ~/.ssh/id_rsa.pub node01在1個(gè) node (node01) 上創(chuàng)建 key 后拷貝到 front (node00):
# ssh-keygen -t rsa # ssh-copy-id -i ~/.ssh/id_rsa.pub node00onehost
front 和 每個(gè) node 都能無(wú)密碼 ssh 溝通后,就可以在 front 上 onehost create 命令來(lái)逐個(gè)加入 node,并用 onehost list 來(lái)查看是否創(chuàng)建成功:
# onehost create node01 im_xen vmm_xen tm_ssh# onehost listID NAME CLUSTER RVM TCPU FCPU ACPU TMEM FMEM STAT1 node01 default 0 400 400 400 3.8G 383M on如果執(zhí)行 onehost create 報(bào)錯(cuò),查看 oned.log 日志發(fā)現(xiàn) sudo: sorry, you must have a tty to run sudo 字樣,原因則是 OpenNebula 需要遠(yuǎn)程 ssh/sudo 執(zhí)行命令,而 CentOS 的 sudo 選項(xiàng) requiretty 是默認(rèn)打開的,ssh 需要一個(gè) tty 才能執(zhí)行,所以遠(yuǎn)程 sudo 就會(huì)出錯(cuò),:
# onehost create node01 im_xen vmm_xen tm_ssh# tail /var/log/one/oned.log Tue Feb 22 11:08:58 2011 [InM][I]: Command execution fail: 'if [ -x "/var/tmp/one/im/run_probes" ]; then /var/tmp/one/im/run_probes xen 172.16.39.111; else exit 42; fi' Tue Feb 22 11:08:58 2011 [InM][I]: STDERR follows. Tue Feb 22 11:08:58 2011 [InM][I]: sudo: sorry, you must have a tty to run sudo Tue Feb 22 11:08:58 2011 [InM][I]: Error executing xen.rb ...解決辦法就是關(guān)閉(注釋掉) requiretty 這行:
# chmod 600 /etc/sudoers # vi /etc/sudoers #Defaults requiretty因?yàn)?VPSee 的這兩臺(tái)服務(wù)器使用了 HTTP 代理上網(wǎng),所以 OpenNebula 讀取了系統(tǒng)的 http_proxy 環(huán)境變量,在 sched.log 日志里發(fā)現(xiàn)了 HTTP response 錯(cuò)誤,這時(shí)候需要關(guān)閉 http_proxy:
# cat /var/log/one/sched.log Tue Feb 22 14:27:39 2011 [HOST][E]: Exception raised: Unable to transport XML to server and get XML response back. HTTP response: 504 Tue Feb 22 14:27:39 2011 [POOL][E]: Could not retrieve pool info from ONE# unset http_proxyonevnet
創(chuàng)建和編輯虛擬網(wǎng)絡(luò)配置文件,然后創(chuàng)建一個(gè) OpenNebula 虛擬網(wǎng)絡(luò):
# vi small_network.net NAME = "Small network" TYPE = FIXEDBRIDGE = br0 LEASES = [ IP="192.168.0.5"] LEASES = [ IP="192.168.0.6"] LEASES = [ IP="192.168.0.7"]# onevnet create small_network.net # onevnet listID USER NAME TYPE BRIDGE P #LEASES0 oneadmin Small network Fixed br0 N 0onevm
創(chuàng)建和編輯虛擬機(jī)的啟動(dòng)配置文件,這里的 centos.5.5.x86.img 可以從 http://stacklet.com/ 下載(收費(fèi))或者自己利用 Xen 工具創(chuàng)建一個(gè):
# wget http://stacklet.com/sites/default/files/centos/ centos.5.5.x86.img.tar.bz2 # tar jxvf centos.5.5.x86.img.tar.bz2 # mv centos.5.5.x86.img /srv/cloud/one/var/images/# vi centos.one NAME = centos CPU = 1 MEMORY = 256DISK = [source = "/srv/cloud/one/var/images/centos.5.5.x86.img",target = "sda1",clone = "yes",readonly = "no" ]NIC = [ MAC = "00:16:3E:00:02:64", bridge = xenbr0 ]OS = [ bootloader = "/usr/bin/pygrub" ]用 onevm create 命令啟動(dòng)上面的 VM 配置文件,就會(huì)在 node01 上創(chuàng)建一個(gè)虛擬機(jī),用 onevm list 查看會(huì)看到 prol 狀態(tài),表示正在創(chuàng)建過程中,創(chuàng)建完畢后狀態(tài)會(huì)變成 runn:
# onevm create centos.one# onevm listID USER NAME STAT CPU MEM HOSTNAME TIME1 oneadmin centos prol 0 0K node01 00 00:09:09# onevm listID USER NAME STAT CPU MEM HOSTNAME TIME1 oneadmin centos runn 0 0K node01 00 00:22:17就這樣,我們?cè)?node00 (front) 和 node01 (node) 這兩臺(tái)服務(wù)器上部署了一個(gè)最小的云,并且在 node01 上運(yùn)行了一個(gè)基于 Xen 的虛擬機(jī)實(shí)例。
posted on 2014-04-27 11:52 秦瑞It行程實(shí)錄 閱讀(...) 評(píng)論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/ruiy/p/cloudVirtual.html
總結(jié)
- 上一篇: Silverlight中如何自己写方法将
- 下一篇: [leetcode] Add Binar