當前位置:
首頁 > 科技 > OpenStack技術和實戰詳解

OpenStack技術和實戰詳解

談到OpenStack,大家對其多多少少都有所了解,其常見的服務包括Nova、Swift、Glance、Keystone、Neutron、Cinder、Horizon、Ceilometer、Heat、Trove、TripleO、Sahara等等。

Nova:提供Compute(計算服務),主要的作用是管理虛擬機實例的整個生命周期,根據用戶需求來提供虛擬服務。

Glance:提供Image Service(鏡像管理服務),鏡像伺服器是一套虛擬機鏡像發現、註冊、檢索系統,但它不提供鏡像文件的存儲功能。

Swift:提供Object Storage(對象存儲服務),存儲數量到一定級別,而且是非結構化數據,通常才會有使用對象存儲的需求。鏡像文件通常存儲在Swift中。

其中Ceilometer為計量服務,能把OpenStack內部發生的幾乎所有的事件都收集起來,然後為計費和監控以及其他服務提供數據支持,今天我們主要談的也是Ceilometer服務。

Ceilometer模塊主要負責OpenStack的「計量」、「監控」以及「告警」功能。

計量主要負責和計費相關的指標度量採集和存儲;

監控主要負責和非計費相關的指標、狀態的採集和存儲;

告警可分為性能相關的告警分析產生以及通過插件在openstack各服務運行時及時產生的故障。

Ceilometer功能是以資料庫和消息隊列為中心的數據採集、訂閱分析和存儲、分發一系列活動。Ceilometer主要組成部分有:

ceilometer-api:向用戶展示聚合後的數據

ceilometer-polling:使用polling plug-in去獲取數據

ceilometer-agent-central:調用不同的組件的API以監控某種資源是否存在(L版本後不使用)

ceilometer-agent-compute:監控Hypervisor或者libvirt以獲取實例的性能數據,並通過MQ發布出去(L版本後不再使用)

ceilometer-agent-ipmi:利用伺服器上的IPMI感測器獲取物理機信息(L版本後不再使用)

ceilometer-agent-notification:從MQ獲取其他組件的消息

ceilometer-collector:從MQ獲取ceilometer其他agent的信息,並將這些數據分配到不同的資料庫。

ceilometer-alarm-X:告警相關

除了ceilometer-agent-compute和ceilometer-agent-ipmi,其他組件都要部署在一個或者多個控制節點,ceilometer高度依賴MQ服務,包括組件之間和組件內部。Ceilometer的主要功能是數據收集和數據處理。

Ceilometer的數據採集方式主要分為Poll和Push方式兩種。

其中Push方式主要採集為OpenStack中各個組件模塊中無法定時主動獲取的事件消息,例如,虛擬機的創建,鏡像的上傳等等。該種方式的消息的採集依賴各個組件在事件發生時,依賴Ceilometer提供的消息機制將事件消息上報至消息隊列當中。

然後由Ceilometer-Collector中的notification-agent收集消息隊列中的事件消息,然後交由指定的Pipeline將消息轉換為指定的採樣數據(Samples),轉換之後的採樣數據會被重新發送至消息隊列當中,然後由Collector收集處理並存入資料庫當中(MongoDB)。主要架構如下圖:

Poll方式主要採集OpenStack中的各個組件的統計數據和計算節點中的實時數據(該數據也是可以被隨時統計獲取的)。

在Controller節點上,Poll方式主要是啟動相應的輪詢進程(Pollsters),依靠輪詢進程定期調用組件模塊的APIs獲取各個組件的數據信息。然後將數據交由Pipeline進行處理,最後由Collector處理存儲。此過程與上述Push方式一致。

在Compute節點上,Poll方式也是啟動相應的輪詢進程(Pollsters),依靠輪詢進程定期查詢相應的信息,只是在數據採集方式上,採用虛擬機的相關驅動獲取虛擬機的信息,目前主要的部署方案都是採用KVM-QEMU實現虛擬化,因此,底層信息獲取上,採用的為LibVirt操縱虛擬機,同時也是通過LibVirt獲取虛擬機的相關信息。當數據被採集之後,其之後的處理流程與上述兩種方式都是一致的。

前面的數據採集工作完成之後,採集來的數據會交由Pipeline進行數據處理,Pipeline主要實現的是一個數據處理鏈的功能。Pipeline會根據不同的配置將0個或一個或多個Transformers組裝成為一條數據處理鏈,在這條數據處理鏈的末端,會被裝配一個Publisher。

當數據進入這條數據處理鏈後,會被Transformers加工處理,然後由Publisher發送至消息隊列當中,由Collector收集。

Collector會時刻監聽著消息隊列,從消息隊列中獲取監控數據,然後將數據存入MongoDB中進行持久化。

OpenStack不但是開源私有雲的實際標準,而且已經廣泛的應用在各個行業,包括社區版和廠商企業版。

在OpenStack大規模部署,特性豐富,並逐步走向商用的過程中,有很多經驗和方法論值得參考和借鑒。筆者基於實戰和網路資料,對OpenStack及相關知識進行了梳理,整理成書(OpenStack技術和實戰詳解),供學習者學習和參考。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 架構師技術聯盟 的精彩文章:

Gartner 2018新技術成熟度曲線
談談OpenStack的八年之癢

TAG:架構師技術聯盟 |