OpenStack CloudAdministrator Guide 是一個面向雲管理員的手冊,主要作用是manage and troubleshoot an OpenStack cloud。讀它可以對各組件有一個整體上的把握。
這裏是第一章Get started with OpenStack的窮人版翻譯。。
Overview
服務簡述
OpenStack的服務從下面這張表中可以看得很清楚,包括了Heat和Ceilometer。
Table1 OpenStack Services
邏輯架構
Table2 OpenStack Logical Architecture
OpenStack 的模塊是由守護進程(Daomon),腳本(Script)以及命令行接口(Command-line interface(CLI))組成。守護進程在linux平臺表現爲服務;腳本用於虛擬環境的安裝及測試;CLI允許用戶通過易用的命令向OpenStack的服務提交API請求。
服務介紹
Compute service(Nova)
計算服務是雲計算的結構控制器,它構成了IaaS系統的主要部分。它的構成如下:
- API
- nova-api service.接受和響應終端用戶的計算API請求。支持,OpenStack Compute API, the Amazon EC2 API, 和一個特殊的AdminAPI 供特權用戶實現管理的操作。同時,初始化大部分 orchestration活動, 譬如啓動一臺虛擬機,實施某些策略。
- nova-api-metadata service.從虛擬機接受元數據請求。需要注意的是,通常情況下,此API僅在安裝nova-network的multi-host模式下使用。(在大便系統中,它屬於nova-api 包的一部分)
- Compute core
- nova-compute process.一個通過hypervisor API來創建和終止虛擬機實例的工作進程。譬如,XenServer/XCP的XenAPI, KVM or QEMU的libvirt, VMware的VMwareAPI,等等。進程的執行相當複雜,但是基本原理卻很簡單:從消息隊列中接受相應的動作(actions),然後在更新數據庫中的狀態的時候執行一系列的系統命令(比如啓動一臺KVM實例)Accept actions from the queue and perform a series of systemcommands, like launching a KVM instance, to carry them out while updating statein the database.
- nova-scheduler process.從概念上來講這是Compute中最簡單的一塊代碼了。從隊列中獲取一個虛擬機的請求然後決定它應該在哪個compute server host中響應(run)。
- nova-conductor module.協調nova-compute 和數據庫的交互。目的在於減少nova-compute對雲數據庫的直接訪問。由於該模塊是水平的伸縮,因此不要部署在任何nova-compute運行的節點上。
- Networking for VMs
- nova-network work daemon.類似於nova-compute,它從隊列中接受關於網絡的任務(比如修改橋接的接口,或是修改iptables的規則)並執行,從而實現對網絡的控制。這項功能正在被遷移到一個獨立的服務OpenStack Networking(Neutron),
- nova-dhcpbridge script.通過dnsmasq的dhcp-script跟蹤IP地址的租約並把它們記錄在數據庫中。它同樣正被遷移到Neutron中。Neutron提供了一個不同的腳本。
- Console interface
- nova-consoleauth daemon.認證控制檯代理提供給用戶的令牌。這個服務必須運行在控制檯代理才能工作。Many proxies of either type can be run against a singlenovaconsoleauthservice in a cluster configuration
- nova-novncproxy daemon.通過VNC連接來提供一個訪問運行的虛擬機的代理。支持基於瀏覽器的novnc 客戶端。
- nova-console daemon.在G版被棄用,由下面一個進程替代。
- nova-xvpnvncproxy daemon.通過VNC連接來訪問運行狀態的虛擬機的代理。支持一種專爲OpenStack設計的Java客戶端。
- nova-cert daemon.管理x509證書。
- Image management(EC2Scenario)
- nova-objectstore daemon.提供一個S3(Simple Storage Service, Amazon 存儲服務)接口供Glance(鏡像服務)來註冊鏡像。主要在支持euca2ools的情況下是使用。euca2ools 工具用S3的語法告知nova-objectstore,然後nova-objectstore把S3請求轉換爲Glance請求。
- uca2ools client.一組用來管理雲資源的命令。儘管它不是OpenStack的模塊,仍然可以通過配置nova-api 來支持這個EC2的接口。
- Command-line clients and otherinterfaces
- nova client.允許用戶以租戶管理者或者終端用戶的身份來提交命令。
- nova-manage client.允許雲管理員來提交明亮。
- Other components
- The queue.在守護進程中傳遞消息的核心。通常是由RabbitMQ來實現的,但也可以是任何AMPQ的隊列,如Apache Qpid 或者 Zero MQ。
- SQL database.爲雲基礎設施存儲大部分構建時以及運行時的信息,包括可以使用的虛擬機類型,正在使用的虛擬機,可用的網絡和項目。理論上來說,Nova支持任何SQL類型的數據庫,但是目前僅有MySQL和PostgreSQL是廣泛使用的,sqlite3僅在測試和開發工作中表現正常。
Storage concepts
Table3 Storage types
Object Storage service(Swift)
Swift是一個有高度伸縮以及可持續性的多租戶對象存儲系統,它通過RESTful HTTP API爲大量非結構化的數據以極低的開銷來提供存儲服務。
它包括以下部件:
- Proxy servers(swift-proxy-server).接受Object Storage API 和原生HTTP請求,如上傳文件,修改元數據和創建容器等。同時它也爲web瀏覽器提供文件和容器列表(?)。爲了提升性能,代理服務器可以任選使用哪種cache,不過通常情況下都部署在memcache下。
- Account servers(swift-account-server).管理定義了對象存儲服務的賬戶。
- Container servers(swift-container-server).管理使用了swift的容器或者文件夾的映射。
- Object servers(swift-object-server).管理實際的對象,例如存儲節點上的文件。
- A number of periodic processes.執行內部任務。主從同步服務(replication services)保證了集羣中的持續性和可用性。其他一些週期性進程包括審計,更新,以及獲取(auditors,updaters,reapers)。
可配置的WSGI中間件負責認證授權,通常是由Keystone負責。
Block Storage Service(Cinder)
塊存儲服務允許對卷(volumes),卷快照,卷類型的管理。它包括以下組件:
- cinder-api.接受API請求並根據一定的策略把它們轉發(routes)到cinder-volume來執行。
- cinder-volume.響應對塊存儲數據庫的讀寫請求來維護狀態(maintain state),通過一個消息隊列和其他進程(如cinder-scheduler)進行交互,並直接基於塊存儲提供硬件或軟件。它可以通過一個驅動架構來和大多數提供存儲的服務交互。
- cinder-scheduler daemon.像nova-scheduler一樣,選取最合適的提供塊存儲的節點來創建卷。
- Messaging queue.在cinder的進程中交互(routes)信息。
cinder爲nova提供虛擬機的卷。
Networking service overview(Neutron)
爲設備接口提供網絡連接即服務(network-connectivity-as-a-service),這類設備通常由OpenStack的服務——Compute所管理。它允許用戶創建和添加網絡接口。像OpenStack的其他服務一樣,模塊化可插拔的架構使得它可以高度的自由配置。這些插件整合了不同的網絡設備和軟件,因此,它的架構和部署會發生很大的變化。它包括瞭如下組件:
- neutron-server.接受API請求並轉發到合適的網絡插件中去執行。
- OpenStack Networking plug-ins and agents.綁定以及解綁端口,創建網絡和子網,並提供IP地址。這些插件和代理(agent)通常在特定的雲中依據代理商和使用的技術而定。目前Neutron支持(ships)的一些插件和代理有Cisco的虛擬和物理交換機,Nicira 的NVP產品,NEC OpenFlow 產品,Open vSwitch, Linux bridging,和Ryu網絡操作系統。
通用的代理是L3(layer 3),DHCP和插件代理。
- Messaging queue.大部分的Neutron安裝版本都利用了消息隊列在neutron-server和各種代理間傳遞消息,並利用一個數據庫來存儲特定插件的網絡狀態。
Dashboard(Horizon)
dashboard是一個模塊化的Django web應用,爲OpenStack的服務提供圖形化接口。它通常通過mod_wsgi部署在Apache下。你可以對代碼進行修改使他適合不同的站點。
從網絡架構的觀點來看,它必須可以被客戶和OpenStack的其他服務通過公用API訪問。而想要使用其他服務的管理員功能,它必須可以連接到管理員API端點(Admin API endpoints),因爲這個端點是不能被客戶直接訪問的。
Identity Service concepts(Keystone)
Identity服務進行如下操作:
- 用戶管理。跟蹤用戶及他們的權限。
- 服務目錄。提供可用的服務以及他們的API端點的目錄。
想要理解Keystone,必須理解一下概念:
- User
使用OpenStack雲服務的人,系統或服務的數字表象(賬號?)。Keystone負責驗證請求是否由所需要的用戶發出。用戶可以登錄並被授予令牌來使用資源。用戶可以直接被分配到某一租戶下,就像是本身就是租戶的一部分一樣。
- Credentials
僅能被某一用戶識別的表示他們身份的數據,就像Keystone中的用戶名和密碼,用戶名和API key,由Keystone提供的認證令牌等。
- Authentication
驗證一個用戶身份的動作。Keystone通過用戶提供的一系列證書(credentials)來驗證請求。
這些證書由用戶名密碼或者用戶名和API key進行初始化。Keystone響應這些證書請求,發給用戶一個認證的令牌,用戶在隨後的請求中使用此令牌即可。
- Token
一個用來訪問資源的隨機生成的比特序列。每個令牌都有一個起作用的資源的範圍。一個令牌可以在有限的時間內用於認證,也可以在任何時間被撤銷。
儘管在當前版本中(Havana)Keystone支持基於令牌的認證,但是它的主要作用在於在未來支持更多額外的協議。它的目的在於成爲一個重要的集成服務,而非一個負責存儲和管理身份的解決方案。
- Tenant
一組或單獨的資源和(或)標識對象的容器。(A container used to group or isolate resources and/or identityobjects.)依據服務的使用者不同,一個租戶可以對應一個用戶(customer),賬號(account),組織(organization),或者項目(project).
- Service
類似於Compute(Nova),Object Storage(Swift),Image Service(Glance)的OpenStack服務。提供一個或多個端點(endpoints)供用戶使用資源或進行操作。
- Endpoint
一個可以在網絡上進行訪問的地址,通常在使用服務的時候是以URL的形式表示。如果想在模板上進行擴展,你可以創建一個表示所有可以跨區(regions)使用的服務的端點模板,
- Role
一個允許用戶進行一系列指定操作的身份(personality)。一個角色包括一系列權利以及權限。一個擁有指定角色的用戶等於繼承了該角色的權利以及權限。
在Keystone中,授予一個用戶的令牌包括了用戶擁有的角色列表。用戶請求哪個服務取決於怎樣翻譯(interpret)用戶擁有的角色以及每個角色可以訪問哪些操作以及資源。
下圖表示了Keystone的工作流程:
Figure1 The Keystone Identity Manager
Image Service overview(Glance)
Glance包括如下組件:
- Glance-api.
接受鏡像API請求來搜索(discovery),檢索(retrieval)和存儲(storage)鏡像。
- Glance-registry.
存儲,處理,檢索鏡像的元數據,例如大小,類型等。
- Database.
存儲鏡像元數據。你可以根據自己的喜好選擇合適的數據庫,大部分人使用MySQL和SQlite。
- Storage repository for image files.
在邏輯結構圖中,Glance是一個鏡像倉庫。但是你也可以配置一個不同的倉庫。Glance支持普通的文件系統,RADOS塊設備,Amazon S3和HTTP。一些系統僅能提供只讀數據的功能。
在Glance中有一些週期性的進程用來支持緩存(caching)。主從同步服務(replication services)保證了集羣中的持續性和可用性。其他一些週期性進程包括審計,更新,以及獲取(auditors,updaters,reapers)。
在概念架構圖上可以看到,Glance是整個IaaS層中的中心。它接受終端用戶或者Nova處理鏡像或鏡像元數據的API請求,然後可以把磁盤文件存儲到Swift中。
The Telemetry Service(Ceilometer)
OpenStackTelemetry 服務:
- 高效的收集CPU和網絡開銷的計量數據。
- 通過監控服務發出的通知或者輪詢基礎設施來收集數據。
- 可以配置收集數據的類型來滿足不同操作的需求。通過REST API來獲取和插入數據。
- 通過額外的插件擴展框架來收集客戶的使用數據。
- 生成有簽名的計量信息,這些信息是不可否認的。(Produces signed metering messages that cannot be repudiated)
系統包括如下基本組件:
- A compute agent(ceilometer-agent-compute).
運行在每一個compute節點上並輪詢資源使用的統計數據。在未來可能有其他類型的agents,但目前我們專注於創建compute agent。
- A central agent(ceilometer-agent-central).
在中樞管理服務器上運行,輪詢那些與虛擬機或計算節點獨立(not tied)的資源利用的統計數據。
- A collector(ceilometer-collector).
運行在一個或多箇中樞管理服務器上來監控消息隊列(通知和來自agent的計量數據)。通知消息被處理後被轉換爲計量消息並使用恰當的主題發回給消息總線。Telemetry消息不做修改直接寫入數據庫。
- An alarm notifier(ceilometer-alarm-notifier).
運行在一個或多箇中樞管理服務器,並基於採集的樣本進行評估所得到的一個閾值來設定警報。
- A data store.
一個支持併發讀寫數據的數據庫,其中寫入數據來自一個或多個收集計量數據的虛擬機,讀數據是從API server讀。
- An API server(ceilometer-api).
運行在一個或多箇中樞管理服務器來提供數據庫中的數據。
這些服務使用標準OpenStack消息總線進行交互。只有collector和API server有權訪問數據庫。
Orchestration service overview(Heat)
Heat對雲應用提供了基於模板編排(orchestration……無力)管理,通過OpenStack的API調用來生成運行的雲應用。它把OpenStack的其它核心組件整合到了一個單文件模板系統。這套模板允許你創建大部分OpenStack資源類型,比如虛擬機,浮動IP,卷,安全組和用戶等。它同時提供了很多更高級的功能,比如虛擬機的高可用性,虛擬機動態伸縮以及嵌套棧等。通過對OpenStack核心組件的緊密整合,所有OpenStack的核心組件可以得到一個更大的用戶羣(a larger user base)。
這項服務允許部署人員直接整合該服務或者可以自定義插件。
Heat包括如下組件:
- heat command-line client.
一個命令行界面,可以和heat-api交互來調用 AWS CloudFormation(就是Amazon的模板) APIs. 終端開發者同樣可以直接調用Orchestration REST API。
- heat-api component.
提供一個OpenStack原生(OpenStack-native)REST API來處理API請求,並使用RPC把請求轉發到heat-engine。
- heat-api-cfn component.
提供一個和AWS CloudFormation兼容的AWS Query API,並使用RPC把請求轉發到heat-engine。
- heat-engine.
整理模板的啓動並把事件(events)發回給API請求者。