主要目的是提供視覺化的 Ceph 狀態監控~。
1、環境說明
每台主機都是 Ubuntu 14.04,部署上去的 Ceph 版本為 0.80.9-1trusty另外 Ceph 部署時使用預設叢集,因此叢集之設定檔皆為 /etc/ceph/ceph.conf 檔。
1.1、系統架構
由上圖可以看出,inkScope 預設的配置是每個 Ceph 的 OSD 節點都要安裝 sysprobe,而 Monitor 節點則要安裝 ceph-rest-api 和 cephprobe。
另外要準備一台主機,安裝 inkScope 的管理介面。。
因此以下會以一台 Monitor 節點和三台 OSD 節點的部署模式,inkScope 管理介面裝在第五台主機作為範例。
PS. 以下範例中主要是參考 inkScope 部落格上的安裝教學 [1]。
2、安裝步驟
2.1、在 Monitor 節點安裝 ceph-rest-api
由於依照 [1] 的描述,在安裝管理介面前,必須先準備好 ceph-rest-api,因此要先開始在 Monitor 節點上安裝 ceph-rest-api。
其中雖然 [1] 建議比較好的方式,是把 ceph-rest-api 裝在 Apache 上作為 WSGI 應用程式
不過由於實際做的時候一直出現問題,因此以下是以在 Monitor 上面執行獨立的 ceph-rest-api 服務來進行。
(大概就是讓 ceph-rest-api 自己跑一個獨立的 Apache 服務,然後預設會跑在 5000 port 上)
2.1.1、建立供 ceph-rest-api 存取 Ceph 的使用者 client.restapi
首先在開始安裝 ceph-rest-api 前,必須先在 Ceph 上建立一個名稱為 client.restapi 的使用者
並且授權該使用者可以存取 Monitor、OSD 以及 MDS(不過我的環境沒有裝 MDS 就是了)
1 |
sudo ceph auth get-or-create client.restapi mds 'allow' osd 'allow *' mon 'allow *' > /etc/ceph/ceph .client.restapi.keyring |
1 2 3 |
[client.restapi] log_file = /dev/null keyring = /etc/ceph/ceph .client.restapi.keyring |
2.1.2、執行 ceph-rest-api
假設 ceph-rest-api 的 log 想放在 /var/log 資料夾內,記得先將當前目錄移過去
1 2 |
cd /var/log sudo nohup ceph-rest-api -i admin& |
2.2、在 Admin 節點安裝 inkScope
2.2.1、安裝 inkScope 管理套件
Admin 節點必須要安裝 inkscope-admviz 套件,也就是提供管理介面服務的套件。
1 2 |
echo "deb https://raw.githubusercontent.com/inkscope/inkscope-packaging/master/DEBS ./" > /etc/apt/sources .list.d /inkscope .list sudo apt-get update && sudo apt-get install inkscope-admviz libapache2-mod-wsgi python-simplejson python-flask mongodb |
2.2.2、設定 MongoDB 存取權限
安裝完成後,要先調整 MongoDB 的設定,因為 MongoDB 是要讓每個 Ceph 節點能夠回報狀態的地方
所以必須讓每個節點都能存取 MongoDB。
編輯 /etc/mongodb.conf 檔,並把 bind_ip 那行註解掉(或者改成 0.0.0.0 亦可)並儲存
這個動作可以讓 MongoDB 接受任意來源的資料庫連線。
2.2.3、調整 inkScope 設定值
然後編輯 inkScope 的設定檔 /opt/inkscope/etc/inkscope.conf,在裡面寫入關於 ceph-rest-api、MongoDB 以及 RadosGW 相關的資訊。
我自己的環境沒有設定 RadosGW,所以那部分就隨意填寫,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
{ "ceph_conf" : "/etc/ceph/ceph.conf" , "ceph_rest_api" : "monitor:5000" , "ceph_rest_api_subfolder" : "ceph_rest_api" , "mongodb_host" : "monitor" , "mongodb_set" : "mongodb0:27017,mongodb1:27017,mongodb2:27017" , "mongodb_replicaSet" : "replmongo0" , "mongodb_read_preference" : "ReadPreference.SECONDARY_PREFERRED" , "mongodb_port" : 27017, "mongodb_user" : "ceph" , "mongodb_passwd" : "monpassword" , "is_mongo_authenticate" : 0, "is_mongo_replicat" : 0, "cluster" : "ceph" , "status_refresh" : 3, "osd_dump_refresh" : 3, "pg_dump_refresh" : 60, "crushmap_refresh" : 60, "df_refresh" : 60, "cluster_window" : 1200, "osd_window" : 1200, "pool_window" : 1200, "mem_refresh" : 60, "swap_refresh" : 600, "disk_refresh" : 60, "partition_refresh" : 60, "cpu_refresh" : 30, "net_refresh" : 30, "mem_window" : 1200, "swap_window" : 3600, "disk_window" : 1200, "partition_window" : 1200, "cpu_window" : 1200, "net_window" : 1200, "radosgw_admin" : "admin" , "radosgw_key" : "access-key" , "radosgw_secret" : "secret-key" } |
關係到這三個服務所在的位置。
2.2.4、設定 Apache
接著需要在 Apache 的設定中加入一個 inkScope 網站的設定,需要建立 /etc/apache2/sites-available/inkscope.conf 檔,並寫入以下資訊:
註:inkscope-admviz 安裝過程中,如果沒有已經安裝的 Apache 的話,會自動安裝一個。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<VirtualHost *:8080> ServerName localhost ServerAdmin webmaster@localhost DocumentRoot /var/www/inkscope/ <Directory "/var/www/inkscope/" > Options All AllowOverride All < /Directory > ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin" > AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all < /Directory > WSGIScriptAlias /inkscopeCtrl /var/www/inkscope/inkscopeCtrl/inkscopeCtrl .wsgi <Directory "/var/www/inkscope/inkscopeCtrl" > Order allow,deny Allow from all < /Directory > ErrorLog /var/log/apache2/inkscope-error .log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn ProxyRequests Off ProxyPass /ceph-rest-api/ http: //monitor :5000 /api/v0 .1/ CustomLog /var/log/apache2/inkscope-access .log combined < /VirtualHost > |
1 |
ln -s /etc/apache2/sites-available/inkscope .conf /etc/apache2/sites-enabled |
接著因為上述的網站是設定在 8080 port,要讓 Apache 監聽 8080 port,因此要在 /etc/apache2/ports.conf 加入一行:
1 |
Listen 8080 |
設定完成後,啟用 WSGI 模組和 proxy 模組、啟用 inkScope 網站並重新啟動 Apache。
1 2 |
sudo a2enmod wsgi && sudo a2enmod proxy_http && sudo a2ensite inkscope sudo service apache2 restart |
到這裡應該已經可以連到 inkScope 的服務了,不過因為還沒有程式在收集資料,所以目前上面沒有任何資料。
2.3、在 Monitor 節點安裝 cephprobe 與 sysprobe
cephprobe 是收集資料的 daemon,只需要安裝在任一節點上即可,因此選擇放在 Monitor 節點上。
1 |
apt-get install inkscope-cephprobe inkscope-sysprobe python-psutil |
安裝完以後,要設定 /opt/inkscope/etc/inkscope.conf,可以完全照貼前面的設定,這裡就不贅述了。
設定完成後,啟動 cephprobe。
1 |
/etc/init .d /cephprobe start |
2.4、在每個節點安裝 sysprobe
這部份是每個 Ceph 節點都要做的,不過 Monitor 節點剛剛做過了,所以可以省略。
1 |
apt-get install inkscope-sysprobe python-psutil |
設定完成後,啟動 sysprobe。
1 |
/etc/init .d /sysprobe start |
到這裡,整個 inkScope 就安裝完了。
如果運作順利的話,一開始可以直接在 MongoDB 上看到一個以 UUID 命名的 db
而 db 中會有個 "hosts" 的 collection,裡面會記錄所有有跑 sysprobe 的主機資訊。
而介面可以打開 http://monitor_ip:8080/,就可以看到 Ceph 的狀態了。
參考資料:
2 則留言:
Hello your installation only build ceph but it can't read all OSD systems.
Hello your installation only build ceph but it can't read all OSD systems.
張貼留言