Openstack架構及基本概念理解

簡介

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

版本歷史

havana.png?version=1&modificationDate=13

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

架構

openstack.png?version=1&modificationDate

主要服務

服務 項目名稱 描述
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 自動化部署服務

概念架構

conceptual%20architecture.png?version=1&

邏輯架構

logical_architecture.png?version=1&modif

簡單架構

basic_architecture.png?version=1&modific

Identity Service

介紹:

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 具體的一種服務,好比吃燒烤,打羽毛球


服務處理流程:

keystone_process_flow2.png?version=1&mod


Image Service

包含的組件:

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)中。

Compute Service

包含的組件:

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交互實現用戶和管理員的界面訪問。

邏輯架構:

nova_logic_architecture.png?version=1&mo

Block Storage Service

功能:

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:在各程序間路由消息

邏輯架構:

cinder_logical_architecture.png?version=

Object Storage Service

功能:

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(即帳戶/容器/對象),每層節點數均沒有限制,能夠任意擴展。

這裏的帳戶和我的帳戶不是一個概念,可理解爲租戶,用來作頂層的隔離機制,能夠被多個我的帳戶所共同使用;

容器表明封裝一組對象,相似文件夾或目錄;葉子節點表明對象,由元數據和內容兩部分組成

swift_data_structure.png?version=1&modif

系統架構:

swift_architecture.png?version=1&modific


Orchestration Service

功能:

提供了一種經過模版定義的協同部署方式,實現雲基礎設施軟件運行環境的自動化部署

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)

Telemetry Service

功能:

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和消息隊列組成。

ceilometer_architecture.png?version=1&mo

相關文章
相關標籤/搜索