OpenStack 學(xué)習(xí)有哪些難點?需要哪些知識儲備?
很多人都反饋學(xué)習(xí)OpenStack困難重重,本文作者也經(jīng)歷了從部署到運維OpenStack的一路艱辛,為此,作者將自己學(xué)習(xí)OpenStack中的難點和關(guān)注點與讀者分享,介紹了OpenStack要著重學(xué)習(xí)的重點領(lǐng)域和知識,希望對大家有所幫助。
前言
隨著云計算技術(shù)的發(fā)展,技術(shù)的不斷成熟,越來越多的企業(yè)開始在公司內(nèi)部部署私有云計算平臺。處于成本考慮,開源的云計算管理平臺OpenStack也正在被更多的技術(shù)人員所學(xué)習(xí)及部署。云計算雖然具備很多好處,比如靈活性、伸縮性和按需分配等特性,但是在部署上卻需要一個對開源研究頗深的團隊來進行部署和管理。OpenStack組件眾多,部署較為困難,出了問題,排錯較難。由于其每半年更新一次版本,較為頻繁。企業(yè)不太可能每半年就更新一次云平臺版本,所以會造成版本間隙過大。
圖片來自包圖網(wǎng)
雖然其發(fā)展勢頭強勁,但是無可避免的問題就是部署OpenStack需要較為資深的開源技術(shù)能力和團隊。學(xué)習(xí)OpenStack和掌握OpenStack中的難點也就成為了IT技術(shù)人員較為關(guān)心的話題了。
概念回顧
為了讓讀者更好的學(xué)習(xí)OpenStack,我們簡單的回顧一下它的基本概念。OpenStack是一個開源的具有高可用性及擴展性的云計算平臺。支持管理大部分主流的hypervisors,如KVM,Xen Server,VMware,Oracle VM,Xen等。 同時OpenStack是一個開源云計算解決方案??梢约铀俑呱炜s性的公共和私有云(IaaS)的部署、管理、配置。使用OpenStack作為基礎(chǔ),數(shù)據(jù)中心操作者可以快速方便的通過現(xiàn)存基礎(chǔ)架構(gòu)創(chuàng)建云服務(wù)。讓IT管理人員使用計算資源像使用電力水利那樣,按需隨時獲得,并對使用量進行付費,完全顛覆了傳統(tǒng)數(shù)據(jù)中心建設(shè)和運維模式。通過上面的簡單介紹,我們知道OpenStack可以建立私有云、公有云以及混合云,是一個提供IAAS層服務(wù)的基礎(chǔ)設(shè)施云計算管理平臺。OpenStack本身是由多個功能組件組成,來共同完成以上功能。由于OpenStack處于社區(qū)維護,各個組件功能也在各大企業(yè)和社區(qū)的支持下不斷的完善,新的功能組件也在不斷的涌現(xiàn)。目前OpenStack常用的組件主要有以下幾類:
認(rèn)證模塊(Keystone)
代號為Keystone,在OpenStack框架中主要負(fù)責(zé)管理身份驗證、服務(wù)規(guī)則和服務(wù)令牌功能的模塊。用戶訪問資源需要驗證用戶的身份與權(quán)限,服務(wù)執(zhí)行操作也需要進行權(quán)限檢測,這些都需要通過 Keystone 來處理。Keystone類似一個服務(wù)總線, 或者說是整個OpenStack框架的注冊表, 其他服務(wù)通過keystone來注冊其服務(wù)的Endpoint(服務(wù)訪問的URL),任何服務(wù)之間相互的調(diào)用, 需要經(jīng)過Keystone的身份驗證, 來獲得目標(biāo)服務(wù)的Endpoint來找到目標(biāo)服務(wù)。
計算模塊(Nova)
代號為Nova,主要負(fù)責(zé)管理計算資源、網(wǎng)絡(luò)資源、存儲資源等可擴展性的平臺,是OpenStack中的計算資源控制模塊。Nova自身并沒有提供任何虛擬化能力,需要通過相關(guān)受支持的驅(qū)動與各種Hypervisors交互,比如KVM、Power VM、VMware等。
鏡像模塊(Glance)
代號為Glance,主要負(fù)責(zé)管理OpenStack鏡像服務(wù),用來注冊、登陸和檢索虛擬機鏡像。服務(wù)提供了一個REST API,能夠查詢虛擬機鏡像元數(shù)據(jù)和檢索的實際鏡像。通過鏡像服務(wù)提供的虛擬機鏡像可以存儲在不同的位置,從簡單的文件系統(tǒng)對象存儲到類似OpenStack對象存儲系統(tǒng)。
Dashboard模塊(Horizon)
代號為Horizon,是OpenStack的Dashboard,提供了一個基于web圖形的用戶操作界面,大多數(shù)針對對象的操作都可以通過其來完成。通過此界面,管理員可以較快的上手OpenStack,執(zhí)行常規(guī)的操作。
塊存儲模塊(Cinder)
代號為Cinder,主要負(fù)責(zé)OpenStack中塊存儲的管理。為VM提供持久化的存儲服務(wù)。在F版之后,從Nova-volume中分離出來,立項名為Cinder,獨立提供塊存儲服務(wù)。
網(wǎng)絡(luò)模塊(Neutron)
代號為Neutron,主要負(fù)責(zé)OpenStack中的網(wǎng)絡(luò)管理,也是所有組件中最為復(fù)雜的模塊。它管理OpenStack中的所有虛擬網(wǎng)絡(luò)和物理網(wǎng)絡(luò)接入與轉(zhuǎn)發(fā)行為,提供防火墻及隔離等方面的高級網(wǎng)絡(luò)管理能力。
對象存儲模塊(Swift)
代號為Swift,是OpenStack中提供的一個對象存儲系統(tǒng),也是所有組件內(nèi)名氣相對較小的一個,為什么會這樣呢,估計是因為采用Restful Http接口,主要為互聯(lián)網(wǎng)提供服務(wù)的原因吧,還沒有大規(guī)模的被眾多的企業(yè)所接受。
學(xué)習(xí)難點
很多人都反饋學(xué)習(xí)OpenStack困難重重,部署過程中,“坑”不是一般的多,實在是繁瑣。而且出了問題還需要很強的排查錯誤的能力,對Linux自身的技能要求頗高。由于OpenStack是開源產(chǎn)品,企業(yè)可以根據(jù)自身實際需求進行定制化,所以也要求技術(shù)人員具備編程基礎(chǔ),有助于環(huán)境的搭建和后期的運維。前面已經(jīng)談過,網(wǎng)絡(luò)模塊應(yīng)該算是OpenStack中最為復(fù)雜的模塊了,結(jié)構(gòu)復(fù)雜,概念較多,沒有一定的網(wǎng)絡(luò)基礎(chǔ)還真不能玩轉(zhuǎn)OpenStack。
我本身從事OpenStack工作雖然不是太久,但是也經(jīng)歷了從部署到運維OpenStack的一路艱辛。學(xué)習(xí)的過程中,更是從一個坑跳到了另一個坑,感覺就從沒有上岸過。大家都知道OpenStack就是一整套云計算的解決方案的框架,里面集合了包括存儲、計算、網(wǎng)絡(luò)、Web、數(shù)據(jù)庫等多種技術(shù),這種方式即保證了服務(wù)的靈活性,能夠適應(yīng)不同的應(yīng)用場景,同時也加大了學(xué)習(xí)的難度。借著TWT的優(yōu)秀平臺,將自己學(xué)習(xí)OpenStack中的難點和關(guān)注點與各位分享,希望可以對大家有幫助,同時讓自己學(xué)習(xí)更多。
1、自動化知識的儲備
要想學(xué)習(xí)好OpenStack就必須具備自動化腳本或者簡單開發(fā)的知識。眾所周知OpenStack的部署和運維過程中,需要用到很多的開源技術(shù)支持。比如高可用方面需要用到keepalived、pacemaker、HAproxy等軟件。運維中需要用到puppet、ansible或者saltstack等軟件。OpenStack的部署很復(fù)雜,如果手動部署那絕對是災(zāi)難的,而且也容易出錯。所以一般都會采用自動化部署腳本方式進行自動部署,減少人為的干預(yù),降低錯誤率。在這方面,建議搭建可以主要學(xué)習(xí)一下python和bash shell,畢竟OpenStack很多代碼是用python所寫。在業(yè)余時間【一天一次】,建議多閱讀一下OpenStack的源碼,不懂不要緊,邊學(xué)邊讀,這樣有助于后期的知識消化和理解。
2、數(shù)據(jù)庫知識的儲備
OpenStack中除了Dashboard意外,其他的組件都需要數(shù)據(jù)庫的支持。無論是MySQL還是MariaDB,或者其他數(shù)據(jù)庫。很多情況下,用戶通過界面對OpenStack進行操作,如果出現(xiàn)需要修改數(shù)據(jù)庫的問題,就必須要具備數(shù)據(jù)庫的排錯能力了,至少具備熟練的操作能力。舉個例子,有個時候我們在界面上發(fā)出刪除主機的指令,但是由于某種情況不能被成功操作。這時候就需要在后臺的Nova數(shù)據(jù)庫中找到相關(guān)的記錄,將其通過update語句改為已刪除,避免統(tǒng)計錯誤。當(dāng)然這只是一個普通的實例,以后大家在學(xué)習(xí)OpenStack的路上估計會經(jīng)常與數(shù)據(jù)庫打交道,不要嫌煩,要建立開源理念。
3、網(wǎng)絡(luò)知識的儲備
OpenStack中最為復(fù)雜、惱人等組件就是網(wǎng)絡(luò)模塊【Neutron】了。不夸張的說,你如果跨過了網(wǎng)絡(luò)模塊這個大坑,你就算是學(xué)會了OpenStack的60%了。很多人都在OpenStack的學(xué)習(xí)道路上,折在網(wǎng)絡(luò)大坑的不在少數(shù)。從網(wǎng)絡(luò)的物理設(shè)備到網(wǎng)絡(luò)的邏輯配置,甚至架構(gòu)都要熟悉。比如要知道簡單的VLAN、Flat、DHCP、Bridge(Linux bridge或者ovs)、NAT以路由,甚至是SDN等技術(shù)。OpenStack中關(guān)于網(wǎng)絡(luò)的指令很多,功能異常復(fù)雜。要學(xué)會常用的一些指令,比如neutron net-list用于查看當(dāng)前租戶的所有網(wǎng)絡(luò)信息,加上—all-tenant就可以list出所有的。Neutron net-show NETID查看某個網(wǎng)絡(luò)的詳細(xì)信息。Neutron net-create創(chuàng)建網(wǎng)絡(luò),net-delete刪除玩了過等等。更多的指令,建議大家去OpenStack官網(wǎng)看一下。
4、存儲知識的儲備
OpenStack經(jīng)過近10年的發(fā)展已經(jīng)對業(yè)界常用的存儲類型進行了支持。無論是NFS、SAN還是local方式。從功能上Open Stack常用的存儲有Swift對象存儲,類似于AWS的S3服務(wù),不過Swift具備更強的擴展性、冗余和持久性,當(dāng)然了,也兼容S3 API。Cinder塊存儲,提供類似于AWS的EBS塊存儲服務(wù),可以通過界面操作掛載到虛擬機上,提供持久化的數(shù)據(jù)存儲。存儲知識的存儲有利于我們合理的規(guī)劃OpenStack的存儲用途。分布式存儲已經(jīng)占據(jù)了OpenStack的大部分市場,比如Ceph、GPFS等。熟悉哪些存儲的配置和備份技能,來從側(cè)面保障OpenStack存儲方面的穩(wěn)定和數(shù)據(jù)可靠。
5、虛擬化知識的儲備
OpenStack支持KVM、Hyper-V、VMWare、Xen、Docker等主流虛擬化技術(shù)??梢钥吹?,OpenStack主要是利用Libvirt進行的虛擬機操作,但是也支持直接調(diào)用原生的API進行操作。要理解虛擬化的功能是什么?Hypervisor可以對下層(Host OS)硬件資源(物理CPU、內(nèi)存、磁盤、網(wǎng)卡、顯卡等)進行封裝、隔離,抽象為另一種形式的邏輯資源,再提供給上層(Guest OS)使用。所以你可以理解Hypervisor其實就是聯(lián)系Host OS和Guest OS的一個中間件,當(dāng)然虛擬化可以將一份資源抽象為多份,也可以將多份資源抽象為一份。
典型場景解析
場景一、安裝OpenStack之前的基礎(chǔ)環(huán)境準(zhǔn)備
OpenStack是一個開源的架構(gòu)平臺,需要較多的開源軟件進行輔助支撐。所以在安裝OpenStack之前要提前做好以下準(zhǔn)備工作:
1、 下載好相關(guān)的開源軟件,或者搭建解決依賴關(guān)系的YUM本地源。依據(jù)個人經(jīng)驗,建議大家提前準(zhǔn)備YUM源,便于順利安裝開源軟件,無需人工參與。
2、 DNS上提前注冊好相關(guān)管理節(jié)點的FQDN名
3、 確保網(wǎng)絡(luò)環(huán)境暢通,通過網(wǎng)絡(luò)隔離出管理VLAN和虛擬機VLAN
4、 提前準(zhǔn)備群集IP
5、 系統(tǒng)環(huán)境準(zhǔn)備,比如關(guān)閉防火墻及Selinux功能
場景二、自動化配置工具的準(zhǔn)備
目前部署OpenStack都是采用自動化的方式部署,簡單不易出錯,比如Mirantis的Fuel工具,或者其他IT廠商自研的工具。但是后期具體的配置變更,就要需要使用方根據(jù)自身習(xí)慣自行決定了。我們采用的是Salt Stack作為批量配置工具。
1、 在一個獨立虛擬機中安裝Salt Stack主控節(jié)點
2、 所有的管理及計算節(jié)點安裝Salt Stack客戶端
3、 配置客戶端Salt Stack配置文件,指向主控服務(wù)器
4、 通過Salt ‘’ –A命令接受所有客戶端管理
5、 發(fā)布Salt ‘’ test.ping確定環(huán)境正常
場景三、OpenStack的聯(lián)調(diào)測試
安裝好OpenStack之后,需要驗證其環(huán)境是否可以正常工作。一般可以通過以下步驟逐級查看。
1、 查看所有組件的日志,查看是否有錯誤信息
2、 登陸Dashboard,對所有組件進行瀏覽
3、 創(chuàng)建一臺虛擬機,并針對虛擬機執(zhí)行各種常規(guī)操作,如刪除、修改配置、冷熱遷移等
4、 物理將某臺計算節(jié)點down掉,查看是否可以在另外的節(jié)點啟動VM(如果做了高可用的話)
5、 所有計算節(jié)點之間模擬傳輸大文件
總結(jié)
以上是對OpenStack學(xué)習(xí)中的關(guān)注點的說明,指出了OpenStack要著重學(xué)習(xí)的重點領(lǐng)域和知識。通過以上的介紹,讀者可以認(rèn)識到OpenStack的由來和功能,部署需要做哪些準(zhǔn)備,最常見的疑難問題發(fā)生在哪個部分。當(dāng)然我自己也在學(xué)習(xí)OpenStack的路上,也是按照這個思路來學(xué)習(xí)。遇到問題也會經(jīng)常在TWT尋找大咖的支持和解答。大家可以多瀏覽TWT和OpenStack官方網(wǎng)站,學(xué)習(xí)新的知識點,解決更多的難點。再次希望這篇文章可以對大家在學(xué)習(xí)OpenStack的道路上有所幫助。
作者:張志強,多年的云計算、虛擬化架構(gòu)設(shè)計、企業(yè)信息化建設(shè)、自動化運維經(jīng)驗。熟練掌握X86、Power、存儲、虛擬化等硬件設(shè)備調(diào)優(yōu)與配置。擁有豐富的混合元架構(gòu)及管理經(jīng)驗,信息安全及網(wǎng)絡(luò)架構(gòu)的設(shè)計與運維。