Openstack基礎(chǔ)知識介紹_第1頁
Openstack基礎(chǔ)知識介紹_第2頁
Openstack基礎(chǔ)知識介紹_第3頁
Openstack基礎(chǔ)知識介紹_第4頁
Openstack基礎(chǔ)知識介紹_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Openstack基礎(chǔ)知識介紹OpenStack概念架構(gòu)Horizon(Dashboard)與其他主要模塊的關(guān)聯(lián)(包括Nova,Cinder,Glance,Swift,Neutron,keystone)通過Ceilometer(監(jiān)控功能)可以監(jiān)控的模塊(包括Nova,Glance,Cinder,Neutron)Keystone(身份驗證功能)模塊可以對其他模塊進行相應(yīng)操作進行身份及權(quán)限驗證(包括Nova,Glance,Cinder,Swift,Neutron,Ceilometer)VMNova為VM提供計算資源Glance為VM提供鏡像Cinder為VM提供塊存儲資源Neutron為VM提供網(wǎng)

2、絡(luò)資源及網(wǎng)絡(luò)連接Cinder連接VM后所產(chǎn)生的數(shù)據(jù)可以備份到Swift對象存儲中Glance提供鏡像可以保存在Switf對象存儲中OpenStack核心系統(tǒng)架構(gòu)圖HorizonKeystoneNovaGlanceCinderSwiftNeutronOpenStack 最簡物理架構(gòu)2個節(jié)點:Cloud Controller Node:Keystone(身份驗證服務(wù))Glance(鏡像管理服務(wù))Nova (計算資源管理服務(wù))數(shù)據(jù)庫服務(wù)(MySQL)消息服務(wù)(RabbitMQ或QPid)Compute Node:Nova-ComputeNova-NetworkKVM虛擬化系統(tǒng)2種網(wǎng)絡(luò):Interna

3、l Network(內(nèi)部網(wǎng)絡(luò))用于提供Provider網(wǎng)絡(luò)(VM to Provider)用于tenant網(wǎng)絡(luò)(VM to VM)External Network(外部網(wǎng)絡(luò))用于外部用戶與VM通信及控制(VM to Internet)OpenStack主要邏輯模塊Horizon Dashboard服務(wù)在整個Openstack應(yīng)用體系框架中,Horizon就是整個應(yīng)用的入口。它提供了一個模塊化的,基于web的圖形化界面服務(wù)門戶。用戶可以通過瀏覽器使用這個Web圖形化界面來訪問、控制他們的計算、存儲和網(wǎng)絡(luò)資源,如啟動實例、分配IP地址、設(shè)置訪問控制等。基于Django框架實現(xiàn)OpenStack主要

4、邏輯模塊Horizon 兩種功能界面Horizon為以下兩種角色的用戶提供了不同的功能及使用界面:云管理員: 提供一個整體視圖,可以總覽整個云的資源規(guī)模及運行狀況.可以創(chuàng)建終端用戶和項目,想終端用戶分配項目并進行項目可使用的資源配額管理。終端用戶(云用戶): 提供了一個自助服務(wù)門戶,可以在由云管理分配的項目中,在不超過配額限制的范圍內(nèi),自由的操作、使用和分配資源。云管理員云用戶OpenStack主要邏輯模塊Keystone身份驗證服務(wù)Keystone作為Openstack的核心模塊,為Nova(計算),Glance(鏡像),Swift(對象存儲),Cinder(塊存儲),Neutron(網(wǎng)絡(luò))

5、以及Horizon(Dashboard)提供認(rèn)證服務(wù)Keystone基本概念介紹之一User User即用戶,他們代表可以通過keystone進行訪問的人或程序。Users通過認(rèn)證信息(credentials,如密碼、API Keys等)進行驗證。 Tenant Tenant即租戶,它是各個服務(wù)中的一些可以訪問的資源集合。例如,在Nova中一個tenant可以是一些機器,在Swift和Glance中一個tenant可以是一些鏡像存儲,在Neutron中一個tenant可以是一些網(wǎng)絡(luò)資源。Users默認(rèn)的總是綁定到某些tenant上。 Role Role即角色,Roles代表一組用戶可以訪問的資

6、源權(quán)限,例如Nova中的虛擬機、Glance中的鏡像。Users可以被添加到任意一個全局的或租戶的角色中。在全局的role中,用戶的role權(quán)限作用于所有的租戶,即可以對所有的租戶執(zhí)行role規(guī)定的權(quán)限;在租戶內(nèi)的role中,用戶僅能在當(dāng)前租戶內(nèi)執(zhí)行role規(guī)定的權(quán)限。 Service Service即服務(wù),如Nova、Glance、Swift。根據(jù)前三個概念(User,Tenant和Role)一個服務(wù)可以確認(rèn)當(dāng)前用戶是否具有訪問其資源的權(quán)限。但是當(dāng)一個user嘗試著訪問其租戶內(nèi)的service時,他必須知道這個service是否存在以及如何訪問這個service,這里通常使用一些不同的名稱表

7、示不同的服務(wù)。Keystone基本概念介紹之二Endpoint Endpoint,翻譯為“端點”,我們可以理解它是一個服務(wù)暴露出來的訪問點,如果需要訪問一個服務(wù),則必須知道他的endpoint。因此,在keystone中包含一個endpoint模板,這個模板提供了所有存在的服務(wù)endpoints信息。一個endpoint template包含一個URLs列表,列表中的每個URL都對應(yīng)一個服務(wù)實例的訪問地址,并且具有public、private和admin這三種權(quán)限。public url可以被全局訪問(如),private url只能被局域網(wǎng)訪問(如http:/compute.example.l

8、ocal),admin url被從常規(guī)的訪問中分離。Token Token是訪問資源的鑰匙。它是通過Keystone驗證后的返回值,在之后的與其他服務(wù)交互中只需要攜帶Token值即可。每個Token都有一個有效期,Token只在有效期內(nèi)是有效的。各種概念之間關(guān)系解釋1、租戶下,管理著一堆用戶(人,或程序)。2、每個用戶都有自己的credentials(憑證)用戶名+密碼或者用戶名+API key,或其他憑證。3、用戶在訪問其他資源(計算、存儲)之前,需要用自己的credential去請求keystone服務(wù),獲得驗證信息(主要是Token信息)和服務(wù)信息(服務(wù)目錄和它們的endpoint)。4

9、、用戶拿著Token信息,就可以去訪問特點的資源了。Keystone在OpenStack中的訪問流程范例 計算管理(codenamed“Nova”) 基于用戶需求為VM提供計算資源管理.基于Python語言編寫。Nova-API:對外統(tǒng)一提供標(biāo)準(zhǔn)化接口.接受和響應(yīng)最終用戶Compute API的請求,同時還實現(xiàn)與Openstack其他各邏輯模塊的通訊與服務(wù)提供Nova-Scheduler:從隊列上得到一個虛擬機實例請求并且決定它應(yīng)該在哪里運行(使用多種過濾器或算法調(diào)度)Queue:提供了一個守護進程之間傳遞消息的中央樞紐。消息隊列系統(tǒng)作用還可以實現(xiàn)與Openstack其他各邏輯模塊之間的通信建

10、立連接樞紐Nova-Database:存儲云基礎(chǔ)設(shè)施的編譯時和運行時的狀態(tài),從理論上講,OpenStack Nova可以支持任何SQL-Alchemy支持的數(shù)據(jù)庫,但是目前被廣泛使用的數(shù)據(jù)庫有sqlite3(只適用于測試和開發(fā)工作),MySQL和PostgreSQL。Nova-Compute:主要是一個人工守護進程,它可以通過虛擬機管理程序的API(XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware等)來創(chuàng)建和終止虛擬機實例。支持多種虛擬化平臺Nova還提供控制臺的服務(wù),讓最終用戶通過代理服務(wù)器訪問他們

11、的虛擬實例的控制臺。這涉及到多個守護進程(nova-console,nova-novncproxy、nova-xvpnvncproxy和nova-consoleauth)OpenStack主要邏輯模塊- NovaNova的架構(gòu)Nova處理過程請求一個虛擬機實例過程Nova支持的虛擬化平臺Openstack支持的虛擬化技術(shù)KVMLXCQEMUUMLvSphereXen/admin-guide-cloud/content/section_hypervisors.htmlNova支持的調(diào)度器和過濾器Nova支持的調(diào)度器SimpleScheduler簡單調(diào)度器FilterScheduler過濾調(diào)度器M

12、ultiScheduler多重調(diào)度器ChanceScheduler隨機調(diào)度器Nova支持的過濾器ImagePropertiesFilterAvailabilityZoneFilterComputeFilterCoreFilterAll HostFilterDifferentHostFilterIsolateHostFilterRamFilterSimpleCIDRAffinityFilterSameHostFilter塊存儲管理模塊(codenamed“Cinder”) 提供到虛擬機的永久性塊存儲卷.類似AWS的EBS塊存儲服務(wù)多個卷可以被掛載到單一虛擬機實例,同時卷可以在虛擬機實例間移動,單

13、個卷在同一時刻只能被掛載到一個虛擬機實例塊存儲系統(tǒng)管理塊設(shè)備到虛擬機的創(chuàng)建,掛載以及卸載.塊設(shè)備卷完全與Openstack Compute集成,并支持云用戶在Dashboard中管理數(shù)據(jù)自己的存儲.除了支持簡單的Linux服務(wù)器本地存儲之外,還支持眾多的存儲平臺,包括 Ceph, NetApp, Nexenta, SolidFire, Zadara.快照管理提供了強大的在塊存儲上實現(xiàn)數(shù)據(jù)備份的功能可以用來作為引導(dǎo)卷使用塊存儲適合性能敏感性業(yè)務(wù)場景,例如數(shù)據(jù)庫存儲 大規(guī)??蓴U展的文件系統(tǒng)或服務(wù)器需要訪問到塊級裸設(shè)備存儲.OpenStack主要邏輯模塊- 塊存儲CinderCinder的架構(gòu)Cin

14、der架構(gòu)解釋API Service:負(fù)責(zé)接受和處理 Rest 請求,并將請求放入RabbitMQ對列。Scheduler Service: 處理任務(wù)隊列的任務(wù),并根據(jù)預(yù)定策略選擇合適的 Volume Service 節(jié)點來執(zhí)行任務(wù)。目前版本的 Cinder 僅僅提供了一個 Simple Scheduler, 該調(diào)度器選擇卷數(shù)量最少的一個活躍節(jié)點來創(chuàng)建卷。Volume Service: 該服務(wù)運行在存儲節(jié)點上,管理存儲空間。每個存儲節(jié)點都有一個 Volume Service,若干個這樣的存儲節(jié)點聯(lián)合起來可以構(gòu)成一個存儲資源池。為了支持不同類型和型號的存儲,均通過Drivers的形式為Cinde

15、r的 Volume Service 提供相應(yīng)的Cinder-Volume。Cinder目前支持的存儲類型本地存儲:LVM, Sheepdog網(wǎng)絡(luò)存儲:NFS, RBD(Ceph)HP:3PAR (iSCSI/FC),LeftHand (iSCSI)IBM:Storwize family/SVC (iSCSI/FC),XIV (iSCSI), GPFS,zVMNetapp:NetApp(iSCSI/NFS)EMC:VMAX/VNX(iSCSI),Isilon(iSCSI)Solidfire: Solidfire cluster(iSCSI)Cinder補充Cinder主要核心是對卷的管理,允許對

16、卷、卷的類型、卷的快照進行處理。它并沒有實現(xiàn)對塊設(shè)備的管理和實際服務(wù),而是為后端不同的存儲結(jié)構(gòu)提供了統(tǒng)一的接口,不同的塊設(shè)備服務(wù)廠商在 Cinder 中實現(xiàn)其驅(qū)動支持以與 OpenStack 進行整合。在CinderSupportMatrix中可以看到眾多存儲廠商如 HP、NetAPP、IBM、SolidFire、EMC 和眾多開源塊存儲系統(tǒng)對 Cinder 的支持。Havana 版本中 Cinder 新增特性如下:Volume-Resize:在可用情況下調(diào)整卷大小。Volume-Backup-To-Ceph:現(xiàn)在卷可以備份到 Ceph 集群中。Volume-Migration:現(xiàn)在不同用戶間

17、可以透明地轉(zhuǎn)移和交換卷。QoS:增加限速相關(guān)的元信息供 Nova 和其 Hypervisor 使用。More-Drivers:更多的存儲廠商加入和完善了自己的 Cinder 驅(qū)動。Cinder如何支持典型存儲1.本地存儲對于本地存儲,cinder-volume 可以使用 LVM 驅(qū)動,該驅(qū)動當(dāng)前的實現(xiàn)需要在主機上事先用 LVM 命令創(chuàng)建一個 cinder-volumes 的卷組 , 當(dāng)該主機接受到創(chuàng)建卷請求的時候,cinder-volume 在該卷組 上創(chuàng)建一個邏輯卷, 并且用 openiscsi 將這個卷當(dāng)作一個 iscsi tgt 給輸出.當(dāng)然還可以將若干主機的本地存儲用 sheepdog

18、 虛擬成一個共享存儲,然后使用 sheepdog 驅(qū)動。2.HP塊存儲HP存儲系統(tǒng)對于的Cinder的支持/wiki/CinderSupportMatrixCinderSupportMatrixOpenStack Block Storage (aka Cinder) DriversOpenStack主要邏輯模塊- 對象存儲Swift分布式對象存儲系統(tǒng),類似于AWS的S3通過采用基于標(biāo)準(zhǔn)化服務(wù)器的集群架構(gòu)提供冗余,可擴展的對象存儲具有良好的擴展性,可以實現(xiàn)PB級別數(shù)據(jù)的存儲支持存儲對象寫入的多份拷貝,并且支持當(dāng)拷貝丟失后的自我修復(fù)功能.確保數(shù)據(jù)的一致性提供每GB高性價比的極佳的可用性和數(shù)據(jù)耐久性

19、支持原生的 OpenStack API 以及S3 compatible API對象存儲Swift數(shù)據(jù)模型Swift 采用層次數(shù)據(jù)模型,共設(shè)三層邏輯結(jié)構(gòu):Account/Container/Object(即賬戶/容器/對象),每層節(jié)點數(shù)均沒有限制,可以任意擴展。數(shù)據(jù)存儲基于NWR理論類似文件存儲過程:Touch fileA在對應(yīng)的磁盤塊組中對應(yīng)的元數(shù)據(jù)區(qū)域產(chǎn)生對應(yīng)的inode,基于這個inode存儲數(shù)據(jù)到數(shù)據(jù)區(qū)中對應(yīng)的塊組中的blockAccount對應(yīng)租戶,用于隔離Container對應(yīng)某個租戶數(shù)據(jù)的存儲區(qū)域Object對應(yīng)存儲區(qū)域中具體的block對象存儲Swift系統(tǒng)架構(gòu)Swift 采用完

20、全對稱、面向資源的分布式系統(tǒng)架構(gòu)設(shè)計所有組件都可擴展,避免因單點失效而擴散并影響整個系統(tǒng)運轉(zhuǎn)通信方式采用非阻塞式 I/O 模式,提高了系統(tǒng)吞吐和響應(yīng)能力對象存儲Swift系統(tǒng)組件代理服務(wù)(Proxy Server):對外提供對象服務(wù) API,會根據(jù)環(huán)的信息來查找服務(wù)地址并轉(zhuǎn)發(fā)用戶請求至相應(yīng)的賬戶、容器或者對象服務(wù);由于采用無狀態(tài)的 REST 請求協(xié)議,可以進行橫向擴展來均衡負(fù)載。認(rèn)證服務(wù)(Authentication Server):驗證訪問用戶的身份信息,并獲得一個對象訪問令牌(Token),在一定的時間內(nèi)會一直有效;驗證訪問令牌的有效性并緩存下來直至過期時間。緩存服務(wù)(Cache Serv

21、er):緩存的內(nèi)容包括對象服務(wù)令牌,賬戶和容器的存在信息,但不會緩存對象本身的數(shù)據(jù);緩存服務(wù)可采用 Memcached 集群,Swift 會使用一致性散列算法來分配緩存地址。賬戶服務(wù)(Account Server):提供賬戶元數(shù)據(jù)和統(tǒng)計信息,并維護所含容器列表的服務(wù),每個賬戶的信息被存儲在一個 SQLite 數(shù)據(jù)庫中。容器服務(wù)(Container Server):提供容器元數(shù)據(jù)和統(tǒng)計信息,并維護所含對象列表的服務(wù),每個容器的信息也存儲在一個 SQLite 數(shù)據(jù)庫中。對象服務(wù)(Object Server):提供對象元數(shù)據(jù)和內(nèi)容服務(wù),每個對象的內(nèi)容會以文件的形式存儲在文件系統(tǒng)中,元數(shù)據(jù)會作為文件屬

22、性來存儲,建議采用支持?jǐn)U展屬性的 XFS 文件系統(tǒng)。復(fù)制服務(wù)(Replicator):會檢測本地分區(qū)副本和遠(yuǎn)程副本是否一致,具體是通過對比散列文件和高級水印來完成,發(fā)現(xiàn)不一致時會采用推式(Push)更新遠(yuǎn)程副本,例如對象復(fù)制服務(wù)會使用遠(yuǎn)程文件拷貝工具 rsync 來同步;另外一個任務(wù)是確保被標(biāo)記刪除的對象從文件系統(tǒng)中移除。更新服務(wù)(Updater):當(dāng)對象由于高負(fù)載的原因而無法立即更新時,任務(wù)將會被序列化到在本地文件系統(tǒng)中進行排隊,以便服務(wù)恢復(fù)后進行異步更新;例如成功創(chuàng)建對象后容器服務(wù)器沒有及時更新對象列表,這個時候容器的更新操作就會進入排隊中,更新服務(wù)會在系統(tǒng)恢復(fù)正常后掃描隊列并進行相應(yīng)的更

23、新處理。審計服務(wù)(Auditor):檢查對象,容器和賬戶的完整性,如果發(fā)現(xiàn)比特級的錯誤,文件將被隔離,并復(fù)制其他的副本以覆蓋本地?fù)p壞的副本;其他類型的錯誤會被記錄到日志中。賬戶清理服務(wù)(Account Reaper):移除被標(biāo)記為刪除的賬戶,刪除其所包含的所有容器和對象。對象存儲Swift系統(tǒng)支持的操作Swift RESTful API 總結(jié)資源類型URLGETPUTPOSTDELETEHEAD賬戶/account/獲取容器列表-獲取賬戶元數(shù)據(jù)容器/account/container獲取對象列表創(chuàng)建容器更新容器元數(shù)據(jù)刪除容器獲取容器元數(shù)據(jù)對象/account/container/object獲

24、取對象內(nèi)容和元數(shù)據(jù)創(chuàng)建、更新或拷貝對象更新對象元數(shù)據(jù)刪除對象獲取對象元數(shù)據(jù)對象存儲Swift補充對象存儲Swift補充對象存儲Swift補充 SINA的經(jīng)驗主要組件Proxy ServerProxy Server是提供Swift API的服務(wù)器進程,負(fù)責(zé)Swift其余組件間的相互通信。對于每個客戶端的請求,它將在Ring中查詢Account、Container或Object的位置,并且相應(yīng)地轉(zhuǎn)發(fā)請求。Proxy提供了Rest-full API,并且符合標(biāo)準(zhǔn)的HTTP協(xié)議規(guī)范,這使得開發(fā)者可以快捷構(gòu)建定制的Client與Swift交互。Storage ServerStorage Server提供

25、了磁盤設(shè)備上的存儲服務(wù)。在Swift中有三類存儲服務(wù)器:Account、Container和Object。其中Container服務(wù)器負(fù)責(zé)處理Object的列表,Container服務(wù)器并不知道對象存放位置,只知道指定Container里存的哪些Object。這些Object信息以sqlite數(shù)據(jù)庫文件的形式存儲。Container服務(wù)器也做一些跟蹤統(tǒng)計,例如Object的總數(shù)、Container的使用情況。Consistency Servers在磁盤上存儲數(shù)據(jù)并向外提供Rest-ful API并不是難以解決的問題,最主要的問題在于故障處理。Swift的Consistency Servers的

26、目的是查找并解決由數(shù)據(jù)損壞和硬件故障引起的錯誤。主要存在三個Server:Auditor、Updater和Replicator。 Auditor運行在每個Swift服務(wù)器的后臺持續(xù)地掃描磁盤來檢測對象、Container和賬號的完整性。如果發(fā)現(xiàn)數(shù)據(jù)損壞,Auditor就會將該文件移動到隔離區(qū)域,然后由Replicator負(fù)責(zé)用一個完好的拷貝來替代該數(shù)據(jù)。圖2給出了隔離對象的處理流圖。 在系統(tǒng)高負(fù)荷或者發(fā)生故障的情況下,Container或賬號中的數(shù)據(jù)不會被立即更新。如果更新失敗,該次更新在本地文件系統(tǒng)上會被加入隊列,然后Updaters會繼續(xù)處理這些失敗了的更新工作,其中由Account Up

27、dater和Container Updater分別負(fù)責(zé)Account和Object列表的更新。 Replicator的功能是處理數(shù)據(jù)的存放位置是否正確并且保持?jǐn)?shù)據(jù)的合理拷貝數(shù),它的設(shè)計目的是Swift服務(wù)器在面臨如網(wǎng)絡(luò)中斷或者驅(qū)動器故障等臨時性故障情況時可以保持系統(tǒng)的一致性。Swift主要有三個組成部分:Proxy Server、Storage Server和Consistency Server。其架構(gòu)如圖1所示,其中Storage和Consistency服務(wù)均允許在Storage Node上。Auth認(rèn)證服務(wù)目前已從Swift中剝離出來,使用OpenStack的認(rèn)證服務(wù)Keystone,目的

28、在于實現(xiàn)統(tǒng)一OpenStack各個項目間的認(rèn)證管理對象存儲Swift補充 SINA的經(jīng)驗RingRing是Swift最重要的組件,用于記錄存儲對象與物理位置間的映射關(guān)系。在涉及查詢Account、Container、Object信息時,就需要查詢集群的Ring信息。 Ring使用Zone、Device、Partition和Replica來維護這些映射信息。Ring中每個Partition在集群中都(默認(rèn))有3個Replica。每個Partition的位置由Ring來維護,并存儲在映射中。Ring文件在系統(tǒng)初始化時創(chuàng)建,之后每次增減存儲節(jié)點時,需要重新平衡一下Ring文件中的項目,以保證增減節(jié)點

29、時,系統(tǒng)因此而發(fā)生遷移的文件數(shù)量最少。原理Swift用到的算法和存儲理論并不復(fù)雜,主要有幾下幾個概念。一致性哈希算法Swift利用一致性哈希算法構(gòu)建了一個冗余的可擴展的分布式對象存儲集群。Swift采用一致性哈希的主要目的是在改變集群的Node數(shù)量時,能夠盡可能少地改變已存在Key和Node的映射關(guān)系。 該算法的思路分為以下三個步驟。 首先計算每個節(jié)點的哈希值,并將其分配到一個0232的圓環(huán)區(qū)間上。其次使用相同方法計算存儲對象的哈希值,也將其分配到這個圓環(huán)上。隨后從數(shù)據(jù)映射到的位置開始順時針查找,將數(shù)據(jù)保存到找到的第一個節(jié)點上。如果超過232仍然找不到節(jié)點,就會保存到第一個節(jié)點上。 假設(shè)在這個

30、環(huán)形哈??臻g中存在4臺Node,若增加一臺Node5,根據(jù)算法得出Node5被映射在Node3和Node4之間,那么受影響的將僅是沿Node5逆時針遍歷到Node3之間的對象(它們本來映射到Node4上)。其分布如圖3所示。對象存儲Swift補充 SINA的經(jīng)驗Replica如果集群中的數(shù)據(jù)在本地節(jié)點上只有一份,一旦發(fā)生故障就可能會造成數(shù)據(jù)的永久性丟失。因此,需要有冗余的副本來保證數(shù)據(jù)安全。Swift中引入了Replica的概念,其默認(rèn)值為3,理論依據(jù)主要來源于NWR策略(也叫Quorum協(xié)議)。 NWR是一種在分布式存儲系統(tǒng)中用于控制一致性級別的策略。在Amazon的Dynamo云存儲系統(tǒng)中

31、,使用了NWR來控制一致性。其中,N代表同一份數(shù)據(jù)的Replica的份數(shù),W是更新一個數(shù)據(jù)對象時需要確保成功更新的份數(shù);R代表讀取一個數(shù)據(jù)需要讀取的Replica的份數(shù)。 公式W+RN,保證某個數(shù)據(jù)不被兩個不同的事務(wù)同時讀和寫;公式WN/2保證兩個事務(wù)不能并發(fā)寫某一個數(shù)據(jù)。 在分布式系統(tǒng)中,數(shù)據(jù)的單點是不允許存在的。即線上正常存在的Replica數(shù)量為1的情況是非常危險的,因為一旦這個Replica再次出錯,就可能發(fā)生數(shù)據(jù)的永久性錯誤。假如我們把N設(shè)置成為2,那么只要有一個存儲節(jié)點發(fā)生損壞,就會有單點的存在,所以N必須大于2。N越高,系統(tǒng)的維護成本和整體成本就越高。工業(yè)界通常把N設(shè)置為3。例如

32、,對于MySQL主從結(jié)構(gòu),其NWR數(shù)值分別是N= 2, W = 1, R = 1,沒有滿足NWR策略。而Swift的N=3, W=2, R=2,完全符合NWR策略,因此Swift系統(tǒng)是可靠的,沒有單點故障。Zone如果所有的Node都在一個機架或一個機房中,那么一旦發(fā)生斷電、網(wǎng)絡(luò)故障等,都將造成用戶無法訪問。因此需要一種機制對機器的物理位置進行隔離,以滿足分區(qū)容忍性(CAP理論中的P)。因此,Ring中引入了Zone的概念,把集群的Node分配到每個Zone中。其中同一個Partition的Replica不能同時放在同一個Node上或同一個Zone內(nèi)。注意,Zone的大小可以根據(jù)業(yè)務(wù)需求和硬件

33、條件自定義,可以是一塊磁盤、一臺存儲服務(wù)器,也可以是一個機架甚至一個IDC。WeightRing引入Weight的目的是解決未來添加存儲能力更大的Node時,分配到更多的Partition。例如,2TB容量的Node的Partition數(shù)為1TB的兩倍,那么就可以設(shè)置2TB的Weight為200,而1TB的為100。OpenStack主要邏輯模塊Glance鏡像服務(wù) Glance是OpenStack鏡像服務(wù),用來注冊、登陸和檢索虛擬機鏡像。Glance服務(wù)提供了一個REST API,使你能夠查詢虛擬機鏡像元數(shù)據(jù)和檢索的實際鏡像。通過鏡像服務(wù)提供的虛擬機鏡像可以存儲在不同的位置,從簡單的文件系統(tǒng)

34、對象存儲到類似OpeenStack對象存儲系統(tǒng)。鏡像服務(wù)組件:Glance-API:接收最終用戶或Noav對鏡像的請求,檢索和存儲鏡像的相關(guān)API調(diào)用。Glance-registry:存儲,處理和檢索有關(guān)鏡像的元數(shù)據(jù),元數(shù)據(jù)大小、類型等等。Database:存儲鏡像元數(shù)據(jù),可以支持多種數(shù)據(jù)庫,現(xiàn)在使用比較廣泛的是mysql和sqlite.Glance與Openstack其他模塊的關(guān)系HorizonImage可視化Swift存儲ImageKeystoneImage權(quán)限控制Nova調(diào)用ImageGlance模塊(鏡像功能)Glance支持的Image格式ariqcow2ovfvdirawvmdkv

35、hd添加標(biāo)題添加標(biāo)題添加標(biāo)題raw 非結(jié)構(gòu)化的鏡像格式vhd 一種通用的虛擬機磁盤格式, 可用于Vmware、Xen、Microsoft Virtual PC/Virtual Server/Hyper-V、VirtualBox等vmdk Vmware的虛擬機磁盤格式, 同樣也支持多種Hypervisorvdi VirtualBox、QEMU等支持的虛擬機磁盤格式qcow2 一種支持QEMU并且可以動態(tài)擴展的磁盤格式aki Amazon Kernel 鏡像ari Amazon Ramdisk 鏡像ami Amazon 虛擬機鏡像akiami網(wǎng)絡(luò)服務(wù) (codenamed“Quantum/Neut

36、ron”) 提供在被管理設(shè)備之間的網(wǎng)絡(luò)連接服務(wù) . 允許用戶自己創(chuàng)建自己的網(wǎng)絡(luò)并attach端口使用. 通過開發(fā)的Plugins支持SDN和OpenFlow用戶自定義子網(wǎng)地址,私有網(wǎng)絡(luò)/公有網(wǎng)絡(luò)以及Floating IP分配規(guī)則OpenStack主要邏輯模塊Quantum/Neutron網(wǎng)絡(luò)服務(wù)Neutron DriversNeutron服務(wù)模塊層次Neutron Drivers Neutron API提供Openstack其他服務(wù)或管理員及用戶訪問的接口 抽象層網(wǎng)絡(luò)資源抽象化,包括網(wǎng)絡(luò),子網(wǎng),端口及路由。將底層各種各樣的網(wǎng)絡(luò)資源按照openstack定義的網(wǎng)絡(luò)描述規(guī)則化 Plug-in通過P

37、lug-in方式可以整合更多的高級的功能以及與底層網(wǎng)絡(luò)廠商的設(shè)備實現(xiàn)更好的集成Quantum/Neutron 的關(guān)鍵概念網(wǎng)絡(luò)Network一個L2二層網(wǎng)絡(luò)單元 租戶可通過Quantum/Neutron API 創(chuàng)建自己的網(wǎng)絡(luò)子網(wǎng)Subnet一段IPV4/IPV6地址段 為Instance提供私網(wǎng)或公網(wǎng)地址 路由器Router三層路由器為租戶的Instance提供路由功能 端口Port虛擬交換機上的端口管理Instance的網(wǎng)卡簡單網(wǎng)絡(luò)架構(gòu)及解釋網(wǎng)絡(luò)AgentPlug-in agent:本地虛擬交換配置Dhcp agent:為tenant網(wǎng)絡(luò)提供DHCP服務(wù)L3 agent:提供l3/NAT轉(zhuǎn)發(fā)

38、功能,為tenant網(wǎng)絡(luò)中的vm提供外網(wǎng)訪問Metering agent:提供l3流量監(jiān)控和計量網(wǎng)絡(luò)描述:管理網(wǎng)絡(luò):用于 OpenStack 各組件之間的內(nèi)部通信。數(shù)據(jù)網(wǎng)絡(luò):用于云部署中虛擬數(shù)據(jù)之間的通信。外部網(wǎng)絡(luò):公共網(wǎng)絡(luò),外部或 internet 可以訪問的網(wǎng)絡(luò)。API 網(wǎng)絡(luò):暴露所有的 OpenStack APIs,包括 OpenStack 網(wǎng)絡(luò) API 給租戶Openstack網(wǎng)絡(luò)服務(wù)歷程OpenStack nova-network 網(wǎng)絡(luò)模型在 OpenStack 網(wǎng)絡(luò)組件沒有獨立出來之前,OpenStack 最初的 nova-network 網(wǎng)絡(luò)模型單一平面網(wǎng)絡(luò)的缺點:存在單一網(wǎng)絡(luò)瓶

39、頸,缺乏可伸縮性。缺乏合適的多租戶隔離單一網(wǎng)絡(luò)平面Openstack網(wǎng)絡(luò)服務(wù)歷程OpenStack Neutron 網(wǎng)絡(luò)模型OpenStack nova-network 獨立成為單獨的組件 Neutron 后,形象的網(wǎng)絡(luò)模型的多平面網(wǎng)絡(luò)、混合平面私有網(wǎng)絡(luò)多平面網(wǎng)絡(luò)混合平面私有網(wǎng)絡(luò)通過私有網(wǎng)絡(luò)實現(xiàn)運營商路由功能通過私有網(wǎng)絡(luò)實現(xiàn)每個租戶創(chuàng)建自己專屬的網(wǎng)絡(luò)區(qū)段Neutron 服務(wù)網(wǎng)絡(luò)管理的三種模式,兩種IPFlat 模式FlatDHCP 模式VLAN 模式固定IP(Fixed-IP):分配給虛擬機實例使用浮動IP(Floating IP):分配給虛擬機實例的外網(wǎng)地址,通過NAT方式實現(xiàn)。兩種IP三種

40、模式Flat模式Flat 模式是最簡單的一種聯(lián)網(wǎng)模式。每個實例接收一個來自池的固定 IP。所有實例均默認(rèn)附加到相同的橋 (br100)。橋必須進行手動配置。聯(lián)網(wǎng)配置在實例引導(dǎo)前插入到實例中。在這種模式中,沒有浮動 IP 特性。Flat DHCP 模式:用于測試環(huán)境這種模式下與 Flat 模式不同的地方在于有一個 DHCP 進程,每一個運行 nova-network 進程的節(jié)點(網(wǎng)絡(luò)控制節(jié)點/nove-network 主機)就是一個單獨的網(wǎng)絡(luò)。Nova 會在 nova-network 主機建立網(wǎng)橋(默認(rèn)名稱 br100,配置項 flat_network_bridge=br100),并給該網(wǎng)橋指定

41、該網(wǎng)絡(luò)的網(wǎng)關(guān) IP,同時 Nova 在網(wǎng)橋處起一個 DHCP 進程,最后,會建立 iptables 規(guī)則(SNAT/DNAT)使虛擬機能夠與外界通信,同時與一個 metadata 服務(wù)器通信以取得 cloud 內(nèi)的信息。計算節(jié)點負(fù)責(zé)創(chuàng)建對應(yīng)節(jié)點的網(wǎng)橋,此時的計算節(jié)點網(wǎng)卡可以不需要 IP 地址,因為網(wǎng)橋把虛擬機與 nove-network 主機連接在一個邏輯網(wǎng)絡(luò)內(nèi)。虛擬機啟動時會發(fā)送 dhcpdiscover 以獲取 IP 地址。虛擬機通往外界的數(shù)據(jù)都要通過 nova-network 主機,DHCP 在網(wǎng)橋處監(jiān)聽,分配 fixed_range 指定的 IP 段。這種部署方式的缺點-單節(jié)點故障、無

42、二層隔離(即所有的虛擬機都在一個廣播域)Vlan模式:用于生產(chǎn)環(huán)境VLAN模式的目的是為每個項目提供受保護的網(wǎng)段,具有以下特點:NAT實現(xiàn)public ip除了public NAT外沒有其它途徑進入每個lan受限的流出網(wǎng)絡(luò),project-admin可以控制受限的項目之間的訪問,同樣project-admin控制所以實例和api的連接通過vpnFlatDHCP模式下網(wǎng)絡(luò)流:單網(wǎng)卡單節(jié)點單網(wǎng)卡單節(jié)點OpenStack網(wǎng)絡(luò)流在普通部署方式下,只有一個控制節(jié)點(或網(wǎng)絡(luò)控制器),dhcp和外網(wǎng)訪問都需要經(jīng)過它。dhcp時:1)網(wǎng)絡(luò)控制器(運行nova-network服務(wù)的節(jié)點)一直運行dusmasq作

43、為DHCP服務(wù)器監(jiān)聽網(wǎng)橋(br100);2)實例做一次dhcp discover操作,發(fā)送請求;3)網(wǎng)絡(luò)控制器把從一個指定的子網(wǎng)中獲得的IP地址響應(yīng)給虛擬機實例。實例訪問外網(wǎng)時:1)實例經(jīng)過所在主機的flat_interface(這是一個flat網(wǎng)絡(luò)),連接到nova-network所在的主機(控制節(jié)點);2)網(wǎng)絡(luò)控制器對外出網(wǎng)絡(luò)流進行轉(zhuǎn)發(fā)。外網(wǎng)訪問實例時:1)網(wǎng)絡(luò)控制器對floating ip進行nat;2)通過flat網(wǎng)絡(luò)將流入數(shù)據(jù)路由給對應(yīng)的實例。單網(wǎng)卡多節(jié)點OpenStack網(wǎng)絡(luò)流控制節(jié)點:1)在主機上創(chuàng)建一個網(wǎng)橋(br100),把網(wǎng)關(guān)ip賦給這個橋;如果已經(jīng)有ip,會自動把這個ip賦給網(wǎng)橋作為網(wǎng)關(guān),并修復(fù)網(wǎng)關(guān);2)建立dhcp server,監(jiān)聽這個網(wǎng)橋;并在數(shù)據(jù)庫記錄ip的分配和釋放,從而判定虛擬機釋放正常關(guān)閉dhcp;3)監(jiān)聽到ip請求時,從ip池取出ip,響應(yīng)這個ip給實例;4)建立iptables規(guī)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論