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