qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          OpenStack詳細(xì)解讀:定義,好處與使用實(shí)例

          OpenStack是一個旨在為公共及私有云的建設(shè)與管理提供軟件的開源項(xiàng)目。它的社區(qū)擁有超過130家企業(yè)及1350位開發(fā)者,這些機(jī)構(gòu)與個人都將OpenStack作為基礎(chǔ)設(shè)施即服務(wù)(簡稱IaaS)資源的通用前端。OpenStack項(xiàng)目的首要任務(wù)是簡化云的部署過程并為其帶來良好的可擴(kuò)展性。本文希望通過提供必要的指導(dǎo)信息,幫助大家利用OpenStack前端來設(shè)置及管理自己的公共云或私有云。

            內(nèi)容詳解

            OpenStack包括數(shù)個由社區(qū)維護(hù)的項(xiàng)目,具體情況我將在后文中詳加闡述。

            ● OpenStack Compute (Nova)是一套控制器,用于為單個用戶或使用群組啟動虛擬機(jī)實(shí)例。它同樣能夠用于為包含著多個實(shí)例的特定項(xiàng)目設(shè)置網(wǎng)絡(luò)。OpenStack Compute在公共云處理方面堪與Amazon EC2相提并論;而在私有云方面也毫不遜色于VMware的產(chǎn)品。在公共云中,這套管理機(jī)制將提供預(yù)制的鏡像或是為用戶創(chuàng)建的鏡像提供存儲機(jī)制,這樣用戶就能夠?qū)㈢R像以虛擬機(jī)的形式啟動。

            ● OpenStack 對象存儲(Swift)是一套用于在大規(guī)模可擴(kuò)展系統(tǒng)中通過內(nèi)置冗余及容錯機(jī)制實(shí)現(xiàn)對象存儲的系統(tǒng)。這些對象能夠通過一個REST API或是像Cyberduck這樣可以對接對象存儲API的客戶端加以恢復(fù)。

            ● OpenStack鏡像服務(wù) (Glance)是一套虛擬機(jī)鏡像查找及檢索系統(tǒng)。它能夠以三種形式加以配置:利用OpenStack對象存儲機(jī)制來存儲鏡像;利用Amazon的簡單存儲解決方案(簡稱S3)直接存儲信息;或者將S3存儲與對象存儲結(jié)合起來,作為S3訪問的連接器。OpenStack鏡像服務(wù)支持多種虛擬機(jī)鏡像格式,包括VMware(VMDK)、Amazon鏡像(AKI、ARI、AMI)以及VirtualBox所支持的各種磁盤格式。鏡像元數(shù)據(jù)的容器格式包括Amazon的AKI、ARI以及AMI信息,標(biāo)準(zhǔn)OVF格式以及二進(jìn)制大型數(shù)據(jù)。

            最近根據(jù)投票結(jié)果納入“核心”項(xiàng)目集團(tuán)的新成員是一項(xiàng)代號為“Keystone”的身份服務(wù)以及一套基于Django的儀表板接口,后者的代號為“Horizon”。本文中的儀表板示例也來源于這一項(xiàng)目。

            初窺門徑

            嘗試探索OpenStack Compute最為合適的起點(diǎn)莫過于devstack.org站點(diǎn),它為開發(fā)人員或是概念驗(yàn)證者們提供了一套腳本化安裝方案。來自docs.openstack.org的OpenStack入門教程同樣具備一步步詳細(xì)的指示,幫助我們在Ubuntu 11.10中設(shè)定OpenStack Compute、鏡像服務(wù)以及多合一對象存儲的安裝。如果大家擁有一臺自己的服務(wù)器,并打算利用它搞一些概念驗(yàn)證工作,那么 點(diǎn)擊此處 可以獲取一套專門供裸機(jī)使用的StackOps安裝系統(tǒng)。有了它,我們可以通過CD或者USB記憶棒完成OpenStack的安裝。

            各位還可以利用docs.openstack.org上提供的對象存儲管理員指南或者OpenStack Compute管理員指南中的安裝說明,設(shè)置出生產(chǎn)級別的OpenStack對象存儲集群或是OpenStack Compute云。

            OpenStack的使用

            安裝結(jié)束之后,接下來我們就要看看如何利用部分安全功能,通過儀表板接口或是命令行啟動OpenStack Compute實(shí)例。我還將展示面向?qū)ο蟠鎯Φ摹⒂糜谕ㄟ^塊存儲備份鏡像或者視頻的接口。

            登錄到儀表板接口

            OpenStack的儀表板是安裝在運(yùn)行著Nova API服務(wù)的節(jié)點(diǎn)中的。通過這套儀表板,大家應(yīng)該可以看出Nova API實(shí)例的URL與有效儀表板的證書一樣,也包括用戶名及密碼。

            只要有了用戶名與密碼,大家可以利用OpenStack儀表板實(shí)現(xiàn)許多功能。首先,通過云管理員分配給我們的用戶名及密碼登錄到儀表板中。

            登錄之后,可以看到服務(wù)器使用量與每臺服務(wù)器的當(dāng)前狀態(tài),如圖一。

          圖一

            大家也可以點(diǎn)擊查看哪些服務(wù)器處于終止?fàn)顟B(tài)。請注意,這里的正常運(yùn)行時間并不會顯示每套單獨(dú)服務(wù)器的狀態(tài)。

            用戶儀表板左側(cè)的菜單提供的是我們所能執(zhí)行的儀表板操作選項(xiàng),所發(fā)出的命令通過API傳遞至終端。系統(tǒng)面板(也就是頁面最上方的菜單)提供另一套視圖,使得管理員能夠監(jiān)控使用狀態(tài)、檢查云中正在運(yùn)行的服務(wù)并管理用戶及項(xiàng)目的配額。

           如何在儀表板中啟用實(shí)例

            現(xiàn)在,大家已經(jīng)初步熟悉了儀表板的總體布局,接下來就該利用自己的云啟動一套新的虛擬機(jī)系統(tǒng),也就是鏡像實(shí)例。一般來說,我們的云管理員應(yīng)該已經(jīng)上傳了啟動所必需的鏡像。如果沒有,我將在后文中討論如何創(chuàng)建自定義鏡像。要想啟動鏡像,首先找到儀表板中的鏡像選項(xiàng),在選定所要啟動的鏡像類型后點(diǎn)擊啟用按鈕。圖二中顯示了可用的幾款Ubuntu服務(wù)器鏡像以及一款Windows鏡像。

          圖二

            如果大家通過點(diǎn)擊啟動按鈕完成鏡像啟動工作,那么接下來將會看到如圖三所示的啟動實(shí)例窗口。

          圖三

            此窗口包含了為服務(wù)器命名、在啟動中插入某些用戶數(shù)據(jù)、選擇CPU數(shù)量、硬盤空間以及RAM數(shù)量等功能,設(shè)置完成后點(diǎn)擊“啟動實(shí)例”。現(xiàn)在我們已經(jīng)擁有了一套虛擬服務(wù)器,無論是SSH還是正常使用都沒問題,就像普通的服務(wù)器一樣。但同時我們也省去了大量組裝、部署、布線等常規(guī)服務(wù)器所帶來的諸多麻煩。

            如何使用虛擬機(jī)實(shí)例

            所謂實(shí)例,是指具備特殊規(guī)格內(nèi)存、硬盤空間以及CPU的虛擬機(jī)。在OpenStack Compute的輔助下,我們通過對云的調(diào)整及啟用,可以讓用戶實(shí)現(xiàn)啟動實(shí)例、重啟實(shí)例以及保存快照以備日后再利用等工作。

            通過觀察用戶儀表板中的實(shí)例,我們能夠清楚地看到自己剛剛所啟動的實(shí)例。對于每個實(shí)例,我們都有數(shù)個操作選項(xiàng),例如終止實(shí)例、重新啟動、保存快照等等——這些操作的實(shí)現(xiàn)都依靠OpenStack Compute API 1.1的支持。我們也可以打開一個控制臺窗口或是查看某個處于儀表板內(nèi)的實(shí)例的日志文件。

            為鏡像添加安全密鑰

            安全功能是我們控制發(fā)往自己虛擬機(jī)訪問的必要保障,OpenStack通過兩種認(rèn)證機(jī)制管理客戶端工具。一種是儀表板自帶的用戶名及密碼機(jī)制;另一種則是“密鑰對”,密鑰為用戶的實(shí)例提供安全驗(yàn)證。只有當(dāng)用戶能夠同時通過以上兩種認(rèn)證過程時,才能夠獲得在OpenStack云中訪問目標(biāo)實(shí)例的權(quán)限。密鑰對(包括公共密鑰對與私有密鑰對)在我們啟用實(shí)例時可以作為非常有用的參數(shù)。舉例來說,要啟動一套實(shí)例并加以訪問,我們必須利用SSH創(chuàng)建一套密鑰對,這樣就能夠識別通過SSH訪問該實(shí)例的用戶。

            OpenStack儀表板讓我們能夠在密鑰對選項(xiàng)中通過點(diǎn)擊創(chuàng)建新密鑰對管理密鑰。在下圖當(dāng)中,大家可以為自己的密鑰對命名,然后點(diǎn)擊創(chuàng)建密鑰按鈕。創(chuàng)建新密鑰對的過程包括登記公共密鑰及下載私有密鑰(一個.pem文件)兩部分。由于這一創(chuàng)建工作完全是為我們的使用服務(wù),因此請務(wù)必像對待其它SSH私有密鑰一樣妥善加以保管。詳見圖四。

          圖四


           利用工具為自動化腳本啟動實(shí)例

            我們可以輕松地通過儀表板啟動實(shí)例,但更多時候大家也許希望能夠利用命令行加以啟動,以使用某些腳本。這里只要安裝python-nova客戶端,我們就能在命令行中獲得可以使用Compute API接口的nova shell命令。安裝客戶端,然后提供用戶名及密碼,設(shè)置適當(dāng)?shù)沫h(huán)境變量,這樣我們就擁有了在命令行中向云端發(fā)送命令的能力。

            安裝python-nova客戶端,并將其安裝于大家常用的python環(huán)境中。

          $ curl -O http://pypi.python.org/packages/source/p/python-novaclient/pythonnovaclient-2.6.3.tar.gz
          $ tar -zxvf python-novaclient-2.6.3.tar.gz
          $ cd python-novaclient-2.6.3
          $ sudo python setup.py install

            現(xiàn)在大家已經(jīng)安裝了python-nova客戶端,輸入以下內(nèi)容以確認(rèn)安裝:

          $ nova help

            此時大家應(yīng)該看到一個nova命令行客戶端的所有命令與參數(shù)列表。通過設(shè)置環(huán)境變量所需的參數(shù),我們可以在命令行上快速執(zhí)行這些命令。為nova命令添加--username,或者將這些參數(shù)設(shè)為環(huán)境變量:

          export NOVA_USERNAME=joecool
export NOVA_API_KEY=coolword
export NOVA_PROJECT_ID=coolu

            項(xiàng)目ID與Tenant一樣,都依賴于我們所使用的驗(yàn)證服務(wù)。當(dāng)云管理員設(shè)置OpenStack時,應(yīng)該注意為其分配一個類似NOVA_URL這樣能夠?yàn)閚ova所辨識的驗(yàn)證端點(diǎn)。

          export NOVA_URL=http://hostname:5000/v2.0
export NOVA_VERSION=1.1

            在建立自己的云之前,我們需要通過向鏡像服務(wù)查詢哪些配置類型可以奏效,來了解什么樣的鏡像能夠被正確使用。鏡像服務(wù)有點(diǎn)像云領(lǐng)域的iTunes:我們可以在利用自己常用的鏡像在云中創(chuàng)建實(shí)例之前,先在列表中查看哪些鏡像適用。大家可以利用以下命令獲得鏡像信息列表,包括名稱、狀態(tài)以及ID:

          $ nova image-list

            以下是返回信息的示例:

          +----+-------------------------------------------------------+--------+
          | ID |                          Name                         | Status |
          +----+-------------------------------------------------------+--------+
          | 1  | aki-tty                                               | ACTIVE |
          | 2  | ari-tty                                               | ACTIVE |
          | 3  | ami-tty                                               | ACTIVE |
          | 6  | CentOS_5.4_x64                                        | ACTIVE |
          | 14 | maverick-kernel                                       | ACTIVE |
          | 15 | maverick                                              | ACTIVE |
          | 20 | ubuntu-kernel                                         | ACTIVE |
          | 21 | ubuntu-ramdisk                                        | ACTIVE |
          | 22 | ubuntu                                                | ACTIVE |
          | 24 | CentOS_5.6_x64_v5.7.14_Dev1                           | ACTIVE |
          +----+-------------------------------------------------------+--------+

            接下來大家需要了解其中每一項(xiàng)的相對大小,這里使用flavor-list參數(shù)。

          $ nova flavor-list       
          +----+-----------+-----------+------+----------+-------+------------+----------+
          | ID |    Name   | Memory_MB | Swap | Local_GB | VCPUs | RXTX_Quota | RXTX_Cap |
          +----+-----------+-----------+------+----------+-------+------------+----------+
          | 1  | m1.tiny   | 512       |      | 0        |       |            |          |
          | 2  | m1.small  | 2048      |      | 20       |       |            |          |
          | 3  | m1.medium | 4096      |      | 40       |       |            |          |
          | 4  | m1.large  | 8192      |      | 80       |       |            |          |
          | 5  | m1.xlarge | 16384     |      | 160      |       |            |          |
          | 89 | Boom      | 2         |      | 20       |       |            |          |
          +----+-----------+-----------+------+----------+-------+------------+----------+

            我們也可以使用grep來縮小查找結(jié)果列表,舉例來說,通過以下命令查看CentOS鏡像的信息:

          $ nova image-list | grep 'CentOS'
          | 6  | CentOS_5.4_x64                                        | ACTIVE |
          | 24 | CentOS_5.6_x64_v5.7.14_Dev1                           | ACTIVE |

            在反饋得出的信息方面,我們可以選擇圖像與描述相結(jié)合的方式創(chuàng)建自己的虛擬服務(wù)器,并啟動實(shí)例。

           要啟動服務(wù)器,首先選擇一個鏡像,找出該鏡像及相關(guān)描述的ID,并對其進(jìn)行調(diào)整;接下來利用ID創(chuàng)建命令。根據(jù)上文所給出的資料,我們可以看到Ubuntu Maverick鏡像的ID為15。如果我們實(shí)際只打算搭建一個2GBy內(nèi)存、20GB硬盤空間的小型服務(wù)器,那么可以選擇m1.small——因?yàn)樗褂玫腎D為2.將這些參數(shù)添加進(jìn)boot命令中,這樣新建虛擬服務(wù)器的工作就完成了。

          $ nova boot --flavor=2 --image=15 testserver
          +-----------+--------------------------------------+
          |  Property |                Value                 |
          +-----------+--------------------------------------+
          | adminPass | ****************                     |
          | created   | 2011-09-01T21:40:41Z                 |
          | flavor    | m1.small                             |
          | hostId    |                                      |
          | id        | 1805                                 |
          | image     | maverick                             |
          | metadata  | {}                                   |
          | name      | testserver                           |
          | progress  | 0                                    |
          | status    | BUILD                                |
          | updated   | 2011-09-01T21:40:41Z                 |
          | uuid      | ce044452-f22e-4ea4-a3ec-d1cde80cf996 |
          +-----------+--------------------------------------+

            現(xiàn)在,大家使用nova list命令即可查看自己在云中所部署的新服務(wù)器:

          $ nova list
          +------+------------+--------+--------------------------------+
          |  ID  |    Name    | Status |            Networks            |
          +------+------------+--------+--------------------------------+
          | 1805 | testserver | ACTIVE | private=10.4.96.81             |
          +------+------------+--------+--------------------------------+

            狀態(tài)選項(xiàng)共有三種,分別是:ACTIVE(活躍), BUILDING(創(chuàng)建中)以及 UNKNOWN(未知)。BUILDING狀態(tài)一般是暫時性的,因此大家很可能在自己操作的時候不會遇到。如果出現(xiàn)UNKNOWN狀態(tài),不妨反復(fù)運(yùn)行nova list命令,直到該狀態(tài)消失。

            要查看特定服務(wù)器的全部信息,使用nova show命令加上我們從nova list命令中獲得的服務(wù)器ID。

          $ nova show 1805
          +-----------------+----------------------------------------------------------+
          |     Property    |                          Value                           |
          +-----------------+----------------------------------------------------------+
          | created         | 2011-09-01T21:40:41Z                                     |
          | flavor          | m1.small                                                 |
          | hostId          | 58a7430169aa42cde5ce2456b0cb5bb5ac1ab0703bab6420e8a49e6e |
          | id              | 1805                                                     |
          | image           | maverick                                                 |
          | metadata        | {}                                                       |
          | name            | testserver                                               |
          | private network | 10.4.96.81                                               |
          | progress        | 100                                                      |
          | status          | ACTIVE                                                   |
          | updated         | 2011-09-01T21:40:46Z                                     |
          | uuid            | ce044452-f22e-4ea4-a3ec-d1cde80cf996                     |
          +-----------------+----------------------------------------------------------+

            通過以上幾項(xiàng)nova命令的基本演練,現(xiàn)在大家已經(jīng)在建立自有云的道路上邁出了第一步!

            創(chuàng)建自定義鏡像,并打包上傳至OpenStack

            成功從列表中查看當(dāng)前可用的鏡像之后,大家可能還希望添加符合自己需要的鏡像。要創(chuàng)建自定義鏡像,首要要從ISO文件開始。CentOS、Debian、Fedora或者Ubuntu,只要合用,都可以下載對應(yīng)的ISO文件。在這里獲取的都是.tar及.gz文件,其中包含虛擬機(jī)鏡像(*.img),一套Xen兼容內(nèi)核/虛擬磁盤(后者由xen-內(nèi)核/vmlinuz*與xen-內(nèi)核/initrd*兩部分構(gòu)成)以及一套KVM兼容內(nèi)核/虛擬磁盤(后者由kvm-內(nèi)核/vmlinuz*與kvm-內(nèi)核/initrd*兩部分構(gòu)成)。大家可以通過命令行或者使用VirtualBox以及kvm之類的虛擬化平臺打造自定義鏡像。創(chuàng)建一個.vdi鏡像,再利用quemu-utils中的quemu-img工具將其轉(zhuǎn)換為可用格式。

            大家可能還希望讓鏡像變得更大,向其中添加類似Linux標(biāo)準(zhǔn)基礎(chǔ)這樣的軟件包,以使其更適合日常工作中的實(shí)際應(yīng)用。一旦在VirtualBox或者其它任何平臺上完成了自定義工作,將最終文件拷貝到安裝了euca2ools的Linux計(jì)算機(jī)中。在文章的下一節(jié)中,我將向大家介紹如何將自己的自定義鏡像通過命令行中的euca-命令導(dǎo)入OpenStack云中。

          如何將新鏡像導(dǎo)入OpenStack鏡像服務(wù)(Glance)

            當(dāng)一套自定義虛擬機(jī)鏡像創(chuàng)建完成,我們可以將磁盤鏡像數(shù)據(jù)及鏡像元數(shù)據(jù)存儲在鏡像服務(wù)中。

            這里使用Eucalyptus工具集也是個不錯的選擇,該工具集是一款作用于云的開源命令行客戶端,并且兼容Amazon的EC2 API。安裝euca2ools命令行工具并確保自己的環(huán)境包含了Eucalyptus運(yùn)行所必需的認(rèn)證機(jī)制。

            上傳內(nèi)核,并注意Amazon內(nèi)核鏡像(簡稱AKI):

          euca-bundle-image -i kvm-kernel/vmlinuz-2.6.28-11-generic --kernel true
          euca-upload-bundle -b jbbucket -m /tmp/vmlinuz-2.6.28-11-generic.manifest.xml
          euca-register jbbucket/vmlinuz-2.6.28-11-generic.manifest.xml

            上傳虛擬磁盤并注意Amazon虛擬磁盤鏡像(簡稱ARI),這樣大家就能獲得綁定鏡像時必需的參考信息:

          euca-bundle-image -i kvm-kernel/initrd.img-2.6.28-11-generic --ramdisk true
          euca-upload-bundle -b jbbucket -m /tmp/initrd.img-2.6.28-11-generic.manifest.xml
          euca-register jbbucket/initrd.img-2.6.28-11-generic.manifest.xml

            上傳自定義設(shè)備鏡像,通過在之前步驟中獲取到的值指定內(nèi)核及虛擬磁盤:

          euca-bundle-image -i centos-5.5-x86_64.img --kernel aki-XXXXXXXX --ramdisk ari-XXXXXXXX
          euca-upload-bundle -b jbbucket -m /tmp/centos-5.5-x86_64.img.manifest.xml
          euca-register jbbucket/centos-5.5-x86_64.img.manifest.xml

            上傳至鏡像服務(wù)器的過程可能會持續(xù)一段時間——但當(dāng)我們使用Eucalyptus的“describe images”命令時,新的AMI應(yīng)該顯示如下內(nèi)容。

          euca-describe-images
          IMAGE    ami-reey5wk5    jbbucket/centos.5-5.x86-64.img.manifest.xml    myproject    available    private        x86_64    machine    ami-f4ks8moj    ami-jqxvgtmd

            如何通過UI使用存儲對象

            大家可能利用REST API來訪問自己在OpenStack中的存儲對象,但更多的時候,我們只希望能有一套良好的用戶界面,以便通過拖拽操作實(shí)現(xiàn)文件存儲。開源客戶端Cyberduck,包括Mac OS X版本以及Windows版本,就針對從FTP到對象存儲等一系列機(jī)制提供了一套用戶界面。由于它的開源及跨平臺特性,這款優(yōu)秀的界面完全可以安裝在OpenStack對象存儲當(dāng)中(類似于Rackspace云文件)。大家在cyberduck.ch站點(diǎn)下載即可。要實(shí)現(xiàn)其在OpenStack中的安裝,我們需要變更某個 隱藏的配置選項(xiàng) 。這里需要將URL由default /v1.0修改為/auth/v1.0。要在Mac OS X中修改授權(quán)URL,則需要打開終端窗口并輸入:

          Defaults defaults write ch.sudo.cyberduck cf.authentication.context /auth/v1.0

            Cyberduck 3.8.1中包含一個用于在打開某個鏈接時選擇Swift(OpenStack對象存儲)的下拉菜單。啟動Cyberduck,然后點(diǎn)擊新建連接工具欄按鈕或者選擇文件>打開連接。

            選擇Swift(OpenStack對象存儲)并輸入以下值:

            ● Server(服務(wù)器):輸入已安裝的Swift服務(wù)器的URL。
            ● Port(端口):由于用戶是通過http進(jìn)行連接,因此輸入443.
            ● Username(用戶名):在冒號后輸入賬戶名稱,然后是用戶名,例如test:tester。
            ● Password(密碼):根據(jù)上一步使用的賬戶名稱及用戶名輸入對應(yīng)密碼。

            圖五顯示的是一個Cyberduck Swift連接實(shí)例。

          圖五

            大家在自己的對象存儲系統(tǒng)中完成容器創(chuàng)建之后,就可以通過拖拽的方式將來自桌面的文件拷貝到Cyberduck當(dāng)中,如圖六所示。

          圖六

            到這里,我們已經(jīng)可以將所有的圖片及視頻作為內(nèi)置冗余備份到大規(guī)模擴(kuò)展存儲系統(tǒng)當(dāng)中。


          posted on 2011-11-25 17:40 順其自然EVO 閱讀(1405) 評論(0)  編輯  收藏 所屬分類: 管理方向

          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 库伦旗| 珠海市| 克东县| 东至县| 德惠市| 西昌市| 梅河口市| 武安市| 禹州市| 正阳县| 兴海县| 乌兰浩特市| 宣威市| 久治县| 沾益县| 天峨县| 涟源市| 巴南区| 河南省| 东宁县| 甘德县| 长寿区| 农安县| 阿克苏市| 兴安县| 同江市| 田阳县| 广宗县| 大邑县| 屯留县| 中方县| 长白| 霍邱县| 从化市| 台中市| 霸州市| 榆树市| 常宁市| 沅陵县| 瑞丽市| 康定县|