Openstack是一個Open Source的專案。  近年來雲端平台盛行,許多公司都推出雲端的平台,例如說 : Amazon的AWS、與Google的虛擬機、或是DigitalOcean與Linode。提供一個雲端的VM架設服務等。 (Apache License 2.0)

OpenStack是美國國家航空暨太空總署Rackspace共同打造的雲端開源軟體,以Apache許可證授權,並且是一個自由軟體和開放原始碼項目,用來打造基礎設施即服務(IaaS)。OpenStack擁有三大模組運算模組網通模組儲存模組,加上一套集中式管理的儀表板模組,來組合成一套OpenStack共享服務,並且以提供虛擬機方式,對外帶來運算資源,以便利彈性擴充或調度。 Openstack是開源項目,除了有 Rackspace和NASA的大力支持外,後面還有包括Dell、 Citrix、 Cisco Canonical這些重量級公司的貢獻和支援,發展速度非常快,有取代另一個業界領先開源雲台 Eucalyptus的態勢。

如果熟悉雲端服務,雲端運算的人,也許有聽過 OpenStack 這套雲端運算軟體平臺。 它不是一個軟體 是一個雲平臺管理的專案。這個專案由幾個主要的元件組合起來完成一些具體的工作。 不少的大公司採用 OpenStack 的架構架設提供 IaaS 服務,架設公有雲、私有雲或是混合雲。也有的公司基於 OpenStack 是開源軟體,因成本考量選擇 OpenStack 方向。 Openstack的目標在為公共及私有雲的建設與管理提供軟體的開源專案。它的社區擁有超過130家企業及1350位開發者,這些機構與個人將 Openstack作為基礎設施即服務資源的通用前端。Openstack專案的首要任務是簡化雲的部署過程並為其帶來良好的可擴展性。本文希望通過提供必要的指導資訊,説明大家利用 Openstack前端來設置及管理自己的公共雲或私有雲。

發展趨勢

Open Stack需要完善的部分大體上可以歸納為以下幾個方面: 

  1. 增強動態遷移:雖然 Open Stack的Nova元件支援動態遷移,但實質上 Open Stack尚未實現真正意義上的動態遷移。在 Open Stack中因為沒有共存儲只能做塊遷移,共用遷移只能在有共用存儲的情況下才被使用。 
  2. 資料安全:安全問題一直是整個雲計算行業的問題,儘管 Open Stack中存在對使用者身份資訊的驗證等安全措施,甚至劃分出可以單獨或合併表徵安全信任等級的域,但隨著用戶需求的變化和發展,安全問題仍然不可小覷。 
  3. 計費和資料監控:隨著 Open Stack在公有雲平臺中的進一步部署,計費和監控成為公有雲運營中的一個重要環節。雲平臺的管理者和雲計算服務的提供者必然會進一步開發Open Stack的商業價值。儘管 Open Stack中已經有 Ceilometer計量元件,通過它提供的API介面可以實現收集雲計算裡面的基本資料和其他資訊,但這項工程目前尚處於完善和測試階段,還需要大量的技術人員予以維護和支持。

管理流程

QEMU是一個純軟體的電腦硬體模擬器。通過單獨運行QEMU來類比物理電腦,具有非常靈活和可移植的特點,利用它能夠達到使用軟體取代硬體的效果。一般情況下,OpenStack可以部署在Ubuntu的Linux作業系統上,為了進一步提高QEMU的運行效率,往往會增加一個KVM硬體加速模組。KVM內嵌在Linux作業系統內核之中,能夠直接參與電腦硬體的調度,這一點是QEMU所不具備的。一般的QEMU程式的執行必然要經過程式從使用者態向內核態的轉變,這必然會在一定程度上降低效率。所以QEMU雖然能夠通過轉換對硬體進行訪問,但在OpenStack中往往採用KVM進行輔助,使得OpenStack的性能表現得更為良好。但需要說明的是KVM需要良好的硬體支援,有些硬體本身如果不支援虛擬化的時候,KVM則不能使用。

Libvirt是一個開源的、支持Linux下虛擬化工具的函式程式庫。實質上它就是為構建虛擬化管理工具的API函數。Libvirt是為了能夠更方便地管理平臺虛擬化技術而設計的開放原始程式碼的應用程式介面,它不僅提供了對虛擬化客戶機的管理,也提供了對虛擬化網路和存儲的管理。最初的 Libvirt是只針對Xen而設計的一系列管理和調度Xen下的虛擬化資源的API函數,目前高版本的 Libvirt可以支持多種虛擬化方案,包括KVM、QEMU、Xen、 VMware、 VirtualBox等在內的平臺虛擬化方案,又支援 Openvz、LXC等 Linux容器虛擬化系統,還支援使用者態Linux(UML)的虛擬化,它能夠對虛擬化方案中的Hypervisor進行適配,讓底層 Hypervisor對上層使用者空間的管理工具可以做到完全透明。

核心項目

  • 計算(Compute):Nova。一套控制器,用於為單個用戶或使用群組管理虛擬機器實例的整個生命週期,根據使用者需求來提供虛擬服務。負責虛擬機器創建、開機、關機、掛起、暫停、調整、遷移、重啟、銷毀等操作,配置CPU、記憶體等資訊規格。自Austin版本集成到專案中。
  • 物件存儲(Object Storage):Swift。一套用於在大規模可擴展系統中通過內置冗余及高容錯機制實現物件存儲的系統,允許進行存儲或者檢索檔。可為Glance提供鏡像存儲,為Cinder提供卷備份服務。自Austin版本集成到專案中。
  • 鏡像服務(Image Service):Glance。一套虛擬機器鏡像查找及檢索系統,支援多種虛擬機器鏡像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有創建上傳鏡像、刪除鏡像、編輯鏡像基本資訊的功能。自Bexar版本集成到專案中。 
  • 身份服務(Identity Service):Keystone。為OpenStack其他服務提供身份驗證、服務規則和服務權杖的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到專案中。 
  • 網路&位址管理(Network):Neutron。提供雲計算的網路虛擬化技術,為OpenStack其他服務提供網路連接服務。為使用者提供介面,可以定義Network、Subnet、Router,配置DHCP、DNS、負載均衡、L3服務,網路支援GRE、VLAN。外掛程式架構支援許多主流的網路廠家和技術,如OpenvSwitch。自Folsom版本集成到專案中。 
  • 塊存儲 (Block Storage):Cinder。為運行實例提供穩定的資料塊存儲服務,它的外掛程式驅動架構有利於塊設備的創建和管理,如創建卷、刪除卷,在實例上掛載和卸載卷。自Folsom版本集成到專案中。 
  • UI 介面 (Dashboard):Horizon。OpenStack中各種服務的Web管理門戶,用於簡化使用者對服務的操作,例如:啟動實例、分配IP位址、配置存取控制等。自Essex版本集成到專案中。 
  • 測量 (Metering):Ceilometer。像一個漏斗一樣,能把OpenStack內部發生的幾乎所有的事件都收集起來,然後為計費和監控以及其它服務提供資料支撐。自Havana版本集成到專案中。 
  • 部署編排 (Orchestration):Heat。提供了一種通過範本定義的協同部署方式,實現雲基礎設施軟體運行環境(計算、存儲和網路資源)的自動化部署。自Havana版本集成到專案中。 
  • 資料庫服務(Database Service):Trove。為用戶在OpenStack的環境提供可擴展和可靠的關係和非關聯式資料庫引擎服務。自Icehouse版本集成到專案中。