書名: OpenStack云計算實戰作者名: 鐘小平 許寧本章字數: 3829字更新時間: 2020-05-22 15:44:38
1.5 部署OpenStack
OpenStack云的開發、運維和使用的前提是安裝和部署OpenStack。本節對部署OpenStack做總體介紹,各組件與服務的具體部署將在后續章節中介紹。
1.5.1 選擇操作系統平臺
OpenStack作為一個云操作系統,可以安裝在Linux服務器上。目前OpenStack可以安裝在以下操作系統上。
openSUSE和SUSE Linux Enterprise Server。
Red Hat Enterprise Linux和CentOS。
Ubuntu。
全球的OpenStack開發者大部分都使用Ubuntu,不過國內用戶更傾向于使用CentOS平臺,本書就是以CentOS 7平臺為例講解OpenStack。
1.5.2 部署拓撲
OpenStack是一個分布式系統,由若干不同功能的節點(Node)組成。不同類型的節點是從功能上進行邏輯劃分的,在實際部署時可以根據需求靈活配置。
在大規模OpenStack生產環境中,每類節點都分別部署在若干臺物理服務器上,各司其職并互相協作。這樣的部署具備很好的性能、伸縮性和高可用性。
在最小的實驗環境中,可以將各類節點部署到一臺物理服務器甚至是虛擬服務器上,這就是所謂的All-in-One部署,又稱一體化部署。
1.5.3 OpenStack部署工具
對于有經驗的云系統工程師來說,通常會選擇手動部署OpenStack。手動部署OpenStack的優點是按需定制,非常靈活,部署的云平臺運行效率高。不過由于組件眾多,手動部署OpenStack非常煩瑣,對于剛剛接觸到OpenStack的初學者而言,難度可想而知。好在有許多OpenStack快捷部署工具可供選擇,這在很大程度上降低了學習OpenStack云計算的技術門檻,而且有些工具完全可用于生產環境的自動化部署。下面簡單介紹一下主要的OpenStack部署工具。
1.DevStack
DevStack 是一系列可擴展的腳本,用于根據 git master 分支上的最新版本快速建立一個完整的OpenStack環境。使用它部署的云系統既可以用作OpenStack開發環境,又可以作為許多OpenStack項目的功能測試的基礎。DevStack支持以下3種部署方式。
(1)在虛擬機上運行OpenStack。
(2)在物理機(PC或服務器)上以All-in-One(一體化)方式在單一節點上部署OpenStack。
(3)在物理機(PC或服務器)上以分布式方式部署OpenStack。這需要搭建一個多節點的集群。
DevStack 采用自動化源碼安裝,用戶只需要下載相應的 OpenStack 版本腳本,修改相關的配置文件就可以實現自動化安裝,自動化解決依賴關系,非常方便。它還提供了相應的文檔、配置文件樣例和練習腳本,特別適合初學者使用,初學者可以訪問OpenStack官方網站來進一步了解DevStack及其安裝方法,其源代碼可以從OpenStack官方網站獲得。
DevStack 適合部署 OpenStack 開發或教學環境,并不適合生產環境。實際的生產環境需要滿足各種硬件、網絡和存儲的要求,對性能、可靠性和安全性都有嚴格的要求。
2.Fuel
與DevStack側重于開發和測試環境不同,Fuel是一種OpenStack工業級的自動化部署方案。作為一款開源的OpenStack部署和管理工具,它由OpenStack社區開發,為OpenStack的部署和管理提供直觀的圖形化界面體驗,還提供相關的社區項目和插件。
Fuel可以簡化和加速OpenStack各種配置模板的規模部署、測試和維護,解決耗時、復雜、易錯的問題。與其他特色平臺的部署或管理工具不同,Fuel是一個上游的OpenStack項目,專注于自動化部署和測試,支持一定范圍的第三方選項,這樣就不會被捆綁銷售或被廠商鎖定。
Fuel面向普通用戶提供了多種不同需求的簡化的OpenStack部署方式,支持CentOS和Ubuntu操作系統,通過擴展也可支持其他發行版本,支持多個 OpenStack 版本。Mirantis 公司將 Fuel 作為OpenStack相關方案的一部分。要想獲取更多的信息可以訪問Mirantis官方網站。
Fuel的系統框架如圖1-11所示。Fuel并非一個整體,而是由多個獨立的組件組成。其中一些是Fuel專有的組件,另外一些是第三方服務,如Cobbler、Puppet、MCollective等。一些組件可以單獨使用而無須任何修改,另外一些則需要稍做調整。

圖1-11 Fuel的系統框架
UI是使用JavaScript編寫的網頁應用程序,其底層使用了Bootstrap和Backbone框架。Nailgun是整個Fuel項目的核心,實現了REST API和部署數據管理,用來管理磁盤卷、配置數據、網絡配置數據,以及其他環境特定的數據。Nailgun使用SQL數據庫存儲數據,使用AMQP服務來與Worker進程進行交互。用戶通過Web UI或 Fuel CLI(命令行界面)與其進行交互。Fuel的CLI比UI提供了更多的操作功能。
Astute是另一個重要的組件,充當Nailgun的Worker進程,具體功能是根據Nailgun提供的指令來執行某些操作。事實上,Astute只是用來封裝各種服務(如Cobbler、Puppet、Shell腳本等)交互的所有細節的一個層,并且為這些服務提供通用的異步接口。Astute 通過 AMQP 與 Nailgun交換數據。
Cobbler目前用作置備服務(Provisioning Service),即基于網絡的操作系統部署服務。
Puppet目前僅是一個部署服務。它負責創建MCollective代理(Agents)來管理其他的配置管理框架,比如Chef和SaltStack等。
MCollective agents用于執行像硬盤清理和網絡連接探查這樣的特定任務。
OSTF(OpenStack Testing Framework,OpenStack測試框架)又稱為Health Check(健康檢查),它是一個獨立的組件,主要用來執行OpenStack安裝后的檢驗工作,主要目標是在盡可能短的時間內進行盡可能多的功能測試。
Fuel部署OpenStack的過程中會有Master Node(主節點)、Discovered Node(發現節點)和Managed Node(托管節點)3種角色的節點出現。主節點是Fuel的主要部分,幾乎全部的服務都在這個節點上運行,整個部署正是從這個節點上發起的,它實際上是一個部署控制器。主節點上成功啟動的Bootstrap系統中有一個Nailgun代理(包含MCollective),該代理負責收集新節點上的硬件信息,通過Nailgun的REST API傳回給主節點,這樣此新節點就變成了一個發現節點。托管節點是 Fuel 已經分配了角色并安裝了系統的節點,發現節點安裝系統完成之后就成為托管節點。
3.RDO
RDO是由Red Hat開發的一款部署OpenStack的工具,同DevStack一樣,支持單節點和多節點部署。但RDO只支持Red Hat/CentOS系列的操作系統。需要注意的是,該項目并不屬于OpenStack官方社區項目。
RDO項目的原理是整合上游的OpenStack版本,然后根據Red Hat的操作系統進行裁剪和定制,幫助用戶進行選擇,讓用戶只需簡單的幾步就能完成OpenStack的部署。RDO是Red Hat Enterprise Linux OpenStack Platform的社區版,作為一款開源的OpenStack部署工具,可以在CentOS、Fedora和Red Hat Enterprise Linux上部署OpenStack,并支持單節點和多節點部署。
對于概念驗證(Proof of Concept,PoC)環境,也就是簡單的測試環境,可以利用RDO的Packstack安裝工具快速部署OpenStack云測試平臺。RDO的Packstack為很多OpenStack學習和開發用戶提供了一種高效、快速搭建環境的方式。這種方式搭建的OpenStack不適合生產環境,通常是在小型環境(比如PC)上快速開發驗證相關特性。
對于生產環境,可以考慮利用 RDO 的 TripleO 產品在裸機上部署生產性云環境。與其他OpenStack 部署工具不同,TripleO 以 OpenStack 本來的云設施為基礎來安裝、升級和運行OpenStack 云,基于 Nova、Neutron、Ironic 和 Heat 自動化部署和管理數據中心級的云。它是一個官方的OpenStack項目,目標是使用一套現成的OpenStack組件在裸金屬物理服務器上部署和管理生產環境的云。
TripleO全稱為“OpenStack On OpenStack”,意思即為“云上云”,可以簡單理解為利用OpenStack來部署 OpenStack,即首先基于 V2P(將虛擬機的鏡像遷移到物理機上)的理念事先準備好一些OpenStack節點(計算、存儲、控制節點)的鏡像,然后利用已有OpenStack環境的裸金屬服務Ironic項目和軟件安裝部分的diskimage-builder去部署裸機,最后通過Heat項目和鏡像內的DevOps工具(Puppet Or Chef)再在裸機上配置運行OpenStack。
通過TripleO,可以從創建一個底層云(Undercloud)開始,如圖1-12所示。底層云是一個部署云(Deployment Cloud),包含用于部署和管理上層云(Overcloud)所需的OpenStack組件。上層云是一個工作負載云(Workload Cloud),作為一個部署解決方案,可以充當任何用途的云,如生產環境、模擬環境和測試環境等。

圖1-12 底層云與上層云
TripleO的架構如圖1-13所示。TripleO利用OpenStack現成的核心組件Nova、Ironic、Neutron、Heat、Glance和Ceilometer在裸機上部署OpenStack。在底層云中使用Nova和Ironic管理基于裸金屬的虛擬機實例,以包括上層云的基礎設施。Neutron提供部署上層云的網絡環境,Glance存儲虛擬機鏡像,Ceilometer收集關于上層云的計量數據。

圖1-13 TripleO的架構
圖1-14進一步展示了底層云部署在一臺物理服務器上和上層云分布在多個物理服務器上的物理視圖。

圖1-14 TripleO的物理視圖
TripleO的應用程序接口(Application Program Interface,API)就是OpenStack本身的API。它們易于維護,文檔完善,提供客戶端庫和命令行工具。用戶了解TripleO的API也就了解了OpenStack。使用OpenStack組件使得TripleO比其他工具的開發更快速,TripleO自動繼承Glance、Heat等的新增特性。TripleO的漏洞修復和安全更新與OpenStack同步。
TripleO的部署至少需3臺裸機,分別用于底層云、上層云控制節點和上層云計算節點。考慮到使用TripleO的門檻較高,RDO提供了一個基于Ansible的項目TripleO Quickstart,為使用TripleO快速創建一個虛擬環境。這樣,用戶就可以在虛擬環境而不是實際的物理機中使用TripleO,不過還是需要一臺物理機作為虛擬機的主機。TripleO Quickstart僅能用于開發和測試,不能用于實際的生產環境。
4.Puppet
Puppet由Ruby語言編寫。應當說,Puppet是進入OpenStack自動化部署中的早期項目,歷史比較悠久。目前,它的活躍開發群體是Red Hat、Mirantis、UnitedStack等。Mirantis出品的Fuel部署工具中,大量的模塊代碼使用的便是Puppet。就國內而言,UnitedStack是Puppet社區貢獻和使用的最大用戶。
Puppet是目前CMS(Content Management System,內容管理系統)領域中的領頭羊,而Puppet Openstack Modules 項目(簡稱 POM)誕生于2012年,2013年進入 OpenStack 官方孵化項目(Stackforge),隨后又成為OpenStack官方項目。POM取得成功的原因主要在于其獲得了大量公司和工程師的參與,甚至有一些主流的部署工具直接集成了POM,如Mirantis的Fuel、Red Hat的Packstack、OpenStack官方的TripleO。
5.Ansible
Ansible是2012年出現的自動化運維工具,已被Red Hat收購。它基于Python開發,集合了眾多運維工具(如 Puppet、Cfengine、Chef、Saltstack 等)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。Ansible一方面總結了Puppet的設計上的得失,另一方面又改進了很多設計。
1.5.4 部署OpenStack的技術需求
學習和部署OpenStack需要掌握以下計算機系統、數據庫和網絡方面的知識。
Linux操作系統的安裝、管理與運維。
SQL數據庫系統的安裝、配置、管理和優化。
計算機虛擬化技術,重點是KVM與Libvirt套件。
網絡設備,包括網橋、交換機、路由器和防火墻。
組網技術,包括DHCP、VLAN和iptables。
存儲技術,包括文件系統、LVM、分布式存儲。
Shell腳本及其編程。
OpenStack是一個龐大的技術生態系統,包括眾多項目和組件,涉及數據中心、運維、高可用、虛擬化技術、存儲、網絡技術等。要想短時間內精通OpenStack的方方面面是不現實的。對于初學者而言,應重點了解OpenStack平臺的實現原理、系統架構和物理部署,熟悉幾個核心項目(如Keystone、Glance、Nova、Neutron、Cinder、Swift等)的功能、架構、組件(子服務)和實現機制,掌握命令行和圖形界面的配置、管理和使用操作,從而為從事OpenStack相關工作(如運維、開發、測試、市場等)打下基礎。本書正是圍繞這些主題來組織內容的。
- .NET Core 2.0 應用程序高級調試:完全掌握Linux、macOS和Windows跨平臺調試技術
- 計算機網絡技術基礎(第2版)
- 計算機網絡技術與應用(第2版)
- 計算機網絡及項目實踐
- 思科軟件定義訪問:實現基于業務意圖的園區網絡
- OpenStack云計算基礎架構平臺技術與應用
- 物聯網及其安全技術解析
- DIV+CSS網頁布局實用教程
- Nutanix超融合基礎架構權威指南
- 云原生:運用容器、函數計算和數據構建下一代應用
- 中文版Dreamweaver CS6基礎培訓教程(第2版)
- Axure RP8實戰手冊:網站和APP原型制作案例精粹
- Quarkus云原生微服務開發實戰
- 科技文獻信息檢索與利用
- RocketMQ分布式消息中間件:核心原理與最佳實踐