openstack最先由美國國家航空航天局NASA研發的Nova和Rackspace研發的swift組成,後來以apache許可證受權,旨在爲公共及私有云平臺建設,openstack主要用來爲企業內部實現相似於Amazon EC2和S3的雲基礎架構服務(Iaas),每6個月更新一次,基本與ubuntu同步,命名是以A-Z做爲首字母來的web
服務名:Dashboard算法
項目名:Horizon數據庫
功能:web方式管理雲平臺,建雲主機,分配網絡,配安全組,加雲盤apache
服務名:計算ubuntu
項目名:Nova(能夠支持各類各樣的虛擬化技術,vmware\kvm等)swift
功能:負責響應虛擬機建立請求、調度、銷燬雲主機。api
服務名:網絡安全
項目名:Neutron(實現網絡虛擬化)服務器
功能:實現SDN(軟件定義網絡),提供一整套API,用戶能夠基於該API實現本身定義專屬網絡,不一樣廠商能夠基於此API提供本身的產品實現restful
服務名:認證服務
項目名:Keystone
功能:爲訪問openstack各組件提供認證和受權功能,認證經過後,提供一個服務列表(存放你有權訪問的服務),能夠經過該列表訪問各個組件。
服務名:鏡像服務
項目名:Glance
功能:爲雲主機安裝操做系統提供不一樣的鏡像選擇
服務名:計費服務
項目名:Ceilometer(監控)
功能:收集雲平臺資源使用數據,用來計費或者性能監控
如今主流的存儲主要是三種:文件存儲、塊存儲、對象存儲
文件存儲
至關於一個大的文件夾,典型是FTP\NFS服務器,以文件做爲傳輸協議。Ext三、Ext四、NTFS是本地文件存儲,NFS、CIFS是網絡文件存儲(NAS存儲);最明顯的特徵是支持POSIX的文件訪問接口:open、read、write、seek、close等;優勢:便於擴展&共享;缺點:讀寫速度慢
塊存儲
在物理級別的最小讀寫單位是扇區。塊存儲能夠認爲是裸盤,最多包一層邏輯卷(LVM);常見的DAS、FC-SAN、IP-SAN都是塊存儲,塊存儲最明顯的特徵就是不能被操做系統直接讀寫,須要格式化爲指定的文件系統(Ext三、Ext四、NTFS)後才能夠訪問。優勢:讀寫快(帶寬&IOPS);缺點:由於太底層了,不利於擴展
對象存儲
將元數據獨立了出來,控制節點叫元數據服務器(服務器+對象存儲管理軟件),裏面主要負責存儲對象的屬性(主要是對象的數據被打散存放到了那幾臺分佈式服務器中的信息),而其餘負責存儲數據的分佈式服務器叫作OSD,主要負責存儲文件的數據部分
當用戶訪問對象,會先訪問元數據服務器,元數據服務器只負責反饋對象存儲在哪些OSD,假設反饋文件A存儲在B、C、D三臺OSD,那麼用戶就會再次直接訪問3臺OSD服務器去讀取數據
基於rest api的方式訪問,說穿了就是url地址
對象存儲和分佈式文件系統的表面區別:對象存儲支持的訪問接口基本都是restful接口、而分佈式文件系統提供的POSIX兼容的文件操做接口
服務名:對象存儲
項目名:Swift
功能:REST風格的接口和扁平的數據組織結構。RESTFUL HTTP API來保存和訪問任意非結構化數據,ring環的方式實現數據自動複製和高度能夠擴展架構,保證數據的高度容錯和可靠性
服務名:塊存儲
項目名:Cinder
功能:提供持久化塊存儲,即爲雲主機提供附加雲盤
服務名:編排服務
項目名:Heat
功能:自動化部署應用,自動化管理應用的整個生命週期.主要用於Paas
界面或命令行經過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的信息調用配置的虛擬化驅動來建立虛擬機