為什要用雲?
一.簡單的說就是對資源更加合理的配置設定,使用,比如硬體的數量,帶寬等等這些,因為你不能機器買來不需要了再賣掉(當然也可以),帶寬跟機房簽合同得來一年的,中間不夠了也不能加,超了也不退錢
二.還有就是可以有一個可以統一管理的操作平台,可以快速的對基礎設施進行建設配置等等,友善了許多
雲計算是個什麼鬼?
資源可以循環利用的一個過程(PS:沒有虛拟化就沒有雲,是以這兩者沒什麼可比性)
現有雲模式(複制大神的):
一、IaaS:基礎設施即服務(個人比較習慣的):使用者通過網絡擷取虛機、存儲、網絡,然後使用者根據自己的需求操作擷取的資源
二、PaaS:平台即服務:将軟體研發平台作為一種服務, 如Eclipse/Java程式設計平台,服務商提供程式設計接口/運作平台等
三、SaaS:軟體即服務 :将軟體作為一種服務通過網絡提供給使用者,如web的電子郵件、HR系統、訂單管理系統、客戶關系系統等。使用者無需購買軟體,而是向提供商租用基于web的軟體,來管理企業經營活動
openstack的核心元件介紹(openstack就不多說, redhat推動的,很多雲都是基于其開發的,6個月一更新,現在是M版)
重要的:
一.Horizon(控制台),又名Dashboard
就是web展示界面操作平台,友善使用者互動的
二.Nova(計算)
負責建立,排程,銷毀雲主機
三.Neutron(網絡)
負責實作SDN
四.Swift(對象存儲)
目錄結構存儲資料
五.Cinder(塊存儲)
提供持久化塊存儲,即為雲主機提供附加雲盤
六.Glance(鏡像)
提供鏡像服務,裝機使用
七.Keystone(認證)
為通路openstack各元件提供認證和授權功能,認證通過後,提供一個服務清單(存放你有權通路的服務),可以通過該清單通路各個元件
不重要的:
八.Ceilometer(計費),很明顯自用的根本不需要這功能,而且所謂的監控其實根本也算不上什麼監控
監控性能,計費
九.Heat(編排),這個太高大上了,就目前階段正常企業還搞不定
自動化部署應用,自動化管理應用的整個生命周期.主要用于Paas (本來以為青雲現在的資源編排就是啊,用了以後看來還不是,隻是友善了點)
好,直接開大,先來個整體的流程(圖中有錯誤)

從這個圖我們可以明白每一個元件為建立一台vm都提供了什麼,其實就是上面各元件的功能的一個整合圖,這裡需要注意的就是每一步都需要去keystone去進行驗證,下圖有詳細的流程(每一步完成後去驗證的過程省略了)
登入界面或指令行通過RESTful API向keystone擷取認證資訊。
keystone通過使用者請求認證資訊,并生成auth-token傳回給對應的認證請求。
界面或指令行通過RESTful API向nova-api發送一個boot instance的請求(攜帶auth-token)。
nova-api接受請求後向keystone發送認證請求,檢視token是否為有效使用者和token。
keystone驗證token是否有效,如有效則傳回有效的認證和對應的角色(注:有些操作需要有角色權限才能操作)。
通過認證後nova-api和資料庫通訊。
初始化建立虛拟機的資料庫記錄。
nova-api通過rpc.call向nova-scheduler請求是否有建立虛拟機的資源(Host ID)。
nova-scheduler程序偵聽消息隊列,擷取nova-api的請求。
nova-scheduler通過查詢nova資料庫中計算資源的情況,并通過排程算法計算符合虛拟機建立需要的主機。
對于有符合虛拟機建立的主機,nova-scheduler更新資料庫中虛拟機對應的實體主機資訊。
nova-scheduler通過rpc.cast向nova-compute發送對應的建立虛拟機請求的消息。
nova-compute會從對應的消息隊列中擷取建立虛拟機請求的消息。
nova-compute通過rpc.call向nova-conductor請求擷取虛拟機消息。(Flavor)
nova-conductor從消息隊隊列中拿到nova-compute請求消息。
nova-conductor根據消息查詢虛拟機對應的資訊。
nova-conductor從資料庫中獲得虛拟機對應資訊。
nova-conductor把虛拟機資訊通過消息的方式發送到消息隊列中。
nova-compute從對應的消息隊列中擷取虛拟機資訊消息。
nova-compute通過keystone的RESTfull API拿到認證的token,并通過HTTP請求glance-api擷取建立虛拟機所需要鏡像。
glance-api向keystone認證token是否有效,并傳回驗證結果。
token驗證通過,nova-compute獲得虛拟機鏡像資訊(URL)。
nova-compute通過keystone的RESTfull API拿到認證k的token,并通過HTTP請求neutron-server擷取建立虛拟機所需要的網絡資訊。
neutron-server向keystone認證token是否有效,并傳回驗證結果。
token驗證通過,nova-compute獲得虛拟機網絡資訊。
nova-compute通過keystone的RESTfull API拿到認證的token,并通過HTTP請求cinder-api擷取建立虛拟機所需要的持久化存儲資訊。
cinder-api向keystone認證token是否有效,并傳回驗證結果。
token驗證通過,nova-compute獲得虛拟機持久化存儲資訊。
nova-compute根據instance的資訊調用配置的虛拟化驅動來建立虛拟機。
這裡面可以看出元件之間的通訊都是通過restapi實作的
害怕不...但是了解了這些你就可以出去裝逼了,然後細分每個元件的細節(說好的自己寫變成複制粘貼了....主要人家些太好了)
1.keystone
User:指使用Openstack service的使用者,可以是人、服務、系統,但凡使用了Openstack service的對象都可以稱為User。
Project(Tenant):可以了解為一個人、或服務所擁有的 資源集合 。在一個Project(Tenant)中可以包含多個User,每一個User都會根據權限的劃分來使用Project(Tenant)中的資源。比如通過Nova建立虛拟機時要指定到某個Project中,在Cinder建立卷也要指定到某個Project中。User通路Project的資源前,必須要與該Project關聯,并且指定User在Project下的Role。
Role:用于劃分權限。可以通過給User指定Role,使User獲得Role對應的操作權限。Keystone傳回給User的Token包含了Role清單,被通路的Services會判斷通路它的User和User提供的Token中所包含的Role。系統預設使用管理Role admin和成員Role _member_ 。
Policy:OpenStack對User的驗證除了OpenStack的身份驗證以外,還需要鑒别User對某個Service是否有通路權限。Policy機制就是用來控制User對Tenant中資源(包括Services)的操作權限。對于Keystone service來說,Policy就是一個JSON檔案,預設是/etc/keystone/policy.json。通過配置這個檔案,Keystone Service實作了對User基于Role的權限管理。
Token:是一個字元串表示,作為通路資源的令牌。Token包含了在 指定範圍和有效時間内 可以被通路的資源。EG. 在Nova中一個tenant可以是一些虛拟機,在Swift和Glance中一個tenant可以是一些鏡像存儲,在Network中一個tenant可以是一些網絡資源。Token一般被User持有。
Credentials:用于确認使用者身份的憑證
Authentication:确定使用者身份的過程
Service:Openstack service,即Openstack中運作的元件服務。
Endpoint:一個可以通過網絡來通路和定位某個Openstack service的位址,通常是一個URL。比如,當Nova需要通路Glance服務去擷取image 時,Nova通過通路Keystone拿到Glance的endpoint,然後通過通路該endpoint去擷取Glance服務。我們可以通過Endpoint的region屬性去定義多個region。Endpoint 該使用對象分為三類:
admin url –> 給admin使用者使用,Post:35357
internal url –> OpenStack内部服務使用來跟别的服務通信,Port:5000
public url –> 其它使用者可以通路的位址,Post:5000
建立完service後建立API EndPoint. 在openstack中,每一個service都有三種end points. Admin, public, internal。 Admin是用作管理用途的,如它能夠修改user/tenant(project)。 public 是讓客戶調用的,比如可以部署在外網上讓客戶可以管理自己的雲。internal是openstack内部調用的。三種endpoints 在網絡上開放的權限一般也不同。Admin通常隻能對内網開放,public通常可以對外網開放internal通常隻能對安裝有openstack對服務的機器開放。
一個執行個體:
使用者alice登入keystone系統(password或者token的方式),擷取一個臨時的token和catalog服務目錄(v3版本登入時,如果沒有指定scope,project或者domain,擷取的臨時token沒有任何權限,不能查詢project或者catalog)。
alice通過臨時token擷取自己的所有的project清單。
alice標明一個project,然後指定project重新登入,擷取一個正式的token,同時獲得服務清單的endpoint,使用者標明一個endpoint,在HTTP消息頭中攜帶token,然後發送請求(如果使用者知道project name或者project id可以直接第3步登入)。
消息到達endpoint之後,由服務端(nova)的keystone中間件(pipeline中的filter:authtoken)向keystone發送一個驗證token的請求。(token類型:uuid需要在keystone驗證token,pki類型的token本身是包含使用者詳細資訊的加密串,可以在服務端完成驗證)
keystone驗證token成功之後,将token對應使用者的詳細資訊,例如:role,username,userid等,傳回給服務端(nova)。
服務端(nova)完成請求,例如:建立虛拟機。
服務端傳回請求結果給alice。
2.glance
3.nova與cinder
nova主要組成:
nova-api
nova-scheduler
nova-compute
nova-conductor
cinder主要組成:
cinder-api
cinder-scheduler
cinder-volume
cinder各元件功能:
Cinder-api 是 cinder 服務的 endpoint,提供 rest 接口,負責處理 client 請求,并将 RPC 請求發送至 cinder-scheduler 元件。
Cinder-scheduler 負責 cinder 請求排程,其核心部分就是 scheduler_driver, 作為 scheduler manager 的 driver,負責 cinder-volume 具體的排程處理,發送 cinder RPC 請求到選擇的 cinder-volume。
Cinder-volume 負責具體的 volume 請求處理,由不同後端存儲提供 volume 存儲空間。
4.neutron
neutron包含元件:
neutron-server
neutron-plugin
neutron-agent
neutron各元件功能介紹:
1.Neutron-server可以了解為一個專門用來接收Neutron REST API調用的伺服器,然後負責将不同的rest api分發到不同的neutron-plugin上。
2.Neutron-plugin可以了解為不同網絡功能實作的入口,各個廠商可以開發自己的plugin。Neutron-plugin接收neutron-server分發過來的REST API,向neutron database完成一些資訊的注冊,然後将具體要執行的業務操作和參數通知給自身對應的neutron agent。
3.Neutron-agent可以直覺地了解為neutron-plugin在裝置上的代理,接收相應的neutron-plugin通知的業務操作和參數,并轉換為具體的裝置級操作,以指導裝置的動作。當裝置本地發生問題時,neutron-agent會将情況通知給neutron-plugin。
4.Neutron database,顧名思義就是Neutron的資料庫,一些業務相關的參數都存在這裡。
5.Network provider,即為實際執行功能的網絡裝置,一般為虛拟交換機(OVS或者Linux Bridge)