1. 程式人生 > >OpenStack基本功能介紹

OpenStack基本功能介紹

一、簡介

什麼是OpenStack?OpenStack是一個開源的雲端計算管理平臺專案,由幾個主要的元件組合起來完成具體工作。OpenStack支援幾乎所有型別的雲環境,專案目標是提供實施簡單、可大規模擴充套件、豐富、標準統一的雲端計算管理平臺。OpenStack通過各種互補的服務提供了基礎設施即服務(IaaS)的解決方案,每個服務提供API以進行整合。

本篇文章介紹了OpenStack的簡單功能,以及執行這些功能的操作,主要是根據《OpenStackOperations Guide》的第八、九、十章翻譯整理而成。

在OpenStack使用者介面和一些文件中,有時候你會看到“project”是指一組使用者,而有時候你會也看到用來替代“tenant”,這兩種術語是可以通用的。

這是因為最初OpenStack計算服務(nova)有著自己的身份驗證系統,並使用的術語“project”。當認證系統獨立成為OpenStack身份識別服務(Keystone)專案後,新專案中使用的術語“tenant”代指一個使用者組。由於這一問題,一些OpenStack工具是指“project”,有些是指“tenant”。

一個使用者必須至少屬於一個專案,也可以屬於多個專案。因此,至少新增一個專案後,才可以新增使用者。

我們可以通過儀表盤來建立專案,具體過程不再贅述,或者通過命令列來建立專案。

# keystone tenant-create --name=demo 

這將建立一個新專案命名為“demo”。可以用 –description<tenant-description> 引數新增一些描述。也可以用 –enable false 引數建立一個禁用狀態的租戶,不指定是預設開啟狀態。

為了防止系統性能在沒有通知的情況下消耗殆盡,我們需要quota來防止這一情況我們可以通過命令列來管理OpenStack計算服務(nova)、OpenStack物件儲存服務(swift)和OpenStack塊儲存服務(cinder)的quota即配額。

       映象的配額是應用於全雲端的,所以一旦將映象的配額設定為例如5GB,那麼在你雲中的所有專案都將只被允許設定5GB的映象或者快照。

       修改映象配額需要在/etc/glance/glance-api.conf 檔案下的[DEFAULT]選項中增加

user_storage_quota= <bytes>

       通過命令列可以檢視或修改計算服務預設的配額或是某個專案的配額。

       檢視所有租戶的預設配額

$ nova quota-defaults

修改一個新租戶的預設配額

$ nova quota-class-update default key value

將租戶ID賦值

$ tenant=$(keystone tenant-list | awk '/tenantName/ {print$2}')

顯示該租戶的所有配額

$ nova quota-show --tenant $tenant

更新該租戶的配額

# nova quota-update --quotaName quotaValue tenantID

檢視幫助

$ nova help quota-update

       物件儲存配額有兩類,Container quotas和Accountquotas ,無論是需要修改哪一類的配額,都需要在proxy-server.conf 檔案中加上

       [pipeline:main]

pipeline = healthcheck [...]container_quotas account_quotas proxy-server

[filter:account_quotas]

use = egg:swift#account_quotas

[filter:container_quotas]

use = egg:swift#container_quotas

檢視一個專案的賬戶配額

$ swift stat

應用或修改一個專案的賬戶配額

$ swift post -m quota-bytes:

<bytes>

       檢視所有專案的預設配額

$ cinder quota-defaults

在/etc/ cinder/cinder.conf檔案中修改新租戶的預設配額

檢視一個租戶的配額

# cinder quota-show tenantName

將租戶ID賦值

$ tenant=$(keystone tenant-list | awk '/tenantName/ {print $2}')

更新配額的值   

# cinder quota-update --quotaName NewValue tenantID 


在命令列使用者管理使用者非常不方便。需要多條命令才能完成一個任務,並且要是用UUID,而不是象徵性的名字。在實踐中,人們通常不會使用命令列管理使用者。幸運的是,OpenStack 儀表盤提供了一個合理的介面。

要建立一個新的使用者,您將需要以下資訊:

l   使用者名稱

l   郵箱

l   密碼

l   所屬主要專案

l   角色

使用者名稱和電子郵件都是不言而喻的,雖然我們的網站可能有本地習慣,但是這樣便於觀察。設定和更改密碼的認證服務,需要管理員許可權。

角色就是一個”會員”,可以直接使用:

l   “member”: 一個典型的使用者。

l   “admin”: 超級管理員使用者,在所有專案中,你應該謹慎使用它。

我們也可以定義其它角色,但很少這樣做。

許多網站執行與使用者相關的只有一個專案。這是一種較為保守和簡單的管理使用者選擇。在管理上,一個使用者報告出現很明顯問題的一個例項或配額,如果它們在一個專案中,使用者不必擔心它們的行為是哪個專案。然而,需要注意在預設情況下,任何使用者都可以影響到這個專案下其他使用者資源的使用額度。也可以讓使用者關聯多個專案,這樣的組織比較有意義。在儀表盤中可以進行這一操作。

按照慣例,典型的應用是在一個單一的專案裡,該專案建立預設設定雲管理使用者。如果您的管理使用者使用雲資源來啟動和管理,強烈建議您使用單獨的使用者賬戶來管理訪問許可權和雲正常運作,它們在不同的專案裡。

OpenStack 映象通常可以被理解為“virtual machinetemplates(虛機模板)”。映象也可以被認為是標準安裝介質例如ISO 映象. 基本上,它們都含有能啟動例項的啟動系統檔案。

glance image-create 命令有很多選項

min-disk選項對啟動分割槽有大小要求的映象(象windows需要比較大的分割槽)非常有用。

location 選項需要特別注意。它並不複製整個映象到Glance,而是提供映象的原始路徑。當啟動一個例項的時候,Glance會到該路徑載入映象。

copy-from 選項從指定路徑複製映象到/var/lib/glance/images 。

檢視這些選項

$ glance help image-create

執行下述命令來檢視已有映象的詳細資訊

$ glance details

 刪除映象

$ glance image-delete <image uuid>

注意:刪除映象不影響基於此映象的虛機例項或快照。

在Openstack中,Virtual hardware templates(虛機硬體模板)被稱為型別模板(flavor),包括RAM和硬碟大小,CPU核數等。標準安裝後有5個預設的型別。型別模板可以被有管理員許可權的使用者修改(修改的許可權也可以被編輯,通過在nova-api 伺服器上的/etc/nova/policy.json檔案中修改訪問控制:compute_extension:flavormanage )。Flavor定義了很多元素,可以在官網的表中檢視。

使用者往往會為了專案建立一個新的私人型別模板,通過命令列可以連線模板

$ nova flavor-access-add<flavor-id> <project-id>

那如何修改一個已有的型別模板? 不幸的是,OpenStack沒有提供修改模板的介面,只有增加和刪除。Dashboard裡的模板修改的工作模式其實是刪除舊模板並增加一個同名模板。

對新使用者,Openstack最常見的問題是當啟動一個例項,未能設定適當的安全組,之後後無法訪問網路上的例項。 安全組是一組應用於一個例項的網路的IP過濾規則,是基於具體專案的,專案成員可以編輯預設的規則,或對他們組新增新規則。所有的專案如果沒有其他安全組定義,都有一個“預設”安全組,並將其應用於例項。

nova.conf 檔案中的選項allow_same_net_traffic (預設為true) 是在全域性範圍內,控制規則是否適用於共享一個網路的主機群。當設定為true,在同一子網主機之間可以相互傳送所有型別資料,沒有經過過濾。在Flat模式網路,這使得所有專案中的所有例項可以未過濾的相互通訊。在VLAN模式網路,只有在同一個專案允許例項相互訪問。增加新規則

$ nova secgroup-add-rule <secgroup> <ip-proto> <from- port> <to-port><cidr> 

       這裡的‘from-port’和 ‘to-port’並非源埠和目的埠,而是埠的範圍。複雜的規則可以通過多條規則實現。反方向操作是secgroup-delete-rule,同樣的格式。如果想刪除整個安全組可以用:secgroup-delete. 

一個使用者設定一個SourceGroup(有安全組名字), 所有此使用者在其他的例項上可以動態選擇使用這個SourceGroup。 這種方式減輕了每個新使用者需要一個新的規則的麻煩。

$ nova secgroup-add-group-rule<secgroup> <source-group> <ip-proto> <from-port><to-port>

OpenStack卷是持久的塊儲存裝置,可以附加到例項或分離,但同時只能連線到一個例項,類似於一個外部硬碟,不象網路檔案系統或物件儲存那樣提供共享儲存方式。塊儲存讓例項中的作業系統把檔案系統載入和安裝到塊裝置。類似於其他可移動磁碟技術,作業系統不能利用磁碟,然後馬上移掉它,資料容易出問題。

OpenStack沒有涉及例項作業系統在訪問塊裝置時需要的步驟等等相關規則。 所涉及到的只有如何建立卷並將其掛載到例項或解除安裝。這些操作可以在dashboard的‘卷(volume)’頁面中找到,或用cinder命令列。為了增加一個卷只需要名字和卷大小(GB),將其輸入到‘建立卷’選單,或者用命令列方式,建立了一個人名為‘test-volume’、10GB的卷

$ cinder create –display-name test-volume 10

列出已存在的卷和所連線的例項

$ cinder list

塊儲存服務還允許建立快照。值得注意的是這是塊級別的快照,最好在卷沒有連線到例項的時候進行快照,或者卷沒有被載入或使用的時候做。如果在卷被頻繁使用的時候做,可能得到的是一個不一致的檔案系統。

例項是在一個OpenStack雲執行的虛擬機器。為了發起一個例項,需要選擇一個映象,一個型別模型,和一個名字。 名字不一定需要唯一,但如果是唯一的話,你的日子會好過很多,因為很多工具用到名字代替UUID。

發起例項可以通過dashboard的“例項”頁面的“發起例項(launchinstance)”按鈕,然後到選擇映象和快照頁面。 也可以選擇命令列模式

$ nova boot –flavor<flavor> –image <image> <name>

刪除例項

$ nova delete <instance-uuid>

要注意, 將一個例項關閉電源(關機)並不代表這個例項在openstack中被去除。

       檢視例項測試資料

$ nova show test-instance

有各種各樣的方法來注入定製化的資料包括使用者資料,元資料服務,授權金鑰(authorized_keys)注入,和檔案注入。 澄清使用者資料與元資料的區別:“使用者資料”是一部分資料,在例項沒有執行時設定。這個使用者資料可以在例項執行中存取和使用。人們使用這個使用者資料來儲存配置,指令碼,或其他的資料,如果租戶想要的話。 而元資料,是與例項相關聯的一組 鍵/值(key/value)。在例項存在期間,當用戶通過Compute API 發出指令時,nova-compute從例項的內部或外部來讀寫這些鍵/值。

使用者可以通過nova命令生成和註冊ssh 金鑰:

$ nova keypair-add mykey > mykey.pem

這生成了一個名字為mykey的金鑰,可以關聯到例項上。mykey.pem 檔案是私鑰,需要儲存到一個安全的地方,因為它允許以root的使用者訪問與其關聯的例項。我們可以用以下命令註冊一個公鑰:

$ nova keypair-add –pub-key mykey.pub mykey

同時我們必須要有相對應的私鑰來訪問和此公鑰相關聯的例項,在一個例項啟動時關聯金鑰

$ nova boot –image ubuntu-cloudimage –flavor 1 -key_name mykey