InkScope是一套Ceph管理和监控的可视化平台,InkScope基于Ceph提供的API来访问Ceph集群,InkScope还使用mongoDB来保存实时和历史数据。
InkScope架构图如下图所示:
其中:
ceph-rest-api:Ceph提供的restfulAPI接口,inkscope通过ceph-rest-api接口访问和操作Ceph集群;
cephprobe:用于获取Ceph集群的相关信息;
sysprobe:用于获取Ceph运行的物理节点的相关信息,如:CPU、内存、网络以及磁盘使用量等相关信息;
mongoDB:用于保存又cephprobe和sysprobe获取的实时和历史数据集合,该数据集合由inkscope web界面展示部分读取调用;
inkscope-admviz:inkscope对外提供web服务。用户通过web浏览器向inkscope-admviz发送restfulAPI格式的读写请求,之后inkscope-admviz通过访问mongoDB数据库或访问ceph-rest-api接口来完成用户的读写请求,之后将读写请求的结果返回给客户浏览器;
InkScope环境搭建。
硬件环境:
物理设备采用两台华为服务器,其中每台服务器的CPU是Intel Xeon E5-2650 v2,内存128GB,硬盘4块600GB(其中一块硬盘用于做系统,另外三块硬盘用作存储);
软件环境:
操作系统采用ubuntu14.04.3 Server edition;
Ceph集群采用Infernalis V9.2.0,其中采用1个monitor节点和6个OSD节点;
InkScope采用最新的V1.3版本。由于硬件环境有限,因此将InkScope的inkscop-admviz/mongoDB/ceph-rest-api/cephprobe/sysprobe都安装在monitor所在的节点上,另外一个节点只安装sysprobe;
InkScope环境搭建步骤如下:
安装mongoDB。
添加InkScope的Debian软件源,即:在/etc/apt/sources.list.d/目录中添加inkscope.list文件,该文件的内容是:
deb https://raw.githubusercontent.com/inkscope/inkscope-packaging/master/DEBS ./
之后更新ubuntu14.04软件源,即:#apt-get update;
在monitor所在的节点上安装InkScope服务,即:
#apt-get install inkscope-admviz inkscope-cephrestapi
配置InkScope服务。
1)更新InkScope配置文件,即:更新/opt/inkscope/etc/inkscope.conf文件。在该文件中填写mongoDB/ceph-rest-api/radosgw相关内容;
2)配置ceph-rest-api服务。ceph-rest-api的配置文件位于/etc/apache2/sites-available/inkScope.conf。
3)配置ceph-rest-api为WSGI应用。
A)创建一个ceph用户,即:#ceph auth get-or-create client.restapi mds 'allow' osd 'allow *' mon 'allow *' > /etc/ceph/ceph.client.restapi.keyring
B)将创建的用户添加到ceph配置文件中,即:将如下内容添加到/etc/ceph/ceph.conf文件中。
[client.restapi]
log_file = /dev/null
keyring = /etc/ceph/ceph.client.restapi.keyring
配置apache。
1)增加apache监听端口8080,即:将如下内容添加到/etc/apache/ports.conf文件中。
Listen 8080
2)使能apache相关模块。
#a2enmod rewrite
3)使用Python pip安装flask和json,即:
#pip install flask-login simple-json
4)使能inkscope。
#a2ensite inkScope
5)重新启动Apache服务。
#service apache2 restart
安装sysprobe。
1)安装sysprobe。
#apt-get install inkscope-sysprobe
2)安装其他工具。
#apt-get install lshw sysstat
3)安装Python模块psutil。
#pip install psutil==2.1.3
4)启动sysprobe。
#/etc/init.d/sysprobe start
安装cephprobe。
1)安装cephprobe。
#apt-get install inkscope-cephprobe
2)安装Python模块psutil。
#pip install psutil==2.1.3
3)启动cephprobe。
#/etc/init.d/cephprobe start
此时使用浏览器访问http://<monitor_ip>:8080/就能看到inkScope的首页了。
InkScope的优点。
架构清晰明了,易于扩展和定制化;
与Ceph集群的接口简单明了,即:直接通过访问ceph-rest-api接口来访问ceph集群。方便接口的扩展和定制化;
InkScope前端采用Angular JS,后端采用Python,层次化清晰明了;
InkScope完全开源且采用Apache V2开源许可证;
InkScope目前的问题。
InkScope访问blockdevices时出现Internal Error 500的错误信息,原因有可能是我在配置ceph-rest-api时有某些地方配置不正确导致的;
InkScope无法正常显示OSD节点磁盘的使用量信息,通过restfulAPI能够获取到json格式的磁盘使用量信息,但是无法在web页面上显示,原因有可能是读取到的数据没有正确的写入到mongoDB;
InkScope总结。
后续我会持续跟踪上述两个问题并找到解决方案;
InkScope整体架构及其接口设计合理并且易于扩展和定制化,非常适合企业级产品的原型;