版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(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àn)證功能)模塊可以對其他模塊進(jìn)行相應(yīng)操作進(jìn)行身份及權(quán)限驗(yàn)證(包括Nova,Glance,Cinder,Swift,Neutron,Ceilometer)VMNova為VM提供計(jì)算資源Glance為VM提供鏡像Cinder為VM提供塊存儲(chǔ)資源Neutron為VM提供網(wǎng)
2、絡(luò)資源及網(wǎng)絡(luò)連接Cinder連接VM后所產(chǎn)生的數(shù)據(jù)可以備份到Swift對象存儲(chǔ)中Glance提供鏡像可以保存在Switf對象存儲(chǔ)中OpenStack核心系統(tǒng)架構(gòu)圖HorizonKeystoneNovaGlanceCinderSwiftNeutronOpenStack 最簡物理架構(gòu)2個(gè)節(jié)點(diǎn):Cloud Controller Node:Keystone(身份驗(yàn)證服務(wù))Glance(鏡像管理服務(wù))Nova (計(jì)算資源管理服務(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ù)在整個(gè)Openstack應(yīng)用體系框架中,Horizon就是整個(gè)應(yīng)用的入口。它提供了一個(gè)模塊化的,基于web的圖形化界面服務(wù)門戶。用戶可以通過瀏覽器使用這個(gè)Web圖形化界面來訪問、控制他們的計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)資源,如啟動(dòng)實(shí)例、分配IP地址、設(shè)置訪問控制等?;贒jango框架實(shí)現(xiàn)OpenStack主要
4、邏輯模塊Horizon 兩種功能界面Horizon為以下兩種角色的用戶提供了不同的功能及使用界面:云管理員: 提供一個(gè)整體視圖,可以總覽整個(gè)云的資源規(guī)模及運(yùn)行狀況.可以創(chuàng)建終端用戶和項(xiàng)目,想終端用戶分配項(xiàng)目并進(jìn)行項(xiàng)目可使用的資源配額管理。終端用戶(云用戶): 提供了一個(gè)自助服務(wù)門戶,可以在由云管理分配的項(xiàng)目中,在不超過配額限制的范圍內(nèi),自由的操作、使用和分配資源。云管理員云用戶OpenStack主要邏輯模塊Keystone身份驗(yàn)證服務(wù)Keystone作為Openstack的核心模塊,為Nova(計(jì)算),Glance(鏡像),Swift(對象存儲(chǔ)),Cinder(塊存儲(chǔ)),Neutron(網(wǎng)絡(luò))
5、以及Horizon(Dashboard)提供認(rèn)證服務(wù)Keystone基本概念介紹之一User User即用戶,他們代表可以通過keystone進(jìn)行訪問的人或程序。Users通過認(rèn)證信息(credentials,如密碼、API Keys等)進(jìn)行驗(yàn)證。 Tenant Tenant即租戶,它是各個(gè)服務(wù)中的一些可以訪問的資源集合。例如,在Nova中一個(gè)tenant可以是一些機(jī)器,在Swift和Glance中一個(gè)tenant可以是一些鏡像存儲(chǔ),在Neutron中一個(gè)tenant可以是一些網(wǎng)絡(luò)資源。Users默認(rèn)的總是綁定到某些tenant上。 Role Role即角色,Roles代表一組用戶可以訪問的資
6、源權(quán)限,例如Nova中的虛擬機(jī)、Glance中的鏡像。Users可以被添加到任意一個(gè)全局的或租戶的角色中。在全局的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ù)前三個(gè)概念(User,Tenant和Role)一個(gè)服務(wù)可以確認(rèn)當(dāng)前用戶是否具有訪問其資源的權(quán)限。但是當(dāng)一個(gè)user嘗試著訪問其租戶內(nèi)的service時(shí),他必須知道這個(gè)service是否存在以及如何訪問這個(gè)service,這里通常使用一些不同的名稱表
7、示不同的服務(wù)。Keystone基本概念介紹之二Endpoint Endpoint,翻譯為“端點(diǎn)”,我們可以理解它是一個(gè)服務(wù)暴露出來的訪問點(diǎn),如果需要訪問一個(gè)服務(wù),則必須知道他的endpoint。因此,在keystone中包含一個(gè)endpoint模板,這個(gè)模板提供了所有存在的服務(wù)endpoints信息。一個(gè)endpoint template包含一個(gè)URLs列表,列表中的每個(gè)URL都對應(yīng)一個(gè)服務(wù)實(shí)例的訪問地址,并且具有public、private和admin這三種權(quán)限。public url可以被全局訪問(如),private url只能被局域網(wǎng)訪問(如http:/compute.example.l
8、ocal),admin url被從常規(guī)的訪問中分離。Token Token是訪問資源的鑰匙。它是通過Keystone驗(yàn)證后的返回值,在之后的與其他服務(wù)交互中只需要攜帶Token值即可。每個(gè)Token都有一個(gè)有效期,Token只在有效期內(nèi)是有效的。各種概念之間關(guān)系解釋1、租戶下,管理著一堆用戶(人,或程序)。2、每個(gè)用戶都有自己的credentials(憑證)用戶名+密碼或者用戶名+API key,或其他憑證。3、用戶在訪問其他資源(計(jì)算、存儲(chǔ))之前,需要用自己的credential去請求keystone服務(wù),獲得驗(yàn)證信息(主要是Token信息)和服務(wù)信息(服務(wù)目錄和它們的endpoint)。4
9、、用戶拿著Token信息,就可以去訪問特點(diǎn)的資源了。Keystone在OpenStack中的訪問流程范例 計(jì)算管理(codenamed“Nova”) 基于用戶需求為VM提供計(jì)算資源管理.基于Python語言編寫。Nova-API:對外統(tǒng)一提供標(biāo)準(zhǔn)化接口.接受和響應(yīng)最終用戶Compute API的請求,同時(shí)還實(shí)現(xiàn)與Openstack其他各邏輯模塊的通訊與服務(wù)提供Nova-Scheduler:從隊(duì)列上得到一個(gè)虛擬機(jī)實(shí)例請求并且決定它應(yīng)該在哪里運(yùn)行(使用多種過濾器或算法調(diào)度)Queue:提供了一個(gè)守護(hù)進(jìn)程之間傳遞消息的中央樞紐。消息隊(duì)列系統(tǒng)作用還可以實(shí)現(xiàn)與Openstack其他各邏輯模塊之間的通信建
10、立連接樞紐Nova-Database:存儲(chǔ)云基礎(chǔ)設(shè)施的編譯時(shí)和運(yùn)行時(shí)的狀態(tài),從理論上講,OpenStack Nova可以支持任何SQL-Alchemy支持的數(shù)據(jù)庫,但是目前被廣泛使用的數(shù)據(jù)庫有sqlite3(只適用于測試和開發(fā)工作),MySQL和PostgreSQL。Nova-Compute:主要是一個(gè)人工守護(hù)進(jìn)程,它可以通過虛擬機(jī)管理程序的API(XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware等)來創(chuàng)建和終止虛擬機(jī)實(shí)例。支持多種虛擬化平臺Nova還提供控制臺的服務(wù),讓最終用戶通過代理服務(wù)器訪問他們
11、的虛擬實(shí)例的控制臺。這涉及到多個(gè)守護(hù)進(jìn)程(nova-console,nova-novncproxy、nova-xvpnvncproxy和nova-consoleauth)OpenStack主要邏輯模塊- NovaNova的架構(gòu)Nova處理過程請求一個(gè)虛擬機(jī)實(shí)例過程N(yùn)ova支持的虛擬化平臺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隨機(jī)調(diào)度器Nova支持的過濾器ImagePropertiesFilterAvailabilityZoneFilterComputeFilterCoreFilterAll HostFilterDifferentHostFilterIsolateHostFilterRamFilterSimpleCIDRAffinityFilterSameHostFilter塊存儲(chǔ)管理模塊(codenamed“Cinder”) 提供到虛擬機(jī)的永久性塊存儲(chǔ)卷.類似AWS的EBS塊存儲(chǔ)服務(wù)多個(gè)卷可以被掛載到單一虛擬機(jī)實(shí)例,同時(shí)卷可以在虛擬機(jī)實(shí)例間移動(dòng),單
13、個(gè)卷在同一時(shí)刻只能被掛載到一個(gè)虛擬機(jī)實(shí)例塊存儲(chǔ)系統(tǒng)管理塊設(shè)備到虛擬機(jī)的創(chuàng)建,掛載以及卸載.塊設(shè)備卷完全與Openstack Compute集成,并支持云用戶在Dashboard中管理數(shù)據(jù)自己的存儲(chǔ).除了支持簡單的Linux服務(wù)器本地存儲(chǔ)之外,還支持眾多的存儲(chǔ)平臺,包括 Ceph, NetApp, Nexenta, SolidFire, Zadara.快照管理提供了強(qiáng)大的在塊存儲(chǔ)上實(shí)現(xiàn)數(shù)據(jù)備份的功能可以用來作為引導(dǎo)卷使用塊存儲(chǔ)適合性能敏感性業(yè)務(wù)場景,例如數(shù)據(jù)庫存儲(chǔ) 大規(guī)??蓴U(kuò)展的文件系統(tǒng)或服務(wù)器需要訪問到塊級裸設(shè)備存儲(chǔ).OpenStack主要邏輯模塊- 塊存儲(chǔ)CinderCinder的架構(gòu)Cin
14、der架構(gòu)解釋API Service:負(fù)責(zé)接受和處理 Rest 請求,并將請求放入RabbitMQ對列。Scheduler Service: 處理任務(wù)隊(duì)列的任務(wù),并根據(jù)預(yù)定策略選擇合適的 Volume Service 節(jié)點(diǎn)來執(zhí)行任務(wù)。目前版本的 Cinder 僅僅提供了一個(gè) Simple Scheduler, 該調(diào)度器選擇卷數(shù)量最少的一個(gè)活躍節(jié)點(diǎn)來創(chuàng)建卷。Volume Service: 該服務(wù)運(yùn)行在存儲(chǔ)節(jié)點(diǎn)上,管理存儲(chǔ)空間。每個(gè)存儲(chǔ)節(jié)點(diǎn)都有一個(gè) Volume Service,若干個(gè)這樣的存儲(chǔ)節(jié)點(diǎn)聯(lián)合起來可以構(gòu)成一個(gè)存儲(chǔ)資源池。為了支持不同類型和型號的存儲(chǔ),均通過Drivers的形式為Cinde
15、r的 Volume Service 提供相應(yīng)的Cinder-Volume。Cinder目前支持的存儲(chǔ)類型本地存儲(chǔ):LVM, Sheepdog網(wǎng)絡(luò)存儲(chǔ):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補(bǔ)充Cinder主要核心是對卷的管理,允許對
16、卷、卷的類型、卷的快照進(jìn)行處理。它并沒有實(shí)現(xiàn)對塊設(shè)備的管理和實(shí)際服務(wù),而是為后端不同的存儲(chǔ)結(jié)構(gòu)提供了統(tǒng)一的接口,不同的塊設(shè)備服務(wù)廠商在 Cinder 中實(shí)現(xiàn)其驅(qū)動(dòng)支持以與 OpenStack 進(jìn)行整合。在CinderSupportMatrix中可以看到眾多存儲(chǔ)廠商如 HP、NetAPP、IBM、SolidFire、EMC 和眾多開源塊存儲(chǔ)系統(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:更多的存儲(chǔ)廠商加入和完善了自己的 Cinder 驅(qū)動(dòng)。Cinder如何支持典型存儲(chǔ)1.本地存儲(chǔ)對于本地存儲(chǔ),cinder-volume 可以使用 LVM 驅(qū)動(dòng),該驅(qū)動(dòng)當(dāng)前的實(shí)現(xiàn)需要在主機(jī)上事先用 LVM 命令創(chuàng)建一個(gè) cinder-volumes 的卷組 , 當(dāng)該主機(jī)接受到創(chuàng)建卷請求的時(shí)候,cinder-volume 在該卷組 上創(chuàng)建一個(gè)邏輯卷, 并且用 openiscsi 將這個(gè)卷當(dāng)作一個(gè) iscsi tgt 給輸出.當(dāng)然還可以將若干主機(jī)的本地存儲(chǔ)用 sheepdog
18、 虛擬成一個(gè)共享存儲(chǔ),然后使用 sheepdog 驅(qū)動(dòng)。2.HP塊存儲(chǔ)HP存儲(chǔ)系統(tǒng)對于的Cinder的支持/wiki/CinderSupportMatrixCinderSupportMatrixOpenStack Block Storage (aka Cinder) DriversOpenStack主要邏輯模塊- 對象存儲(chǔ)Swift分布式對象存儲(chǔ)系統(tǒng),類似于AWS的S3通過采用基于標(biāo)準(zhǔn)化服務(wù)器的集群架構(gòu)提供冗余,可擴(kuò)展的對象存儲(chǔ)具有良好的擴(kuò)展性,可以實(shí)現(xiàn)PB級別數(shù)據(jù)的存儲(chǔ)支持存儲(chǔ)對象寫入的多份拷貝,并且支持當(dāng)拷貝丟失后的自我修復(fù)功能.確保數(shù)據(jù)的一致性提供每GB高性價(jià)比的極佳的可用性和數(shù)據(jù)耐久性
19、支持原生的 OpenStack API 以及S3 compatible API對象存儲(chǔ)Swift數(shù)據(jù)模型Swift 采用層次數(shù)據(jù)模型,共設(shè)三層邏輯結(jié)構(gòu):Account/Container/Object(即賬戶/容器/對象),每層節(jié)點(diǎn)數(shù)均沒有限制,可以任意擴(kuò)展。數(shù)據(jù)存儲(chǔ)基于NWR理論類似文件存儲(chǔ)過程:Touch fileA在對應(yīng)的磁盤塊組中對應(yīng)的元數(shù)據(jù)區(qū)域產(chǎn)生對應(yīng)的inode,基于這個(gè)inode存儲(chǔ)數(shù)據(jù)到數(shù)據(jù)區(qū)中對應(yīng)的塊組中的blockAccount對應(yīng)租戶,用于隔離Container對應(yīng)某個(gè)租戶數(shù)據(jù)的存儲(chǔ)區(qū)域Object對應(yīng)存儲(chǔ)區(qū)域中具體的block對象存儲(chǔ)Swift系統(tǒng)架構(gòu)Swift 采用完
20、全對稱、面向資源的分布式系統(tǒng)架構(gòu)設(shè)計(jì)所有組件都可擴(kuò)展,避免因單點(diǎn)失效而擴(kuò)散并影響整個(gè)系統(tǒng)運(yùn)轉(zhuǎn)通信方式采用非阻塞式 I/O 模式,提高了系統(tǒng)吞吐和響應(yīng)能力對象存儲(chǔ)Swift系統(tǒng)組件代理服務(wù)(Proxy Server):對外提供對象服務(wù) API,會(huì)根據(jù)環(huán)的信息來查找服務(wù)地址并轉(zhuǎn)發(fā)用戶請求至相應(yīng)的賬戶、容器或者對象服務(wù);由于采用無狀態(tài)的 REST 請求協(xié)議,可以進(jìn)行橫向擴(kuò)展來均衡負(fù)載。認(rèn)證服務(wù)(Authentication Server):驗(yàn)證訪問用戶的身份信息,并獲得一個(gè)對象訪問令牌(Token),在一定的時(shí)間內(nèi)會(huì)一直有效;驗(yàn)證訪問令牌的有效性并緩存下來直至過期時(shí)間。緩存服務(wù)(Cache Serv
21、er):緩存的內(nèi)容包括對象服務(wù)令牌,賬戶和容器的存在信息,但不會(huì)緩存對象本身的數(shù)據(jù);緩存服務(wù)可采用 Memcached 集群,Swift 會(huì)使用一致性散列算法來分配緩存地址。賬戶服務(wù)(Account Server):提供賬戶元數(shù)據(jù)和統(tǒng)計(jì)信息,并維護(hù)所含容器列表的服務(wù),每個(gè)賬戶的信息被存儲(chǔ)在一個(gè) SQLite 數(shù)據(jù)庫中。容器服務(wù)(Container Server):提供容器元數(shù)據(jù)和統(tǒng)計(jì)信息,并維護(hù)所含對象列表的服務(wù),每個(gè)容器的信息也存儲(chǔ)在一個(gè) SQLite 數(shù)據(jù)庫中。對象服務(wù)(Object Server):提供對象元數(shù)據(jù)和內(nèi)容服務(wù),每個(gè)對象的內(nèi)容會(huì)以文件的形式存儲(chǔ)在文件系統(tǒng)中,元數(shù)據(jù)會(huì)作為文件屬
22、性來存儲(chǔ),建議采用支持?jǐn)U展屬性的 XFS 文件系統(tǒng)。復(fù)制服務(wù)(Replicator):會(huì)檢測本地分區(qū)副本和遠(yuǎn)程副本是否一致,具體是通過對比散列文件和高級水印來完成,發(fā)現(xiàn)不一致時(shí)會(huì)采用推式(Push)更新遠(yuǎn)程副本,例如對象復(fù)制服務(wù)會(huì)使用遠(yuǎn)程文件拷貝工具 rsync 來同步;另外一個(gè)任務(wù)是確保被標(biāo)記刪除的對象從文件系統(tǒng)中移除。更新服務(wù)(Updater):當(dāng)對象由于高負(fù)載的原因而無法立即更新時(shí),任務(wù)將會(huì)被序列化到在本地文件系統(tǒng)中進(jìn)行排隊(duì),以便服務(wù)恢復(fù)后進(jìn)行異步更新;例如成功創(chuàng)建對象后容器服務(wù)器沒有及時(shí)更新對象列表,這個(gè)時(shí)候容器的更新操作就會(huì)進(jìn)入排隊(duì)中,更新服務(wù)會(huì)在系統(tǒng)恢復(fù)正常后掃描隊(duì)列并進(jìn)行相應(yīng)的更
23、新處理。審計(jì)服務(wù)(Auditor):檢查對象,容器和賬戶的完整性,如果發(fā)現(xiàn)比特級的錯(cuò)誤,文件將被隔離,并復(fù)制其他的副本以覆蓋本地?fù)p壞的副本;其他類型的錯(cuò)誤會(huì)被記錄到日志中。賬戶清理服務(wù)(Account Reaper):移除被標(biāo)記為刪除的賬戶,刪除其所包含的所有容器和對象。對象存儲(chǔ)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ù)對象存儲(chǔ)Swift補(bǔ)充對象存儲(chǔ)Swift補(bǔ)充對象存儲(chǔ)Swift補(bǔ)充 SINA的經(jīng)驗(yàn)主要組件Proxy ServerProxy Server是提供Swift API的服務(wù)器進(jìn)程,負(fù)責(zé)Swift其余組件間的相互通信。對于每個(gè)客戶端的請求,它將在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è)備上的存儲(chǔ)服務(wù)。在Swift中有三類存儲(chǔ)服務(wù)器:Account、Container和Object。其中Container服務(wù)器負(fù)責(zé)處理Object的列表,Container服務(wù)器并不知道對象存放位置,只知道指定Container里存的哪些Object。這些Object信息以sqlite數(shù)據(jù)庫文件的形式存儲(chǔ)。Container服務(wù)器也做一些跟蹤統(tǒng)計(jì),例如Object的總數(shù)、Container的使用情況。Consistency Servers在磁盤上存儲(chǔ)數(shù)據(jù)并向外提供Rest-ful API并不是難以解決的問題,最主要的問題在于故障處理。Swift的Consistency Servers的
26、目的是查找并解決由數(shù)據(jù)損壞和硬件故障引起的錯(cuò)誤。主要存在三個(gè)Server:Auditor、Updater和Replicator。 Auditor運(yùn)行在每個(gè)Swift服務(wù)器的后臺持續(xù)地掃描磁盤來檢測對象、Container和賬號的完整性。如果發(fā)現(xiàn)數(shù)據(jù)損壞,Auditor就會(huì)將該文件移動(dòng)到隔離區(qū)域,然后由Replicator負(fù)責(zé)用一個(gè)完好的拷貝來替代該數(shù)據(jù)。圖2給出了隔離對象的處理流圖。 在系統(tǒng)高負(fù)荷或者發(fā)生故障的情況下,Container或賬號中的數(shù)據(jù)不會(huì)被立即更新。如果更新失敗,該次更新在本地文件系統(tǒng)上會(huì)被加入隊(duì)列,然后Updaters會(huì)繼續(xù)處理這些失敗了的更新工作,其中由Account Up
27、dater和Container Updater分別負(fù)責(zé)Account和Object列表的更新。 Replicator的功能是處理數(shù)據(jù)的存放位置是否正確并且保持?jǐn)?shù)據(jù)的合理拷貝數(shù),它的設(shè)計(jì)目的是Swift服務(wù)器在面臨如網(wǎng)絡(luò)中斷或者驅(qū)動(dòng)器故障等臨時(shí)性故障情況時(shí)可以保持系統(tǒng)的一致性。Swift主要有三個(gè)組成部分: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、在于實(shí)現(xiàn)統(tǒng)一OpenStack各個(gè)項(xiàng)目間的認(rèn)證管理對象存儲(chǔ)Swift補(bǔ)充 SINA的經(jīng)驗(yàn)RingRing是Swift最重要的組件,用于記錄存儲(chǔ)對象與物理位置間的映射關(guān)系。在涉及查詢Account、Container、Object信息時(shí),就需要查詢集群的Ring信息。 Ring使用Zone、Device、Partition和Replica來維護(hù)這些映射信息。Ring中每個(gè)Partition在集群中都(默認(rèn))有3個(gè)Replica。每個(gè)Partition的位置由Ring來維護(hù),并存儲(chǔ)在映射中。Ring文件在系統(tǒng)初始化時(shí)創(chuàng)建,之后每次增減存儲(chǔ)節(jié)點(diǎn)時(shí),需要重新平衡一下Ring文件中的項(xiàng)目,以保證增減節(jié)點(diǎn)
29、時(shí),系統(tǒng)因此而發(fā)生遷移的文件數(shù)量最少。原理Swift用到的算法和存儲(chǔ)理論并不復(fù)雜,主要有幾下幾個(gè)概念。一致性哈希算法Swift利用一致性哈希算法構(gòu)建了一個(gè)冗余的可擴(kuò)展的分布式對象存儲(chǔ)集群。Swift采用一致性哈希的主要目的是在改變集群的Node數(shù)量時(shí),能夠盡可能少地改變已存在Key和Node的映射關(guān)系。 該算法的思路分為以下三個(gè)步驟。 首先計(jì)算每個(gè)節(jié)點(diǎn)的哈希值,并將其分配到一個(gè)0232的圓環(huán)區(qū)間上。其次使用相同方法計(jì)算存儲(chǔ)對象的哈希值,也將其分配到這個(gè)圓環(huán)上。隨后從數(shù)據(jù)映射到的位置開始順時(shí)針查找,將數(shù)據(jù)保存到找到的第一個(gè)節(jié)點(diǎn)上。如果超過232仍然找不到節(jié)點(diǎn),就會(huì)保存到第一個(gè)節(jié)點(diǎn)上。 假設(shè)在這個(gè)
30、環(huán)形哈??臻g中存在4臺Node,若增加一臺Node5,根據(jù)算法得出Node5被映射在Node3和Node4之間,那么受影響的將僅是沿Node5逆時(shí)針遍歷到Node3之間的對象(它們本來映射到Node4上)。其分布如圖3所示。對象存儲(chǔ)Swift補(bǔ)充 SINA的經(jīng)驗(yàn)Replica如果集群中的數(shù)據(jù)在本地節(jié)點(diǎn)上只有一份,一旦發(fā)生故障就可能會(huì)造成數(shù)據(jù)的永久性丟失。因此,需要有冗余的副本來保證數(shù)據(jù)安全。Swift中引入了Replica的概念,其默認(rèn)值為3,理論依據(jù)主要來源于NWR策略(也叫Quorum協(xié)議)。 NWR是一種在分布式存儲(chǔ)系統(tǒng)中用于控制一致性級別的策略。在Amazon的Dynamo云存儲(chǔ)系統(tǒng)中
31、,使用了NWR來控制一致性。其中,N代表同一份數(shù)據(jù)的Replica的份數(shù),W是更新一個(gè)數(shù)據(jù)對象時(shí)需要確保成功更新的份數(shù);R代表讀取一個(gè)數(shù)據(jù)需要讀取的Replica的份數(shù)。 公式W+RN,保證某個(gè)數(shù)據(jù)不被兩個(gè)不同的事務(wù)同時(shí)讀和寫;公式WN/2保證兩個(gè)事務(wù)不能并發(fā)寫某一個(gè)數(shù)據(jù)。 在分布式系統(tǒng)中,數(shù)據(jù)的單點(diǎn)是不允許存在的。即線上正常存在的Replica數(shù)量為1的情況是非常危險(xiǎn)的,因?yàn)橐坏┻@個(gè)Replica再次出錯(cuò),就可能發(fā)生數(shù)據(jù)的永久性錯(cuò)誤。假如我們把N設(shè)置成為2,那么只要有一個(gè)存儲(chǔ)節(jié)點(diǎn)發(fā)生損壞,就會(huì)有單點(diǎn)的存在,所以N必須大于2。N越高,系統(tǒng)的維護(hù)成本和整體成本就越高。工業(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)是可靠的,沒有單點(diǎn)故障。Zone如果所有的Node都在一個(gè)機(jī)架或一個(gè)機(jī)房中,那么一旦發(fā)生斷電、網(wǎng)絡(luò)故障等,都將造成用戶無法訪問。因此需要一種機(jī)制對機(jī)器的物理位置進(jìn)行隔離,以滿足分區(qū)容忍性(CAP理論中的P)。因此,Ring中引入了Zone的概念,把集群的Node分配到每個(gè)Zone中。其中同一個(gè)Partition的Replica不能同時(shí)放在同一個(gè)Node上或同一個(gè)Zone內(nèi)。注意,Zone的大小可以根據(jù)業(yè)務(wù)需求和硬件
33、條件自定義,可以是一塊磁盤、一臺存儲(chǔ)服務(wù)器,也可以是一個(gè)機(jī)架甚至一個(gè)IDC。WeightRing引入Weight的目的是解決未來添加存儲(chǔ)能力更大的Node時(shí),分配到更多的Partition。例如,2TB容量的Node的Partition數(shù)為1TB的兩倍,那么就可以設(shè)置2TB的Weight為200,而1TB的為100。OpenStack主要邏輯模塊Glance鏡像服務(wù) Glance是OpenStack鏡像服務(wù),用來注冊、登陸和檢索虛擬機(jī)鏡像。Glance服務(wù)提供了一個(gè)REST API,使你能夠查詢虛擬機(jī)鏡像元數(shù)據(jù)和檢索的實(shí)際鏡像。通過鏡像服務(wù)提供的虛擬機(jī)鏡像可以存儲(chǔ)在不同的位置,從簡單的文件系統(tǒng)
34、對象存儲(chǔ)到類似OpeenStack對象存儲(chǔ)系統(tǒng)。鏡像服務(wù)組件:Glance-API:接收最終用戶或Noav對鏡像的請求,檢索和存儲(chǔ)鏡像的相關(guān)API調(diào)用。Glance-registry:存儲(chǔ),處理和檢索有關(guān)鏡像的元數(shù)據(jù),元數(shù)據(jù)大小、類型等等。Database:存儲(chǔ)鏡像元數(shù)據(jù),可以支持多種數(shù)據(jù)庫,現(xiàn)在使用比較廣泛的是mysql和sqlite.Glance與Openstack其他模塊的關(guān)系HorizonImage可視化Swift存儲(chǔ)ImageKeystoneImage權(quán)限控制Nova調(diào)用ImageGlance模塊(鏡像功能)Glance支持的Image格式ariqcow2ovfvdirawvmdkv
35、hd添加標(biāo)題添加標(biāo)題添加標(biāo)題raw 非結(jié)構(gòu)化的鏡像格式vhd 一種通用的虛擬機(jī)磁盤格式, 可用于Vmware、Xen、Microsoft Virtual PC/Virtual Server/Hyper-V、VirtualBox等vmdk Vmware的虛擬機(jī)磁盤格式, 同樣也支持多種Hypervisorvdi VirtualBox、QEMU等支持的虛擬機(jī)磁盤格式qcow2 一種支持QEMU并且可以動(dòng)態(tài)擴(kuò)展的磁盤格式aki Amazon Kernel 鏡像ari Amazon Ramdisk 鏡像ami Amazon 虛擬機(jī)鏡像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è)備實(shí)現(xiàn)更好的集成Quantum/Neutron 的關(guān)鍵概念網(wǎng)絡(luò)Network一個(gè)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虛擬交換機(jī)上的端口管理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)控和計(jì)量網(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ò)組件沒有獨(dú)立出來之前,OpenStack 最初的 nova-network 網(wǎng)絡(luò)模型單一平面網(wǎng)絡(luò)的缺點(diǎn):存在單一網(wǎng)絡(luò)瓶
39、頸,缺乏可伸縮性。缺乏合適的多租戶隔離單一網(wǎng)絡(luò)平面Openstack網(wǎng)絡(luò)服務(wù)歷程OpenStack Neutron 網(wǎng)絡(luò)模型OpenStack nova-network 獨(dú)立成為單獨(dú)的組件 Neutron 后,形象的網(wǎng)絡(luò)模型的多平面網(wǎng)絡(luò)、混合平面私有網(wǎng)絡(luò)多平面網(wǎng)絡(luò)混合平面私有網(wǎng)絡(luò)通過私有網(wǎng)絡(luò)實(shí)現(xiàn)運(yùn)營商路由功能通過私有網(wǎng)絡(luò)實(shí)現(xiàn)每個(gè)租戶創(chuàng)建自己專屬的網(wǎng)絡(luò)區(qū)段Neutron 服務(wù)網(wǎng)絡(luò)管理的三種模式,兩種IPFlat 模式FlatDHCP 模式VLAN 模式固定IP(Fixed-IP):分配給虛擬機(jī)實(shí)例使用浮動(dòng)IP(Floating IP):分配給虛擬機(jī)實(shí)例的外網(wǎng)地址,通過NAT方式實(shí)現(xiàn)。兩種IP三種
40、模式Flat模式Flat 模式是最簡單的一種聯(lián)網(wǎng)模式。每個(gè)實(shí)例接收一個(gè)來自池的固定 IP。所有實(shí)例均默認(rèn)附加到相同的橋 (br100)。橋必須進(jìn)行手動(dòng)配置。聯(lián)網(wǎng)配置在實(shí)例引導(dǎo)前插入到實(shí)例中。在這種模式中,沒有浮動(dòng) IP 特性。Flat DHCP 模式:用于測試環(huán)境這種模式下與 Flat 模式不同的地方在于有一個(gè) DHCP 進(jìn)程,每一個(gè)運(yùn)行 nova-network 進(jìn)程的節(jié)點(diǎn)(網(wǎng)絡(luò)控制節(jié)點(diǎn)/nove-network 主機(jī))就是一個(gè)單獨(dú)的網(wǎng)絡(luò)。Nova 會(huì)在 nova-network 主機(jī)建立網(wǎng)橋(默認(rèn)名稱 br100,配置項(xiàng) flat_network_bridge=br100),并給該網(wǎng)橋指定
41、該網(wǎng)絡(luò)的網(wǎng)關(guān) IP,同時(shí) Nova 在網(wǎng)橋處起一個(gè) DHCP 進(jìn)程,最后,會(huì)建立 iptables 規(guī)則(SNAT/DNAT)使虛擬機(jī)能夠與外界通信,同時(shí)與一個(gè) metadata 服務(wù)器通信以取得 cloud 內(nèi)的信息。計(jì)算節(jié)點(diǎn)負(fù)責(zé)創(chuàng)建對應(yīng)節(jié)點(diǎn)的網(wǎng)橋,此時(shí)的計(jì)算節(jié)點(diǎn)網(wǎng)卡可以不需要 IP 地址,因?yàn)榫W(wǎng)橋把虛擬機(jī)與 nove-network 主機(jī)連接在一個(gè)邏輯網(wǎng)絡(luò)內(nèi)。虛擬機(jī)啟動(dòng)時(shí)會(huì)發(fā)送 dhcpdiscover 以獲取 IP 地址。虛擬機(jī)通往外界的數(shù)據(jù)都要通過 nova-network 主機(jī),DHCP 在網(wǎng)橋處監(jiān)聽,分配 fixed_range 指定的 IP 段。這種部署方式的缺點(diǎn)-單節(jié)點(diǎn)故障、無
42、二層隔離(即所有的虛擬機(jī)都在一個(gè)廣播域)Vlan模式:用于生產(chǎn)環(huán)境VLAN模式的目的是為每個(gè)項(xiàng)目提供受保護(hù)的網(wǎng)段,具有以下特點(diǎn):NAT實(shí)現(xiàn)public ip除了public NAT外沒有其它途徑進(jìn)入每個(gè)lan受限的流出網(wǎng)絡(luò),project-admin可以控制受限的項(xiàng)目之間的訪問,同樣project-admin控制所以實(shí)例和api的連接通過vpnFlatDHCP模式下網(wǎng)絡(luò)流:單網(wǎng)卡單節(jié)點(diǎn)單網(wǎng)卡單節(jié)點(diǎn)OpenStack網(wǎng)絡(luò)流在普通部署方式下,只有一個(gè)控制節(jié)點(diǎn)(或網(wǎng)絡(luò)控制器),dhcp和外網(wǎng)訪問都需要經(jīng)過它。dhcp時(shí):1)網(wǎng)絡(luò)控制器(運(yùn)行nova-network服務(wù)的節(jié)點(diǎn))一直運(yùn)行dusmasq作
43、為DHCP服務(wù)器監(jiān)聽網(wǎng)橋(br100);2)實(shí)例做一次dhcp discover操作,發(fā)送請求;3)網(wǎng)絡(luò)控制器把從一個(gè)指定的子網(wǎng)中獲得的IP地址響應(yīng)給虛擬機(jī)實(shí)例。實(shí)例訪問外網(wǎng)時(shí):1)實(shí)例經(jīng)過所在主機(jī)的flat_interface(這是一個(gè)flat網(wǎng)絡(luò)),連接到nova-network所在的主機(jī)(控制節(jié)點(diǎn));2)網(wǎng)絡(luò)控制器對外出網(wǎng)絡(luò)流進(jìn)行轉(zhuǎn)發(fā)。外網(wǎng)訪問實(shí)例時(shí):1)網(wǎng)絡(luò)控制器對floating ip進(jìn)行nat;2)通過flat網(wǎng)絡(luò)將流入數(shù)據(jù)路由給對應(yīng)的實(shí)例。單網(wǎng)卡多節(jié)點(diǎn)OpenStack網(wǎng)絡(luò)流控制節(jié)點(diǎn):1)在主機(jī)上創(chuàng)建一個(gè)網(wǎng)橋(br100),把網(wǎng)關(guān)ip賦給這個(gè)橋;如果已經(jīng)有ip,會(huì)自動(dòng)把這個(gè)ip賦給網(wǎng)橋作為網(wǎng)關(guān),并修復(fù)網(wǎng)關(guān);2)建立dhcp server,監(jiān)聽這個(gè)網(wǎng)橋;并在數(shù)據(jù)庫記錄ip的分配和釋放,從而判定虛擬機(jī)釋放正常關(guān)閉dhcp;3)監(jiān)聽到ip請求時(shí),從ip池取出ip,響應(yīng)這個(gè)ip給實(shí)例;4)建立iptables規(guī)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度體育賽事贊助與品牌推廣協(xié)議2篇
- 二零二五版貨運(yùn)代理服務(wù)合同糾紛處理辦法2篇
- 二零二五年度商品房交易合同范文:帶車位租賃3篇
- 2025年度企業(yè)培訓(xùn)與員工晉升通道對接協(xié)議范本3篇
- 2025年度中醫(yī)流派傳承與創(chuàng)新合作合同書4篇
- 2025年新型食堂承包服務(wù)合同(含員工培訓(xùn))3篇
- 2025年度城市更新改造項(xiàng)目承包勞務(wù)合同范本3篇
- 2025版建筑工程尾款結(jié)算協(xié)議3篇
- 2025年度蟲草品牌授權(quán)合作合同4篇
- 凱美瑞隔音施工方案解析
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級歷史下冊
- 2025-2030年中國糖醇市場運(yùn)行狀況及投資前景趨勢分析報(bào)告
- 冬日暖陽健康守護(hù)
- 水處理藥劑采購項(xiàng)目技術(shù)方案(技術(shù)方案)
- 2024級高一上期期中測試數(shù)學(xué)試題含答案
- 山東省2024-2025學(xué)年高三上學(xué)期新高考聯(lián)合質(zhì)量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓(xùn)
- 三年級除法豎式300道題及答案
- 品學(xué)課堂新范式
- GB/T 1196-2023重熔用鋁錠
- 幼兒園教師培訓(xùn):計(jì)數(shù)(數(shù)數(shù))的核心經(jīng)驗(yàn)
評論
0/150
提交評論