Openstack是一個經過數據中心(datacenter)控制大量的計算(compute)、存儲(storage)和網絡(networking)資源的雲操做系統;mysql
全部的資源均可以經過面板(dashboard)被系統管理員管理,同時也可受權用戶自由分配所需使用的資源。web
OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.sql
Revision Date | Summary of Changes |
---|---|
Oct 17, 2013數據庫 |
Havana release swift |
Apr 4, 2013api |
Grizzly release 瀏覽器 |
Sep 27, 2012安全 |
Folsom release 網絡 |
Apr 5, 2012架構 |
Essex release |
Sep 22, 2011 |
Diablo release |
Apr 15, 2011 | Cactus release |
Feb 3, 2011 | Bexar release |
Oct 21, 2010 | Austin release |
服務 | 項目名稱 | 描述 |
---|---|---|
Dashboard | Horizon | 用戶和管理員儀表盤 |
Compute | Nova | 控制器 |
Networking | Neutron | 安全虛擬網絡 |
Storage | ||
Object Storage | Swift | 對象存儲 |
Block Storage | Cinder | 塊存儲 |
Shared services | ||
Identify Service | Keystone | 身份驗證服務 |
Image Service | Glance | 虛擬機鏡像服務 |
Telemetry Service | Ceilometer | 監控及計費服務 |
Higher-level services | ||
Orchestration Service | Heat | 自動化部署服務 |
Keystone(OpenStack Identity Service)是OpenStack框架中,負責身份驗證、服務規則和服務令牌的功能, 它實現了OpenStack的Identity API。Keystone相似一個服務總線, 或者說是整個Openstack框架的註冊表, 其餘服務經過keystone來註冊其服務的Endpoint(服務訪問的URL),任何服務之間相互的調用, 須要通過Keystone的身份驗證, 來得到目標服務的Endpoint來找到目標服務。
用戶管理:跟蹤用戶及其權限;
服務目錄:提供帶API地址的可用服務的目錄
User:用戶,表明能夠經過keystone進行訪問的人或程序。Users經過認證信息(credentials,如密碼、API Keys等)進行驗證;
Tenant:租戶,它是各個服務中的一些能夠訪問的資源集合。例如,在Nova中一個tenant能夠是一些機器,在Swift和Glance中一個tenant能夠是一些鏡像存儲,在Neutron中一個tenant能夠是一些網絡資源。User默認的老是綁定到某些tenant上;
Role:角色,表明一組用戶能夠訪問的資源權限。(例如Nova中的虛擬機、Glance中的鏡像)Users能夠被添加到任意一個全局的或租戶內的角色中。在全局的role中,用戶的role權限做用於全部的租戶,便可以對全部的租戶執行role規定的權限;在租戶內的role中,用戶僅能在當前租戶內執行role規定的權限;
Credentials:證書,證實用戶身份的一段數據(Data)(如用戶名/密碼,用戶名/API key等);
Authentication:認證,驗證用戶身份的動做。
Token:令牌,相似於證書,但描述的是可訪問資源的權限;
Service:服務,如Nova、Glance、Swift等;
Endpoint:「端點」,能夠理解它是一個服務暴露出來的訪問點,若是須要訪問一個服務,則必須知道他的endpoint。
形象對比:
User | 住賓館的人 |
---|---|
Tenant | 賓館 |
Role | VIP 等級,VIP越高,享有越高的權限 |
Credentials | 開啓房間的鑰匙 |
Authentication | 賓館爲了拒毫不必要的人進出賓館,專門設置的機制,只有擁有鑰匙的人才能進出 |
Token | 也是一種鑰匙,有點特別 |
Service | 賓館能夠提供的服務類別,好比,飲食類,娛樂類 |
Endpoint | 具體的一種服務,好比吃燒烤,打羽毛球 |
glance-api:接受Image API調用,用以鏡像發現、檢索和存儲;
glance-registry:存儲、處理和檢索鏡像的元數據,包括大小(size)、類型(type)等;
Database:存儲鏡像元數據,大多部署使用MYSQL或SQLite;
Storage repository for p_w_picpath files:鏡像的存儲倉庫,支持普通文件系統、RADOS塊設備、Amazon S三、和HTTP等
接受來自終端用戶(end users)或計算組件(Compute components)對於鏡像或者鏡像元數據的API請求,並將鏡像文件存儲在Object Storage Service(Swift)中。
Service | Description |
---|---|
API | |
nova-api | 接受和響應終端用戶的compute API調用,也支持Amazon EC2 API、Admin API等;同時初始化大部分部署活動,如運行實例、執行規則等 |
nova-api-metadata | 接受來自實例(Instance)的元數據請求,只在多主機(multi-host)並運行nova-network下運行 |
Compute core | |
nova-compute | 一個worker dameon,經過hypervisor API建立或終止虛擬機實例,如XenAPI對應XenServer/XCP,libvirt對應KVM或QEMU,VMwareAPI對應VMware等 |
nova-scheduler | 調度器,從消息隊列中獲取虛擬機實例任務(Task),並分發至compute server主機運行 |
nova-conductor | 引導器,居中調解nova-compute和database間的交互,防止nova-compute直接訪問數據庫 |
Networking for VMs | |
nova-network | 一個worker daemon,從消息隊列中接受網絡任務(task),並執行任務以配置網絡,如創建網橋接口,改變iptables規則等; 此服務已獨立成爲了Openstack Networking(Neutron)服務 |
nova-dhcpbridge | 一個腳本,追蹤IP地址的租約期限(leases),並將其記錄在數據庫中; 此功能已遷移至Openstack Networking(Neutron)服務中 |
Console interface | |
nova-consoleauth | 驗證VNC客戶端用戶的token |
nova-novncproxy | 一個proxy,可經過VNC鏈接訪問運行中的實例,支持基於瀏覽器的novnc客戶端 |
nova-console | 在Grizzly版本中移除,以nova-x***vncproxy代替 |
nova-x***vncproxy | 一個proxy,可經過VNC鏈接訪問運行中的實例,支持特定的Java客戶端 |
nova-cert | 管理x509證書 |
Image management(EC2 scenario) | |
nova-objectstore | 提供用以在Image Service中註冊鏡像的S3接口,主要用於支持euca2ools的安裝 |
euca2ools | 管理雲資源(cloud resources)的一組解釋命令的集合 |
Command-line clients and other interfaces | |
nova client | 容許用戶做爲Tenant管理員或終端用戶提交命令 |
nova-manage | 容許雲管理員(cloud Administrators)提交命令 |
Other components | |
The queue | 在各daemon間傳輸消息的中心hub,如RabbitMQ、Apache Qpid或ZeroMQ等 |
SQL database | 存儲雲架構中大部分創建時(build-time)和運行時(runtime)的狀態,包括可用的實例類型、使用中的實例、可用的網絡和項目(projects)等; 如sqlite3 databases、MySQL和PostgreSQL等 |
做爲IaaS系統中主要的組成部分,Compute Service與Identity Service交互實現身份驗證,與Image Service 交互實現鏡像存取,與Dashboard交互實現用戶和管理員的界面訪問。
Block Storage Service用以管理卷(volume),卷快照(volume snapshots)和卷類型(volume types)。
cinder-api:接受API請求,並將請求路由(route)至cinder-volume中;
cinder-volume:運行在存儲節點上,管理存儲空間;可經過驅動的形式(driver architecture)與多樣的存儲提供者交互,如本地存儲、EMC、Netapp等;
cinder-scheduler: 相似於nova-scheduler,以選擇需建立卷的最優的塊存儲提供者節點;
Messageing queue:在各程序間路由消息
Swift 構築在比較便宜的標準硬件存儲基礎設施之上,無需採用 RAID(磁盤冗餘陣列),
經過在軟件層面引入一致性散列技術和數據冗餘性,犧牲必定程度的數據一致性來達到高可用性和可伸縮性,
支持多租戶模式、容器和對象讀寫操做,適合解決互聯網的應用場景下非結構化數據存儲問題。
swift-proxy-server:代理器,接受Object Service API和原生的HTTP請求,以上傳文件、修改元數據和建立容器等;
swift-account-server:管理帳戶(accounts)
swift-container-server:管理容器(containers)的映射(mapping)
swift-object-server:管理存儲節點上的實際對象,如文件(files)
A number of periodic process:在大型數據存儲上執行一些事務任務,如複製(replication)、審計(auditor)、更新(updater)、(帳戶清理reaper)等
Swift 採用層次數據模型,共設三層邏輯結構:Account/Container/Object(即帳戶/容器/對象),每層節點數均沒有限制,能夠任意擴展。
這裏的帳戶和我的帳戶不是一個概念,可理解爲租戶,用來作頂層的隔離機制,能夠被多個我的帳戶所共同使用;
容器表明封裝一組對象,相似文件夾或目錄;葉子節點表明對象,由元數據和內容兩部分組成
提供了一種經過模版定義的協同部署方式,實現雲基礎設施軟件運行環境的自動化部署
Heat對於虛擬機內部操做的控制是須要利用heat-cfntools這個工具。其實質是,經過向實例鏡像中注入heat-cfntools,
而後實例利用heat-cfntools同heat交互,進而實現相關的對於實例內部的相關操做(如安裝和配置mysql數據庫等)。
heat command-line:與heat-api通訊以運行AWS CloudFormatiom APIs,終端用戶也可直接使用Orchestration REST API;
heat-api:提供Openstack原生的 REST API,並將API請求經過RPC傳遞給heat-engine;
heat-api-cfn:提供與AWS CloudFormation兼容的AWS 查詢API,並將API請求經過RPC傳遞給heat-engine;
heat-engine:執行模板(templates)的部署,並返回事件(event)
Ceilometer是OpenStack裏數據採集(監控數據、計費數據)的惟一基礎設施,採集到的數據提供給監控、計費、面板等項目使用。
ceilometer-agent-compute :用來收集計算節點上的信息,該Agent經過Stevedore管理了一組pollster插件, 分別用來獲取虛擬機的CPU, Disk IO, Network IO, Instance這些信息;
ceilometer-agent-central :運行在控制節點上,主要收集其它服務(Image, Volume, Objects, Network)等的信息;
ceilometer-collector :主要做用是監聽Message Bus,將收到的消息以及相應的數據寫入到數據庫中;另外一個做用是對收到的其它服務發來的notification消息作本地化處理,而後再從新發送到 Message Bus中去,隨後再被其收集;
ceilometer-alarm-notifier :運行在控制節點上,容許設置報警;
data store:處理併發的來自多個collector的寫操做和來自API server的讀操做;
API server(ceilometer-api) :運行在控制節點上,提供對data store中數據的訪問;只有collector和API server有權限訪問data store。
Ceilometer項目主要由Agent,Collector,DataStore,API和消息隊列組成。