alamari項目開始于2013年夏天,創立它的初衷是開發一個Ceph管理平臺, Calamari對外提供了十分漂亮的web管理和監控界面,以及一套改進的REST API接口(不同于Ceph自身的REST API),在一定程度上簡化了Ceph的管理。最初Calamari是作為Inktank公司的Ceph企業級商業產品來銷售,紅帽今年5月30日收購Inktank后為了更好地推動Ceph的發展,對外宣布Calamari開源,秉承開源開放精神的紅帽著實又做了一件非常有意義的事情。本文將簡單剖析Calamari的架構和功能。
安裝
Calamari推薦使用vagrant + virtualbox的方式來build安裝包,然后在對應的操作系統中進行安裝,具體的安裝過程請參照Ceph Calamari : step-by-step(http://ceph.com/category/ceph-gui/)里邊有很詳細的安裝步驟。我使用的是Ubuntu13.10來創建Calamari的安裝包,build后的安裝包列表是:
calamari-clients_1.2.1.1-29-g3790c24_all.deb (calamar客戶端,WEB UI代碼)calamari-clients-build-output.tar(同calamari-clients_1.2.1.1-29-g3790c24_all.deb內容一樣,只是它解壓后可以在任何平臺上使用)calamari-repo-precise.tar.gz(安裝源,安裝calamari過程中依賴的包)calamari-server_1.2.1-56-gc09e8ed_amd64.deb(calamari服務端,它提供了calamari REST API,calamari 通過salt管理Ceph服務的cthulhu,以及一個calamari web的一個基本框架)diamond_3.4.67_all.deb(calamari監控客戶端)架構
下面Calamari的架構圖能幫助更好的理解它的組件,其中紅框部分為Calamari代碼實現的部分,非紅框部分為非Calamari實現的開源框架。
在Ceph server node安裝的組件有Diamond和Salt-minion。Diamond負責收集監控數據,它支持非常多的數據類型和metrics,通過查看源代碼,它支持90多種類型的數據;每一個類型的數據都是上圖中的一個collector,它除了收集Ceph本身的狀態信息,它還可以收集關鍵的資源使用情況和性能數據,包括CPU,內存,網絡,I / O負載和磁盤指標,而且還能收集很多流行軟件的性能指標,包括 Hadoop, Mongo, Kafka, MySQL, NetApp, RabbitMQ, Redis, and AWS S3等。Collector都是使用本地的命令行來收集數據,然后報告給Graphite。
Graphite不僅是一個企業級的監控工具, 還可以實時繪圖。carbon-cache是Python實現的高度可擴展的事件驅動的I/O架構的后端進程,它可以有效地跟大量的客戶端通信并且以較低的開銷處理大量的業務量。
Whisper跟RRDtool類似,提供數據庫開發庫給應用程序來操縱和檢索存儲在特殊格式的文件數據(時間數據點數據),Whisper最基本的操作是創建作出新的Whisper文件,更新寫入新的數據點到一個文件中,并獲取檢索的數據點
Graphite_web是用戶接口,用來生成圖片,用戶可以直接通過URL的方式訪問這些生成的圖片。
Calamari 使用了Saltstack讓Calamari Server和Ceph server node通信。Saltstack是一個開源的自動化運維管理工具,與Chef和Puppet功能類似。Salt-master發送指令給指定的Salt-minion來完成對Cpeh Cluster的管理工作;Salt-minion 在Ceph server node安裝后都會從master同步并安裝一個ceph.py文件,里面包含Ceph操作的API,它會調用librados或命令行來最終和Ceph Cluster通信。
calamari_rest提供Calamari REST API,詳細的接口請大家參照官方文檔。Ceph的REST API是一種低層次的接口,其中每個URL直接映射到等效的CEPH CLI;Calamari REST API提供了一個更高層次的接口,API的使用者可以習慣的使用GET/POST/PATCH方法來操作對象,而無需知道底層的Ceph的命令;它們之間的主要區別在于,Ceph的REST API的使用者需要非常了解Ceph本身,而Calamari 的REST API更貼近對Ceph資源的描述,所以更加適合給上層的應用程序調用。
cthulhu可以理解是Calamari Server的Service層,對上為API提供接口,對下調用Salt-master。但是代碼美中不足的是calamari_rest有些功能直接調用了Salt-master而沒有調用cthulhu。
calamari_clients是一套用戶界面,Calamari Server在安裝的過程中會首先創建opt/calamari/webapp目錄,并且把webapp/calamari下的manager.py(django 配置)文件考進去, calamari_web的所有內容到要放到opt/calamari/webapp下面來提供UI的訪問頁面。
calamari-web包下面的文件提供所有web相關的配置,calamari_rest和calamari_clients都要用到。
功能
Calamari的最強的就是監控功能,在頁面上可以瀏覽整個Ceph Cluster的使用狀況,OSD狀態,磁盤的IOPS,Ceph Server的系統資源使用情況等。
監控概要
OSD狀態
Calamari 提供的管理功能非常的有限,用戶只可以配置cluster的一些基本參數和添加修改pool
Cluster 配置
添加修改pool
總結:
Calamari為Ceph的運維和管理提供了一個統一的平臺,而且用戶還可以基于這個平臺擴展自己的存儲管理產品,但同時也存在著不足和需要改進的地方。
首先,Calamari還不能完成Ceph deploy所實現的部署功能,這是它最大一個不足;Fuel可以完成部署功能,并且可以選擇Ceph server的數據盤和日志盤以及定制默認的備份數等,所以Calamari + Fuel可以來實現一個完成的基于Ceph的部署和管理工具。其次,Calamari提供的管理功能太少,用戶無法只使用它來運維一個Ceph環境。最后,用戶可以基于Calamari開發自己的Ceph管理軟件,UI部分可以修改calamari_clients的頁面,也可也單獨實現一套自己的UI基于calamari_rest和Graphite_web,后端的功能的監控部分可以擴展diamond的collector實現,管理Ceph的功能可以擴展rest api,cthulhu,salt等來實現。原文鏈接:http://www.openstack.cn/pauthor/blacker