Openstack Dashboard 二次開發

Openstack的Dashboard項目Horizon,其實作的很不錯。其實若是你熟悉他的代碼,對他進行一下簡單修改,能夠實現不少你須要的功能。不少時候,並不須要作太大的改動。python

不少人都是根據Openstack的dashboard來判斷有什麼功能,其實Dashboard只是Openstack的部分功能,不少你需求的 功能,可能很簡單就能夠實現,基本沒啥代碼量。當你讀Openstack的代碼,你帶着下面這些需求去看,估計效果更好。若是你實現了下面這些功能,至少 說明你已經開始熟悉Openstack。須要記住一點就是下面的功能,所有都是經過調用API實現。linux

下面的這些功能,你就能夠拿來練手。我大概估算一下工做量,若是一個python程序員,從熟悉Openstack開始,加上你們交流,我估計3個 月,應該就能夠基本搞定下面的功能。這基本都是基於Openstack的Horizon來修改。如下的內容,我公司的開發人員,基本都已經玩了一遍。ios

大概是3,4百行的代碼修改量。程序員

1:虛擬機自動得到Floating IPweb

當你建立虛擬機的時候,默認是得到一個fix ip,公網的IP,須要手工得到。如何能實現自動得到IP呢?其實nova默認就有這個功能,你只須要在nova.conf 文件加上一個參數就能夠實現。如今Grizzly,也在努力實現這個功能。這個功能在HPcloud上已經實現。我同事已經驗證了這個功能。這個其實不需 要增長一行代碼。windows

2:默認安全組的改進api

這個實際上是讓不少新手比較困惑的地方。默認的安全組是沒任何規則,不容許訪問。是否能夠默認加上ssh和容許ping的規則呢? HPcloud,默認的每一個新的用戶,都是打開22端口和容許ping。實現這個其實也不難,找對相應的文件的位置,修改就能夠,經過調用API來實現。安全

3:安全組添加UI改進服務器

如今安全組添加完一條規則,立刻就關閉頁面,若是添加多條規則,很不方便。這個實際上是考驗你的web水平。如今Grizzly已經決定改進這個地方。這個實現起來,應該是很簡單的。網絡

https://blueprints.launchpad.net/horizon/+spec/security-group-rules

4:把虛擬機建立在指定的物理服務器

若是你是管理員,你是能夠經過命令行,指定虛擬機在那臺物理服務器上建立。若是你但願在Dashboard裏實現那麼你須要作很多工做。首先你須要 把全部的服務器列出來,你才能去選擇。須要實現經過API的方式,把你zone裏的服務器列出來,產生一個列表,讓用戶選擇。當你把服務器列出來後,後面 就簡單了,你只須要把參數傳過去就能夠。

當你機器數量比較少的時候,這樣玩是沒問題的。並且用戶也習慣這種方式。

5:虛擬機關機

默認虛擬機是不能關機的,這其實也是運營模式決定的。不過其實nova 的api是提供虛擬機關機的功能。你只須要調用API接口就能夠實現。

6:變動虛擬機配置 Resize

這也是常常提到的問題。爲了統一的管理,其實通常都是幾個固定的配置,你能夠根據你的要求,對配置進行變動。是否支持運行狀態下變動配置,這其實基 本是由Hyper-V決定。vmware是能夠支持cpu,硬盤,網卡,內存的在線添加。對於KVM來講,就只能支持磁盤和網卡。

變動配置,在Openstack裏是Resize, 他是要調整虛擬機的硬盤,內存和cpu。對於nova來講,Resize仍是比較複雜的,出於運維,管理和成本的考慮,Resize,會對虛擬機進行一個遷移,這樣你還須要處理網絡的問題。

目前nova是提供了這個功能,不過要很好實現,目前仍是很麻煩。最簡單的方式就是本地resize,這樣你至少就不須要考慮網絡。這個我同事基本已經實現了,本地實現resize。

關於Resize,sina修復了兩個bug,這個能夠看看,https://www.openstack.org/blog/2012/10/how-sina-contributes-to-openstack/

7:熱遷移

其實之前你們都認爲熱遷移的實現,都是須要有共享存儲,其實如今各個虛擬化引擎,都已經實現不須要共享存儲,也能夠實現熱遷移。據專家說:KVM下實現熱遷移,比Xen好不少。

Nova目前是支持熱遷移了,不管是有共享存儲仍是本地存儲。若是是本地存儲,爲了減小網絡的傳輸壓力,若是你的image是qcow2的格式,你能夠利用這個特性。至少在演示的時候很酷,本地存儲,一會兒就遷移過去。

目前這種遷移,其實都是手工去觸發。你須要把虛擬機遷移到那臺機器上。其實這種操做,也就適合小規模的環境或者是在維護的時候。

在vmware的世界裏,熱遷移叫VMotion,不過據朋友介紹,當你的虛擬機內存達到16G的時候,你其實就很難遷移,多是幾個小時都沒法遷移過去。這其實更多的是一個玩具。

8:冷遷移

這個其實也簡單。本地存儲,共享存儲,都是能夠實現。nova都提供相應的API,你只須要在Web實現就能夠。不過這種遷移,如何實現對現有的系統影響更少。這是一個問題,尤爲是硬盤的IO上。

對於遷移,不管是冷遷移,熱遷移,Resize,其實網絡和volume都是麻煩的事情,尤爲在quantum的網絡裏。目前這個應該是要花費大量的時間。

9:虛擬機設置root密碼

默認nova是採用密鑰登錄。這確定是一個方向。不過用戶的習慣,有時候很難改變。他可能更加但願能夠建立虛擬機的時候設置密碼。

其實nova默認也是提供這個功能。你能夠設置虛擬機的root的密碼。也能夠隨機生成密碼。你須要作的是如何告訴用戶,隨機密碼是什麼。

linux的ssh登錄,密碼和密鑰,你只能二選一,因此你作image的時候,須要進行設置。

10:集成監控Nagios

Openstack缺少監控,如何加上監控,集成在Dashboard裏?這個應該比想象中簡單。由於Horizon默認就考慮到這個。你看一下代 碼就能夠實現。你的模板須要默認啓用snmp,這樣你的虛擬機均可以監控。考驗的就是你對Nagios熟悉。這種方式,在企業內部使用,應該是很是方便 的。

Intel的一個Openstack修改版本,已經實現了這個功能。效果其實很不錯。

11:多Region實現

當你的環境下有幾個環境,或者有Xen和KVM,如何用一個Dashbaord來管理。如今新浪的搞的Stacklab就是相似的方式實現的。

其實這個也很簡單,不須要配置任何東西,只須要配置一下就能夠。若是若是你但願多個環境使用統一的用戶驗證,估計須要調整一下。這個是不須要修改代碼。

12:用戶修改密碼

目前用戶是無法修改本身的密碼,只有管理員能夠修改本身的密碼。這個功能實際上是必定要加上的。實現起來應該不難。目前管理員是能夠重設用戶的密碼,就說明已經有接口,看一下如何實現就能夠。須要你瞭解一下keystone的接口。

13:批量建立虛擬機時候的計算機名字

若是你使用qcow2 鏡像格式,批量建立虛擬機是一件比較爽的事情。惟一的問題就是建立出來的虛擬機的命令都是同樣。但願能夠實如今你指定的計算機名字後面加上數字來區別。郵件列表裏有老外提問,不過沒有解決。Hpcloud不容許客戶本身定義計算機名,是隨機生成。

這個同事已經實現。不過只是linux的虛擬機。windows的虛擬機,若是解決呢?如今看來仍是有可能實現的。慢慢研究。

13:snapshot備份改進

目前Dashboard裏是提供的snapshot的功能。若是你採用qcow2的格式,那麼他實際的過程是把base部分和增量部分合並,保存到glance裏。這裏面是沒法實現增量的備份。

一直以來,用戶都須要經過快照的方式實現備份,因爲虛擬機比較大,因此必須實現增量。

新浪目前已經在實現如何增量備份虛擬機。正在把代碼加入Grizzly中 ,這個貢獻可真不小啊。https://blueprints.launchpad.net/cinder/+spec/local-storage-volume

很是值得期待。

14: 修改調度

若是才能最大化利用資源,充分利用機器的全部的cpu和內存。咱們須要修改它的調度。

假設我有兩組機器,1組是新機器,1組是舊機器。我但願實現配置1的虛擬機,都是在新組機器建立,配置2的虛擬機都是在舊的那組機器建立。我如何修改調度去實現這個需求。

目前這個需求實現仍是比較困難。正在想辦法。

通過學習,好像將來的Grizzly版本,已經解決了這個問題:http://www.cloudcomp.ch/2013/02/how-do-you-organise-your-openstack-deployment/

相關文章
相關標籤/搜索