溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

openstack概述

發布時間:2020-03-19 19:48:10 來源:網絡 閱讀:751 作者:一只傻熊二 欄目:建站服務器


                     openstack概述


如何理解云?

云是基于“云計算”技術,實現各種終端設備之間的互聯互通。手機、電視機等都只是一個單純的顯示和操作終端,它們不再需要具備強大的處理能力。用戶享受的所有資源、所有應用程序全部都由一個存儲和運算能力超強的云端后臺來提供。像我們現在經常使用的在線殺毒、網絡硬盤、在線音樂等都屬于云服務范疇。

云計算的概念可以從用戶、技術提供商和技術開發人員三個不同角度來解讀。

用戶看云計算

從用戶的角度考慮,主要根據用戶的體驗和效果來描述,云計算可以總結為:云計算系統是一個信息基礎設施,包含有硬件設備、軟件平臺、系統管理的數據以及相應的信息服務。用戶使用該系統的時候,可以實現“按需索取、按用計費、無限擴展,網絡訪問”的效果。

簡單而言,用戶可以根據自己的需要,通過網絡去獲得自己需要的計算機資源和軟件服務。這些計算機資源和軟件服務是直接供用戶使用而無需用戶做進一步的定制化開發、管理和維護等工作。同時,這些計算機資源和軟件服務的規??梢愿鶕脩魳I務變化和需求的變化,隨時進行調整到足夠大的規模。用戶使用這些計算機資源和軟件服務,只需要按照使用量來支付租用的費用。

技術提供商看云計算

技術提供商對云計算理解為,通過調度和優化的技術,管理和協同大量的計算資源;針對用戶的需求,通過互聯網發布和提供用戶所需的計算機資源和軟件服務;基于租用模式的按用計費方法進行收費。

技術開發人員看云計算

技術開發人員作為云計算系統的設計和開發人員,認為云計算是一個大型集中的信息系統,該系統通過虛擬化技術和面向服務的系統設計等手段來完成資源和能力的封裝以及交互,并且通過互聯網來發布這些封裝好的資源和能力。

所謂大型集中的信息系統,指的是包含有大量的軟硬件資源,并且通過技術和網絡等對其進行集中式的管理的信息系統。通常這些軟硬件資源在物理上或者在網絡連接上是集中或者相鄰的,能夠協同來完成同一個任務。

信息系統包含有軟硬件和很多軟件功能,這些軟硬件和軟件功能如果需要被訪問和使用,必須有一種把相關資源和軟件模塊打包在一起并且能夠呈現給用戶的方式。虛擬化技術和Web服務為最為常見的封裝和呈現技術,可以把硬件資源和軟件功能等打包,并且以虛擬計算機和網絡服務的形式呈現給用戶使用。


所以云計算(CloudComputing)是分布式計算(Distributed Computing)、并行計算(Parallel Computing)、效用計算(Utility Computing)、網絡存儲(Network Storage Technologies)、虛擬化(Virtualization)、負載均衡(Load Balance)等傳統計算機網絡技術發展融合的產物。

好比是從古老的單臺發電機模式轉向了電廠集中供電的模式。它意味著計算能力也可以作為一種商品進行流通,就像煤氣、水電一樣,取用方便,費用低廉。最大的不同在于,它是通過互聯網進行傳輸的。

云計算的部署類型

云計算可以分成三種不同的類型進行部署,分別是私有云、公有云、混合云。

私有云指的是部署在一個封閉和特定環境(網絡封閉或者服務范圍封閉)中的一個云計算系統。該系統的系統邊界明確,僅對指定范圍內的人員提供服務。該范圍以外的人員和系統無法使用該云,比如非服務區域或者非指定內部網絡的人不能使用私有云上的云服務。

公有云指的是部署在一個開放環境中,為所有具備網絡接入能力的人和系統提供服務。用戶通過互聯網訪問和使用公有云的服務,但不擁有云也不管理云。

混合云指的是以私有云為基礎,能夠在業務負載超越私有云自身能力或其它指定的情況下,把部分業務負載透明地分流到其它云上進行處理,使得私有云和部分其它云的資源整合在一起形成的一個系統。

云計算的服務類型

云計算的服務類型可以分為基礎設施即服務(IaaS)、應用平臺即服務(PaaS)以及軟件即服務(SaaS)三個層次。

基礎設施即服務(IaaS)對云計算系統的軟硬件和網絡等基礎設施進行集中管理和調度,并且把這些基礎設施以一種可以通過網絡進行訪問和使用的形式進行封裝,并對外以服務的方式提供這些封裝好的IT能力。

應用平臺即服務(PaaS)在云基礎設施上運行的應用軟件支撐平臺,其提供業務軟件開發所需的業務接口和公共基礎處理的支持,方便開發人員開發特定業務的云服務;同時,應用平臺即服務(PaaS)為業務軟件的運行提供運行時刻的語言運行、網絡交互、進程通信、同步控制以及調度等支持,使得云服務能夠高效可控地運行。

軟件即服務(SaaS)指在云計算平臺上,通過互聯網直接為用戶提供軟件服務。軟件即服務(SaaS)使得用戶不用再購買軟件,而是向提供商租用通過互聯網即可使用的軟件來管理企業經營活動,且用戶無需對軟件進行維護。


Openstack的歷史:

         2010年,美國國家航空航天局聯手Rackspace,在建設美國國家航空航天局的私有云過程中,創建了openstack的項目,之后他們邀請其他供應商提過組件,建立了一個完整的開源云計算解決方案。

注:Rackspace NYSERAX)全球三大云計算中心之一,1998年成立,是一家全球領先的托管服務器及云計算提供商。

         2010年誕生的第一個版本Austin,只包含Rackspace和美國國家航空航天局的組件。之后發布的版本包含了已加入該項目的供應商開發的附加組件。最初Rackspace獨立管理openstack項目,隨著openstack的不斷發展,在2012年創建了openstack基金會,該基金會又選舉產生的董事會監管。Openstack的技術委員會由每個核心的軟件項目和項目領導組成。

         目前openstack有來自87個國家或地區的850個基金會成員,白金會員提供最高水平的支持,其次是黃金會員,贊助企業和個人會員。

Cloudstack的歷史:

         Cloudstack始于cloud.com,其目標是使服務供應商和企業創建,運營能力類似于亞馬遜公司的公有云,私有云。2010年,cloud.com提供了基于GPLv3的社區版本,供用戶免費下載。

         思杰公司在20117月收購了cloud.com。思杰公司是openstack社區最早期的成員之一,但在2012年決定離開Openstack社區。根據媒體報道,做出這一決定是因為思杰公司認為,最初由cloud.com提供的代碼相比openstack更穩定,可為用戶提供更多的功能。

         20124月,思杰公司提交了cloud.com的代碼給apache軟件基金會,現在在apache基金會的apache2.0許可證下進行代碼開發,思杰公司將繼續提供版本支持及解決方案支持。由于過度到了apache,其他廠商也紛紛加入到了開發隊伍,增加功能和增強核心軟件。

         有一點不同的是,openstack的基金會中會有供應商的名單,不同于cloudstack的發布者名單。因為apache基金會負責了大量的項目,而Apache項目成員均為個人名義被列入,而不是他們所代表的公司。

         apache項目中,由感興趣的公司制定獨立工作人員的工作項目。當前cloudstack項目成員有一些思杰公司的員工和一些不太知名的公司,項目的發展方向由個別參與者所代表的雇主的意愿來決定。

Openstackcloudstack的歷史比較

         Cloud.com致力于開發和發展一個更大的開源社區,因此,大部分cloudstack核心組件由cloud.com開發,然后由思杰公司增強。

         相比之下,openstack項目從最開始就發展開放社區,其直接結果是,openstack里聚集了比cloudstack更多的主流供應商。在大多數情況下,這些廠商開發的組件第一時間提供給openstack,之后才是cloudstack提供接口。

         此外,思科和Nicira公司已經成為openstack網絡組件neutron的主要開發者。Neutron接收來自虛擬機的指令來定義虛擬機所需的網絡,然后發送指令給交換機和路由器來創建這些網絡。

         每個交換機的供應商必須為Neutron提供插件,這個插件在Neutron中轉換為特定廠商設備的特定命令語法。Extreme Networksbrocade這兩個openstack基金會成員同樣先為openstack提供插件,在進行cloudstack支持。

         Openstack也有不完善的地方,如openstack相對于cloudstack來說更加復雜,對終端用戶的支持不夠,在安裝部署上不如cloudstack便捷,在界面顯示方面也不如cloudstack豐富。

要確定企業的合適部署,就必須自行對比每一個解決方案,然后進行選擇,思杰公司向大型服務提供商,大學以及其他機構展現了cloudstack的成熟和穩定。而要關注openstack的穩定性可以查看IBM,戴爾和rackspace等公司的解決方案,這兩款產品一直在持續發展,提供了一系列的存儲和網絡選項。相比開源項目,openstack是一個更高級且更現代化的開源項目,因為它是高度協作的產物。Openstack的支持者都是世界頂級的供應商,可以看出openstack備受青睞,也是開源界的明星產品。

支持openstack項目的主流供應商

X86服務器供應商

HP(惠普)

DELL(戴爾)

IBM

Linux供應商

Redhat

Suse

Canonical

路由器供應商

Cisco

Juniper network

Alcatel-luceent

刀片服務器供應商

HP

Cisco

IBM

交換機供應商

Cisco

HP

Juniper network

存儲供應商

Emc

IBM

NetApp

Hypervisor供應商

Vmware

Kvm

Xen


Openstack的功能與作用

         當今的數據中心,許多服務器都遇到過同樣的問題,即計算,電源,網絡帶寬等資源的利用率不足。例如,某個項目可能會需要大量的計算資源來完成計算,而一旦完成了計算任務,將不再需要那么多的計算資源。當用戶想要一種靈活的,按需供給計算資源的服務,通過自動化或很少的人工干預就能使用時,那么云計算就是最好的選擇之一。云計算通常包含了一個服務責任,表示云計算服務提供商承諾的性能,規格,可用率等。云計算服務讓用戶通過一個共享的計算資源,網絡帶寬,存儲池,運行應用程序或服務來完成計算工作,并按資源的使用來計費。

關于云計算服務的主要特點如下:

按需自助服務:用戶可以提供自己的需要訂購所需的計算、存儲和網絡資源,而幾乎無需人工干預。

網絡訪問:可以通過網絡使用任意類型的異構計算能力,通過標準化的機制調用計算資源而不受限于具體的訪問設備

資源池:多個用戶可以同時訪問和使用云計算提供的計算服務,服務提供商根據消費者的計算要求或實際使用量和分配實際的計算資源。

彈性;可根據需要不停機或短暫停機后迅速垂直或橫向擴展

計量或測量服務:按照使用的時間,傳輸或存儲的字節數支付云計算服務,并提供消費者具體的資源消費圖表。同時,他也可以根據消費者的不同需求提供定制化的計費模式

         云計算是網格計算(網格計算是分布式計算(DistributedComputing)的一種,整合大量異構計算機的閑置資源(如計算資源和磁盤存儲等),組成虛擬組織,以解決大規模計算問題。),分布式計算,并行計算,效用計算(效用計算(Utility computing)是一種提供服務的模型,在這個模型里服務提供商提供客戶需要的計算資源和基礎設施管理,并根據應用所占用的資源情況進行計費,而不是僅僅按照速率進行收費.),聯機存儲技術,虛擬化,負載均衡等一些列傳統計算技術和網絡技術發展融合的產物。它旨在通過網絡將多個成本低廉的計算實體整合成一個大型的計算資源池,并借助Saas,Paas,Iaas等服務模式,將強大的計算能力分發到終端用戶手中。云計算的核心理念就是,不斷的提高云端處理能力,減輕用戶負擔,將一系列的IT能力以服務的形式提供給用戶,簡化用戶終端的處理負擔,最終使用成為一個單純的輸入/輸出設備,享受云提供的強大計算處理及服務能力。

         Openstack具有建設這樣資源池的能力,通過openstack的各種組件多種模式的排列組合,可以搭建成各種規模的云,這些云可以是私有云,公有云,混合云。

         Openstack具有三大核心功能,即計算,存儲,網絡,分別對應相應的項目Nova,Cinder等。其中Nova提供了計算資源的管理,可以管理跨服務器網絡的vm實例。同時Nova還提供了對多種Hyperviosr的支持,如KVM,QEMU,Xen,LXC,Vmware,Hyper-V,Powervm等。Cinder提供了存儲資源的管理,可以管理各個廠商提供的專業存儲設備。

openstack概述

Openstack關鍵組件

服務名稱

項目名稱

描述

Dashboard

Horizon

基于openstackAPI接口使用django開發的web管理

Compute

Nova

通過虛擬化技術提供計算資源池

Networking

Neutron

實現了虛擬機的網絡資源管理


Storage存儲


Object Storage

Swift

對象存儲,適用于“一次寫入,多次讀取”

Block storage

Cinder

塊存儲,提供存儲資源池


Shared  server(共享服務)


Identity

Keystone

認證管理

Imageservice

glance

提供虛擬機鏡像的注冊和存儲管理

Telemetry  [t'lemtr]

Ceilometer [si'lmt]

提供監控和數據采集,計量服務


Higher-level  service(高級服務)


Orchestration [,ks'tren]

Heat

自動化部署的組件

DatabaseService

Trove

提供數據庫應用服務

Mysql:

         Openstack所使用的數據庫,包括nova,glance,cinder等在內的組件都會建立自己的數據庫,保存一些必要的數據。

Keystone:

         Openstack的用戶認證組件,它的功能主要是建立管理項目的用戶和各種服務端口,以及進行用戶的身份認證,若要使用openstack的任意的API,第一步就必須通過keystone的驗證。

keystone的主要功能是提供認證和編錄服務

keystone提供了兩種認證方式:token,identifybackend

         token(令牌,實際是一個隨機字串,在認證時直接使用),主要用于內部各組件之間

         identify(賬號,密碼),需要用戶登陸時,如用戶通過horizon訪問云資源

catalog(編錄):保存當前openstack架構中的調用接口(ip地址,端口,url信息),openstack各個組件之間交互通過api接口,openstack架構各個組件通過httprestful機制(一種軟件架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用于客戶端和服務器交互類的軟件?;谶@個風格設計的軟件可以更簡潔,更有層次,更易于實現緩存等機制)遠程過程調用,基于URI輸出。

policy:管理策略,如與用戶管理、虛擬機實例管理有關的策略

openstack概述

Glance:

         用來存放管理虛擬機鏡像和快照的服務,這也是一個最小架構中必須有的服務。

glance存放鏡像的元數據的

registry:調用數據庫的接口,檢索接口

database:映像文件的存儲位置等

         swift:分布式存儲

openstack概述

Neutron:

         網絡服務,用來提供虛擬機網絡通信的組件,負責接收對網絡的調用請求。

Nova

         Nova是個至關重要的組件,也是個相對龐大的組件,其中有很多服務,它是進行生成虛擬機工作的主要服務。

Nova計算節點,是openstack的最核心的節點,運行虛擬機實例,分配cpu、內存,nova-compute本身并不能運行虛擬機,是要通過hypervisor,nova-compute通過api調用hypervisor,,nova-compute支持那種api就可以調用那種hypervisor,nova-compute支持libvirt api就可以調用libvirt支持的hypervisor(如kvm),xenapi可以調用xen

Cinder:塊存儲

         用來創建,刪除及管理volume(虛擬磁盤卷),以及給volume做快照等服務的組件

swift:分布式文件系統,用來存儲鏡像文件模板

Horizion:

         Openstackweb管理頁面,使用django框架開發。Web管理頁面包含了日常使用的大部分功能,提供給用戶一個最直觀的展現方式。很多簡單的二次開發都是從Horizon開始的。

Rabbitmq

         openstack中,各個服務之間是通過消息來交互的,因為openstack使用AMQP作為消息傳遞的技術,所以rabbitmq,qpid,zeromq等支持AMQP的軟件都是被openstack所支持的。Rabbitmq是第一個被openstack所使用的消息傳遞軟件。Openstack通過AMQP實現RPC服務,來保證不同組件之間的通信,rabbitmq是控制節點中的一個非常關鍵的服務。

openstack概述

虛擬機運行在nova節點上的,所有組件都圍繞vm工作


keystone概述

keystoneopenstack的組件之一,用于為openstack家族中的其他組件成員提供統一的認證服務,包括身份驗證、令牌發放和校驗、服務列表、用戶權限定義等。其中服務列表體現在用戶登錄openstack系統后能夠使用的計算,網絡,存儲等服務的列表。通過下面的圖可以看出openstack中所有組件的認證,都需要keystone的參與,所以keystone自身的高可用也非常重要。

openstack概述

keystone服務主要有兩個功能

1.     實現用戶管理:主要是認證和授權

Keystone實現認證的方式有兩種:token認證,用戶名密碼認證

  1. 實現服務管理:openstack集群中每一個服務都有可能在獨立的節點上,這些節點的IP地址,監聽的端口,訪問路徑uri都要在Identity中進行注冊,部署identity后,只需向外輸出一個identity的路徑就可以查找到其他組件(p_w_picpath,nova,compute…)的訪問路徑了。即存儲所有可用服務的信息,包含其API的訪問入口(API endpoint路徑)。

keystone的關鍵術語:

User:一個user可以關聯至多個tenant

Tenant(租戶):一個tenant對應一個project或一個組織,一個租戶相當于一個公司或一個項目,openstack是可以實現公有云的,每一個項目中也有可能會包含多個虛擬機實例,項目也可以是一個tenant

Tenant的另一種解釋:Project(Tenant):可以理解為一個人、或服務所擁有的資源集合。在一個Project(Tenant)中可以包含多個User,每一個User都會根據權限的劃分來使用Project(Tenant)中的資源。比如通過Nova創建虛擬機時要指定到某個Project中,在Cinder創建卷也要指定到某個Project中。User訪問Project的資源前,必須要與該Project關聯,并且指定UserProject下的Role。

Role:角色主要實現向User授權的,openstack有幾個內置的角色,admin,member

Token:定義了令牌的有效時間和令牌中用戶的權限,項目等基本信息

Service:對應業務模型服務,如計算(compute,存儲(volume,鏡像(Glance)等

Endpoint:服務的訪問入口每個服務都會有自己的訪問入口,也稱之為訪問端點。

Endpoint:一個可以通過網絡來訪問和定位某個Openstackservice的地址,通常是一個URL。比如,當Nova需要訪問Glance服務去獲取p_w_picpath 時,Nova通過訪問Keystone拿到Glanceendpoint,然后通過訪問該endpoint去獲取Glance服務。我們可以通過Endpointregion屬性去定義多個region。Endpoint 使用對象分為三類:

admin url >admin用戶使用,Post35357

internal url >OpenStack內部服務使用來跟別的服務通信,Port5000

public url >其它用戶可以訪問的地址,Post5000

創建完service后創建API EndPoint. openstack中,每一個service都有三種endpoints. Admin, public, internal。 Admin是用作管理用途的,如它能夠修改user/tenant(project)。 public 是讓客戶調用的,比如可以部署在外網上讓客戶可以管理自己的云。internalopenstack內部調用的。三種endpoints 在網絡上開放的權限一般也不同。Admin通常只能對內網開放,public通??梢詫ν饩W開放internal通常只能對安裝有openstack服務的機器開放。

openstack概述

用戶--角色--服務的交互圖解:

openstack概述

keystone的邏輯架構圖:

openstack概述

1.     可以使用kvsmemcached實現令牌(token)后端存儲。Token后端存儲用來存儲基于token認證相關的token信息

2.     Identitybackend(用戶名和密碼的認證方式),實現方式有:kvs,pam,sql,ldap,etc.

3.     Catalogbackend(編錄服務后端),keystone可以直接連接到memcached中,將token保存下來,事實上keystone沒有memcached也可以正常工作,因為keystonetoken backend可以基于keystone自己的存儲提供。實現方式有kvs,sql,etc

4.     Policykackend(存儲策略):存儲訪問時使用的規則及自定義的其他規則。

keystone驗證流程:以創建虛擬機的流程為例

openstack概述

keystone的工作流程總結:

  • 用戶像keystone發送用戶名和密碼,通過驗證后,keystone會返回一個臨時token和一個service catalog的列表。

  • 用戶用這個臨時的tokencatalog列表中keystoneendpoint請求用戶對應的tenant信息,keystone驗證token通過后會返回用戶對應的tenant列表。

  • 用戶從列表中選取tenant,再次向keystone請求,keystone驗證通過后,返回與該tenant相關的catalog信息和token。

  • 用戶用該token以及tenant/user信息向catalog中的nova服務器端點請求開啟虛擬機服務。novakeystone請求驗證:<1>.token是否合法<2>.這個租戶和用戶是否有權限來向nova請求服務?

  • keystone返回給nova: <1>.租戶-用戶具備訪問nova權限。<2>. token合法<3>. token屬于該租戶-用戶。

  • nova根據自己的規則判斷用戶是否具備開啟虛擬機的權限,如果具備,啟動虛擬機,并向用戶報告狀態。

 

Keystone認證流程:

openstack概述

  1. 用戶alice登錄keystone系統(password或者token的方式),獲取一個臨時的tokencatalog服務目錄(v3版本登錄時,如果沒有指定scope,project或者domain,獲取的臨時token沒有任何權限,不能查詢project或者catalog)。

  2. alice通過臨時token獲取自己的所有的project列表。

  3. alice選定一個project,然后指定project重新登錄,獲取一個正式的token,同時獲得服務列表的endpoint,用戶選定一個endpoint,在HTTP消息頭中攜帶token,然后發送請求(如果用戶知道project name或者project id可以直接第3步登錄)。

  4. 消息到達endpoint之后,由服務端(nova)的keystone中間件(pipeline中的filterauthtoken)向keystone發送一個驗證token的請求。(token類型:uuid需要在keystone驗證token,pki類型的token本身是包含用戶詳細信息的加密串,可以在服務端完成驗證)

  5. keystone驗證token成功之后,將token對應用戶的詳細信息,例如:role,username,userid等,返回給服務端(nova)。

  6. 服務端(nova)完成請求,例如:創建虛擬機。

服務端返回請求結果給alice。



Glance概述

glanceopenstack項目中負責鏡像管理的模塊,其功能包括虛擬機鏡像的查找、注冊和檢索等操作。

glance提供restful api可以查詢虛擬機鏡像的metadata,并且可以獲得鏡像

通過glance,虛擬機鏡像可以被存儲到多種存儲上,比如簡單的文件存儲或者對象存儲

 

glanceOpenstack中的位置:

openstack概述

Glance基本概念:

p_w_picpath identifiers:就是p_w_picpath URI,格式:<GlanceServer Location>/p_w_picpaths/<ID>全局唯一

Image status

queued:鏡像ID已經被保留,鏡像的metadata已經被寫到數據庫中,但鏡像還沒有上傳

saving:鏡像正在被上傳

active:鏡像可以使用了

killed:鏡像損壞或者不可用

deleted:鏡像被刪除

Disk format

raw:raw不是一種真正的磁盤格式,而是代表虛擬機所使用的原始鏡像;它并不存儲元數據,因此可以作為保證虛擬機兼容性的候選方案,然而也正因為它不存儲元數據,因此不能支持某些高級特性,比如快照和壓縮等。所以raw性能較好,如果初始創建的虛擬磁盤是10GB,就在文件系統占10G的存儲空間。

vhd:vmware,xen,microsoft,virtualbox支持的格式

vmdk:common format 開源社區通用的,規范化的磁盤格式

vdi:virtualbox,qemu emulator這兩類hypervisor支持的格式

iso: optical disc光盤鏡像,主要用來做歸檔之用。

qcow2:qemu emulator主要用于qemu類型的虛擬機上,特點在于虛擬磁盤大小是動態擴展,如果初始創建的虛擬磁盤大小是10G,但在文件系統不會占10G空間,用戶寫入多少就占多少空間。即隨著實際的使用空間,虛擬磁盤的物理使用空間會動態變化,但性能比起raw格式會差一些,但qcow2格式支持對虛擬機做快照。

aki:Amazon kernel p_w_picpath

ari:Amazon ramdisk p_w_picpath

ami:Amazone machine p_w_picpath

Container format

上文中提到了磁盤的格式,但是若要創建一個虛擬機不能僅僅是定義磁盤格式,還要去定義虛擬機使用了多少個CPU,內存是多少,所支持的操作系統的架構是什么樣的等等元數據信息,Container format可以使用的選項有:

Bare

ovf

aki

ami

ari

p_w_picpath-create命令至少要接收三個參數:--name 、--container_format、--disk_format。其中--disk_format用于指明磁盤鏡像文件的格式,包括raw,qcow2,vhd,vmdk,iso,vdi,aki,ari,ami等。--container_format用于表明鏡像文件是否包含了虛擬機的元數據信息,然而,目前compute服務并未使用此信息,因此,在不確定的情況下可以將其指定為bare,而常用的格式主要有bare(沒有container或元數據信息)、ovf、aki、ariami幾種。

Glance的基本架構

openstack概述

Glance API:對外提供鏡像接口服務,包括鏡像的上傳和下載,更改信息以及虛擬機、云硬盤快照管理等接口服務。

Glance Registry(注冊服務):存儲鏡像元數據信息與數據庫交互實現鏡像基礎信息存儲

store adapter(存儲適配器):鏡像本身的存儲,提供多種存儲適配,支持亞馬遜云存儲S3(Simple Storage Service簡單存儲服務),openstack自由的swift(對象存儲)以及常用的文件存儲系統,當然也可以自行開發拓展到其他存儲上。

store-Adapter

S3

Swift

Filesystem:默認后端存儲

RBD:CephRandos blockdevice(RBD)

HTTP:通過httpinternet上讀取可用的虛擬機鏡像。

其他分布式存儲,比如sheepdog

 


Nova概述

Nova是什么?

         openstack是由RackspaceNASA共同開發的云計算平臺,類似于Amazon EC2S3的云基礎架構服務,novaopenstack中提供計算服務。nova服務由多個組件共同組成,這些組件用于提供API,Compute核心組件、網絡功能、控制臺接口,命令行客戶端及其他組件

novaopenstack中的位置

openstack概述

nova的架構:

openstack概述

Compute服務有多個組件共同組成,這些組件用于提供API,Compute核心組件、網絡功能、控制臺接口,命令行客戶端及其他組件

核心組件:

  • nova-api:接收并響應終端用戶對compute api接口調用的服務,除了支持openstack compute API還兼容amazon ec2 api以及專用于特權用戶執行管理工作的admin API。另外nova-api還用于管理instance,以及強制生效指定的策略等。

  • Nova-api-metadata服務:接收并響應有instance發起的metadata調用請求,僅用于nova-networkmulti-host模型中。

  • nova-compute:主要功能是借助于Hypervisorapi(KVM,QEMU,Vmware api)啟動及終止虛擬機實例的。主要作用就是在對應的Hypervisor中啟動或停止虛擬機的進程,但是他的工作過程主要是從隊列中接收操作請求并執行相應的操作,如啟動虛擬機操作,在數據庫中更新其虛擬機的狀態等等。

  • nova-scheduler: Nova-scheduler進程:compute中最簡單的組件,負責從隊列中取出一個instance的請求并決定由哪個compute server來運行之。

  • nova-conductor:是一個模塊,位于nova-compute和數據庫的中間層,用來避免多個nova-compute與數據庫直接進行交互,導致數據庫直接暴漏給nova-compute的。所以nova-compute啟動虛擬機實例完成以后,對于更新數據庫狀態的請求操作不是直接由nova-compute向數據庫發起的,而是扔回到對列中,再在由Nova-conductor取回之后執行相關更新操作。

網絡功能

  • Nova-network守護進程:類似于nova-compute,它負責從隊列取出網絡相關的任務并執行相關的操作,包括設定橋接接口及修改iptables規則等。不過,此功能已經由openstack中專用的組件neutron來實現。

  • Nova-dhcpbridge腳本:通過dnsmasqdhcp-script來跟蹤IP地址租約并記錄與數據庫中,目前已經由專門的服務組件neutron來實現。

控制臺接口:控制臺接口的作用是,當我們在openstack中啟動了虛擬機實例以后,這些實例有可能運行在不同的nova-compute節點(計算節點)上,用戶連接openstack訪問虛擬機實例時,尤其是在沒有配置網絡接口地址,也不知道在那一臺計算節點,用戶是無法連接到虛擬機實例的,此時只能通過控制臺實現。

openstack中每一個虛擬機實例啟動之后,可以監聽在一個VNC的接口上,當用戶使用openstackdashboard圖形界面接口中可以對虛擬機進行啟動,停止,網絡相關的配置,而在這個接口中基于python web打開了一個VNC的客戶端工具,VNC的客戶端工具本身就支持基于瀏覽器遠程瀏覽,此時虛擬機是不需要配置IP地址,只需通過VNC協議基于瀏覽器打開控制臺的方式連接虛擬機。

nova-consoleauth:認證由consoleproxies(控制臺代理)傳入的用戶認證token

nova-novncproxy:向經由vnc接口連入各instance的請求提供代理服務,支持基于瀏覽器的

Nova-x***vncroxy守護進程:向經由vnc接口連入個instance的請求提供代理服務,支持基于專為openstack設計的java客戶端     接口

nova-cert:管理x509格式的證書。

Client:

  • nova-client:向nova-api發送請求的client

  • nova-manage:管理員控制命令,查看和管理包括服務進程,虛擬機,物理主機,套餐,網絡,存儲等

其他組件:

  • QueueAMQP:在各進程間傳遞消息的消息隊列服務,支持rabbitmq,apache qpid以及zeromq

  • Sql database:  為云基礎架構存儲構建及運行時的數據,包括可用的實例類型,運行中的實例,可用的網絡等信息。理論上,openstack可支持任何SQL類型的數據庫管理系統,但實際用的最多是Sqllite,Mysql,Postgresql。

 

nova內部組件的交互:

為了使得讓調用者調用發出請求之后,能立即返回,當被調用者處理結束之后又能通知給調用者,在調用者和被調用者之間需要一個messaging broker(消息代理)負責完成,messaging broker主要是用來實現消息傳遞及消息存儲隊列,我們可以把這個消息傳遞的服務安裝一個獨立的服務器上面,也可以和控制節點一起部署,當一個調用者需要調用其他主機提供的服務時,調用者只需將請求扔給消息隊列服務器,消息隊列服務器也能夠知道哪些主機能提供相應的服務,所以會把相應的請求在扔給提供服務的主機,當提供服務的主機處理完之后將結果扔回消息隊列中,隊列服務器將結果返回給請求者。但是很多時候,消息隊列的工作機制是這樣的,那些能夠提供服務的主機為了盡早知道有哪些與自己相關的請求需要進行服務,可以進行訂閱與自己相關的消息,這種訂閱服務意味著自行向隊列注冊并監聽某一個隊列(或者可以認為自己偵聽某一類的消息,一旦有相應的消息扔到隊列中,訂閱者會立即獲得相應的消息,并提供相應的服務),而對于發送請求的我們通常稱之為消息的生產者,也叫消息的發布者。

openstack中新建云主機的流程

openstack概述

虛擬機啟動過程如下:

  1. 界面或命令行通過RESTful APIkeystone獲取認證信息。

  2. keystone通過用戶請求認證信息,并生成auth-token返回給對應的認證請求。

  3. 界面或命令行通過RESTful APInova-api發送一個boot instance的請求(攜帶auth-token)。

  4. nova-api接受請求后向keystone發送認證請求,查看token是否為有效用戶和token。

  5. keystone驗證token是否有效,如有效則返回有效的認證和對應的角色(注:有些操作需要有角色權限才能操作)。

  6. 通過認證后nova-api和數據庫通訊。

  7. 初始化新建虛擬機的數據庫記錄。

  8. nova-api通過rpc.callnova-scheduler請求是否有創建虛擬機的資源(HostID)。

  9. nova-scheduler進程偵聽消息隊列,獲取nova-api的請求。

  10. nova-scheduler通過查詢nova數據庫中計算資源的情況,并通過調度算法計算符合虛擬機創建需要的主機。

  11. 對于有符合虛擬機創建的主機,nova-scheduler更新數據庫中虛擬機對應的物理主機信息。

  12. nova-scheduler通過rpc.castnova-compute發送對應的創建虛擬機請求的消息。

  13. nova-compute會從對應的消息隊列中獲取創建虛擬機請求的消息。

  14. nova-compute通過rpc.callnova-conductor請求獲取虛擬機消息。(Flavor

  15. nova-conductor從消息隊隊列中拿到nova-compute請求消息。

  16. nova-conductor根據消息查詢虛擬機對應的信息。

  17. nova-conductor從數據庫中獲得虛擬機對應信息。

  18. nova-conductor把虛擬機信息通過消息的方式發送到消息隊列中。

  19. nova-compute從對應的消息隊列中獲取虛擬機信息消息。

  20. nova-compute通過keystoneRESTfull API拿到認證的token,并通過HTTP請求glance-api獲取創建虛擬機所需要鏡像。

  21. glance-apikeystone認證token是否有效,并返回驗證結果。

  22. token驗證通過,nova-compute獲得虛擬機鏡像信息(URL)。

  23. nova-compute通過keystoneRESTfull API拿到認證ktoken,并通過HTTP請求neutron-server獲取創建虛擬機所需要的網絡信息。

  24. neutron-serverkeystone認證token是否有效,并返回驗證結果。

  25. token驗證通過,nova-compute獲得虛擬機網絡信息。

  26. nova-compute通過keystoneRESTfull API拿到認證的token,并通過HTTP請求cinder-api獲取創建虛擬機所需要的持久化存儲信息。

  27. cinder-apikeystone認證token是否有效,并返回驗證結果。

  28. token驗證通過,nova-compute獲得虛擬機持久化存儲信息。

  29. nova-compute根據instance的信息調用配置的虛擬化驅動來創建虛擬機。

 

nova通用部署模式,每個服務部署在單個服務器上

openstack概述

可用的部署模式

openstack概述

nova常見錯誤排查:

401認證錯誤

檢查用戶名和密碼以及tenant是否正確

檢查認證配置是否正確

409錯誤

nova服務是否正常運行

no valid host錯誤

查看是不是沒有可用的資源

網絡不通

DHCP、查路由、查openvswitch


網絡基礎概念

基礎概念:

  1. 交換機和路由器的區別有哪些:

工作層次不同,交換機工作在L2層,路由器工作在L3

數據轉發依據對象不同,交換機基于MAC轉發,路由器基于IP數據包轉發

解決的問題不同

交換機解決同網段通信,路由器解決多網段之間通信

openstack概述

linux中的路由表,其實就是使用軟件實現的路由器

openstack概述

  1. 混雜模式(promiscuous mode

  2. 2  接收所有經過設備的數據包

  3. 2  一般用于網絡抓包

  4. DHCP        

功能
統一為主機分配IP地址

好處:

降低了配置和部署設備時間

降低了發生配置錯誤的可能性

可以集中化管理設備的IP地址分配

DHCP過程:

openstack概述

linux中實現DHCP的實現

工具軟件:dnsmasq

openstack概述

網絡命名空間

獨享網絡資源

  • interface

  • iptables

  • router

LXC

  • 網絡隔離

  • 網絡overlay

下圖為使用了網絡命名空間和未使用網絡命名空間的示意圖

openstack概述

     疊加網絡:

一個數據包(或幀)封裝在另一個數據包內,被封裝的包轉發到隧道端點后在被解封裝

疊加網絡就是使用這種所謂“包內之包”的技術安全的將一個網絡隱藏在另一個網絡中,將網絡遷移到另一個端點的技術

疊加網絡的實現方式:

  • VLAN :L2 over L2

  • GRE:L3 over L3 (udp)

  • Vxlan: L2 over L3 (udp)

疊加網絡解決了運行問題:

數據中心網絡數量限制:

  • 1-4096VLAN 突破至1600VLAN

  • 物理網絡基礎設施限制

  • 不改變物理網絡的前提下變更vm網絡拓撲

  • vm遷移

  • 多租戶場景:支持IP地址重疊

VLAN虛擬局域網

  • 2層廣播隔離

  • 靈活的組網

  • 最多4096VLAN

直接在L2實現

openstack概述

通用路由封裝協議(GRE

  • 跨不同網絡實現二次IP通信

  • L3上面封裝L3

  • 封裝在IP報文中

點對點的隧道通信












向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女