0、引言

  好几天没有更新博客了,这几天分配有任务:calamari与inscope管理系统调研。下面就管理系统的环境搭建做一个总结,总结一下搭建流程以及搭建过程中遇到的一些问题。calcamari的搭建相对简单些这里就不说了,主要是inscope管理系统的环境搭建。
  搭建成功演示参考:
  http://www.zphj1987.com/2015/10/12/inkscope%E7%AE%A1%E7%90%86%E5%B9%B3%E5%8F%B0%E8%AF%95%E7%94%A8/
  参考文章:
  http://cloud.51cto.com/art/201507/486005_all.htm
  http://blog.csdn.net/changtao381/article/details/48015623

1、本人环境

1.1、系统环境(版本及内核)

  

1.2、Host资源

Host IP Node
admin99 10.10.21.99 osd
node100 10.10.21.100 osd/mon
node101 10.10.21.101 osd/rgw

2、Inscope

2.1、资源获取

  调研搭建Inscope最新版本:V1.3.1
  源码路径:https://github.com/inkscope/inkscope/tree/V1.3.1
  相关包:https://github.com/inkscope/inkscope-packaging/tree/1.3.1-2/RPMS

2.2、Inscope框架

  1)、由Inscope源码可知,管理系统的实现主要包含有:

  • InscopeViz:包含inkscope的web控制台文件,含接口和界面相关文件

  • InscopeCtrl

  • InscopeProbe

  • InscopeMonitor

  2)、如下Inscope框架
           
        
  由架构图可知,整个集群管理系统Inscope的构成依赖于其核心组件在各个节点的信息通讯,而Inscope的搭建正是要将各个组件(进程)成功地嵌入(运行)在各个功能节点上。Inscope搭建的主要内容有:

  • inkscope-common : 包含inkscope的默认配置文件以及其他进程(cephprobe,sysprobe)启动所需的依赖文件,所有相关节点都需要安装。
  • inkscope-admviz : 包含inkscope的web控制台文件,含接口和界面,仅需要安装一个,该节点(管理节点)上同时需要按安装flask和mongodb
  • inkscope-cephrestapi: 用于安装启动 ceph rest api 的脚本,仅需要安装在提供api接口的节点上,即mon节点。
  • inkscope-cephprobe: 用于安装启动 cephprobe 的脚本(整个集群只需一个),安装在mon节点,脚本主要实现:获取Ceph集群的一些信息,并使用端口(5000)提供服务,将数据存入mongodb数据库中。
  • inkscope-sysprobe : 安装用于所有mon和osd的sysprobe 所需要脚本,即所有节点均安装,实现获取节点设备资源信息如:CPU、内存、磁盘等等。

  3)、各个节点需安装的Inscope组件内容

Host 安装包
admin99 Inscope-common / Inscope-admViz / Inscope-sysprobe / Inscope-cephprobe / flask / mongodb
node100 Inscope-common / Inscope-cephrestapi / Inscope-cephprobe / Inscope-sysprobe
node101 Inscope-common / Inscope-sysprobe

3、搭建流程

3.1、安装web管理控制台

3.1.1、安装软件包和依赖

  该节点使用php以及wsgi实现界面,本地接收其他节点传过来的数据存入本地mongodb,同时会调用rados命令,
  又使用flask框架构建接口,因此需要使用下面的命令安装软件及依赖(注:均为最新包)

yum install  python-pip httpd mod_wsgi mongodb python-ceph python-flask
rpm -ivh inkscope-admviz-1.3.1-2.noarch.rpm inkscope-common-1.3.1-2.noarch.rpm inkscope-sysprobe-1.3.1-2.noarch.rpm
  • 1
  • 2

3.1.2、配置httpd服务

  安装完Inkscope-admviz后默认虚拟主机配置文件位于/etc/httpd/conf.d/inkScope.conf,将其拷贝到/etc/httpd/sites-available 中。修改36行如下, 注释掉 35行  

35    #ProxyPass /ceph-rest-api/ http://<inkscope_host> \<inkscope_port>/ceph_rest_api/api/v0.1/
36 ProxyPass /ceph-rest-api/ http://10.10.21.100:5000/api/v0.1/
  • 1
  • 2

同时修改 /etc/httpd/conf/httpd.conf配置文件,增添:

Listen 8080
NameVirtualHost *.8080
  • 1
  • 2

完整的Inscope.conf 文件(本人环境)

[root@admin99 site-available]# cat inkScope.conf
<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> WSGIScriptAlias /ceph_rest_api /var/www/inkscope/inkscopeCtrl/ceph-rest-api.wsgi
<Directory "/var/www/inkscope/inkScopeCtrl">
Require all granted
</Directory> # Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn ProxyRequests Off # we want a "Reverse proxy"
#ProxyPass /ceph-rest-api/ http://<inkscope_host>:<inkscope_port>/ceph_rest_api/api/v0.1/
ProxyPass /ceph-rest-api/ http://10.10.21.100:5000/api/v0.1/ ErrorLog /var/log/inkscope/webserver_error.log
CustomLog /var/log/inkscope/webserver_access.log common </VirtualHost>
  • 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
  • 40
  • 41
  • 42

  重新启动httpd 执行 # service httpd restart
  之后打开浏览器访问 http://10.10.21.99:8080/ 便可看到Inscope首页信息了,不过此时没有Ceph集群的信息。

3.1.3、开启mongodb远程连接

  修改 /etc/mongodb.conf ,将bind_ip 修改为 0.0.0.0,取消 port = 27017 依据前面的注释,如下:

bind_ip = 0.0.0.0
port = 27017
  • 1
  • 2

3.2、CephProbe所在节点

  cephprobe所在节点主要是提供ceph-rest-api并实现抓取ceph的信息存入mongodb中。所需软件包及依赖安装如下:

yum install python-devel
pip install pymongo psutil
rpm -ivh inkscope-common-1.3.1-2.noarch.rpm inkscope-cephrestapi-\
1.3.1-2.noarch.rpm inkscope-cephprobe-1.3.1-2.noarch.rpm inkscope-\
sysprobe-1.3.1-2.noarch.rpm
  • 1
  • 2
  • 3
  • 4
  • 5

启动ceph-rest-api服务 /etc/init.d/ceph-rest-api start

3.3、radosgw服务配置

注:本次搭建避免了ceph的auth认证,radosgw有两种方式运行,一种是直接用civetweb的方式,其内置了一个比较小巧的http服务器mongoose,这种方式配置比较简单,不需要配置Apache httpd服务器。下面说的是后者的配置即Apache httpd配置。

3.3.1、配置ceph集群上的radosgw

  1)创建rgw相关的pool

ceph osd pool create .rgw 64 64
ceph osd pool create .rgw.root 64 64
ceph osd pool create .rgw.control 64 64
ceph osd pool create .rgw.gc 64 64
ceph osd pool create .rgw.buckets 64 64
ceph osd pool create .rgw.buckets.index 64 64
ceph osd pool create .log 64 64
ceph osd pool create .intent-log 64 64
ceph osd pool create .usage 64 64
ceph osd pool create .users 64 64
ceph osd pool create .users.email 64 64
ceph osd pool create .users.swift 64 64
ceph osd pool create .users.uid 64 64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

  2)配置 ceph.conf
  2-1)这里的配置需在ceph.conf里添加有个radowgw的配置, apache httpd + factcgi的方式。    

[client.radosgw.node101]
host = node101
log_file = /var/log/ceph/client.radosgw.node101.log
log_socket_path = /var/run/ceph/ceph-client.radosgw.node101.asok
rgw_frontends = fastcgi socket_port=9000 socket_host=0.0.0.0
rgw_print_continue = false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  2-1)配置安装fastcgi模块
  需下载源码包,目前最新包版本:mod_fastcgi-2.4.6-2.rf.src.rpm ,使用rpmbuild编译安装,make编译过程会遇到一些问题,可参考:http://www.th7.cn/system/lin/201411/77339.shtml 解决
  

3.3.2、启动radosgw

radosgw -c /etc/ceph/ceph.conf -n client.radosgw.node101 
  • 1

查看 /var/log/ceph/client.radosgw.node101.log 据日志做相应处理

当试图启用ceph.conf中添加的[client.radosgw.node101]项时,报如下错:
[root@node101 radosgw]# radosgw -c /etc/ceph/ceph.conf -n client.radosgw.node101
[root@node101 radosgw]# tail -f /var/log/ceph/client.radosgw.node101.log

而当重启ceph-radosgw时又报如下错误:

分析:ceph radosgw默认的运行方式是civetweb方式,由日志来看,似乎添加的[client.radosgw.node101]并没有发挥作用。
  要想获取或者说使用radosgw提供对象存储,而又Inscope能够(从子用户)获取到相应的信息资源,那么就得实现相关通讯,而通讯使用的是socket机制,即需实现绑定Ceph-radosgw的/var/run/ceph/ceph-client.radosgw.node101.asok 文件。

解决可参考:http://comments.gmane.org/gmane.comp.file-systems.ceph.user/24084
重启服务可使用如下形式:

radosgw -d -c /etc/ceph/ceph.conf --debug-rgw 20
--rgw-socket-path=/var/run/ceph/ceph-client.radosgw.node101.asok
  • 1
  • 2

3.3.3、配置httpd

  在/etc/httpd/conf.d 目录中添加rgw.conf

<VirtualHost *:80>
ServerName 10.10.21.101
DocumentRoot /var/www/html ErrorLog /var/log/httpd/rgw_error.log
CustomLog /var/log/httpd/rgw_access.log combined RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] SetEnv proxy-nokeepalive 1 ProxyPass / fcgi://10.10.21.101:9000/
#ProxyPass / http://10.10.21.101:9000/
</VirtualHost>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

重启httpd服务 service httpd restart

3.3.4、创建用户

radosgw-admin user create --uid=cephtest --display-name="cephtest"
--email=ceph.test@chinacache.com
  • 1
  • 2

查看用户信息:radosgw-admin user info –uid=cephtest

{
"user_id": "cephtest",
"display_name": "jeceph",
"email": "jeceph.test@chinacache.com",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [],
"keys": [
{
"user": "cephtest",
"access_key": "S0I0O8YFF3RLOCMI72C7",
"secret_key": "Gu3sJeEatxs4lNWa4JgRL2HOMny7XwE7WVilbEs7"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
},
"temp_url_keys": []
}
  • 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

3.4、SysProbe所在无特殊任务节点

  安装内容:

yum install python-devel
pip install pymongo psutil
rpm -ivh inkscope-common_1.3.1-2.deb inkscope-sysprobe_1.3.1-2.deb
  • 1
  • 2
  • 3

3.5、修改Inscope配置文件并启动服务

  inkscope的配置文件就一个,位于 /opt/inkscope/etc/inkscope.conf
  这里面需要修改的主要有: 1. ceph_rest_api:在本例中即为node100的ip; 2. mongodb_host:即为amin99所在节点,管理节点 ;3. radosgw_url:即为node101所在节点 ;4. radosgw_key和radosgw_secret:在node101上新建管理用户时指定的两个key

文件配置结果:

{
"ceph_conf": "/etc/ceph/ceph.conf",
"ceph_rest_api": "10.10.21.100:5000",
"ceph_rest_api_subfolder": "",
"mongodb_host" : "10.10.21.99",
"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",
"platform": "x86_64",
"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_url": "http://10.10.21.101:80",
"radosgw_admin": "admin",
"radosgw_key": "S0I0O8YFF3RLOCMI72C7",
"radosgw_secret": "Gu3sJeEatxs4lNWa4JgRL2HOMny7XwE7WVilbEs7"
}
  • 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
  • 40

之后,将该文件拷贝至Ceph集群各个节点的 /opt/inscope/etc/目录中。
最终,启动各个节点的服务:

service sysprobe start
service cephprobe start
service ceph-rest-api start
  • 1
  • 2
  • 3

4、成功显示

Centos7.2:搭建Ceph管理系统Inscope的更多相关文章

  1. centos7下搭建ceph luminous(12.2.1)--无网或网络较差

    本博客的主要内容是在centos7下搭建luminous,配置dashboard,搭建客户端使用rbd,源码安装ceph,最后给出一些较为常用的命令.本博客针对初次接触ceph的人群. 搭建环境: 主 ...

  2. CentOS7下搭建Ceph分布式存储架构

    (1).Ceph概述 Ceph是为了优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统,并且还是一个开源的分布式文件系统.因为其支持块存储.对象存储,所以很自然的被用做云计算框架opensta ...

  3. [转帖]使用fastdfs搭建文件管理系统

    使用fastdfs搭建文件管理系统 https://www.jianshu.com/p/4e80069c84d3 今天同事说他们的系统用到了这个分布式文件管理系统. 一.FastDFS介绍 FastD ...

  4. Centos7下设置ceph 12.2.1 (luminous)dashboard UI监控功能

    前言 本文所使用的集群是作者在博客 Centos7下部署ceph 12.2.1 (luminous)集群及RBD使用  中所搭建的集群 dashboard是为了完成对集群状态进行UI监控所开发的功能, ...

  5. CentOS 7 搭建 Ceph 集群(nautilus 版本)

    搭建 Ceph 分布式集群( nautilus 版本 ) 一.服务器环境说明 主机名 角色 IP地址 ceph-admin ceph-deploy 192.168.92.21 ceph-node1 m ...

  6. centos7 环境搭建

    centos7 环境搭建    CentOS-7-x86_64-DVD-1511.iso    vmware121. 安装    使用iso安装系统:2. 修改yum源到光盘        先把光盘C ...

  7. Python基础综合运用——搭建名片管理系统

    综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ************ ...

  8. Kafka(二)CentOS7.5搭建Kafka2.11-1.1.0集群与简单测试

    一.下载 下载地址: http://kafka.apache.org/downloads.html    我这里下载的是Scala 2.11对应的 kafka_2.11-1.1.0.tgz 二.kaf ...

  9. 在Centos7下搭建Socks5代理服务器

    在Centos7下搭建Socks5代理服务器 http://blog.51cto.com/quliren/2052776   采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器 ...

随机推荐

  1. charles抓包工具的使用:概述

    一. 什么是包 用户和后台客户端之间的请求数据,都是以包的形式来传递的,具体要深究,可以去看看这方面的网络知识 二. 为何要抓包 1) 可以用来分析网络流量 2) 可以用来破译抓来的数据,比如密码之类 ...

  2. LightOJ - 1248 期望

    题意:有一个n面筛子,每次扔一下,每面概率相同,要求扔出n面的期望次数 题解:和第三篇论文里的例题一样,算从第i个到第i+1个的概率是(n-i)/n,n面中找n-i个没有扔到过的,期望是n/(n-i) ...

  3. 亚马逊EC2

    亚马逊EC2编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 亚马逊弹性计算云(EC2,Elastic Compute Cloud)是一个让使用者可以租用云端电脑运行所需 ...

  4. OpenStack Mitaka HA部署方案(随笔)

    [Toc] https://github.com/wanstack/AutoMitaka # 亲情奉献安装openstack HA脚本 使用python + shell,完成了基本的核心功能(纯二层的 ...

  5. QT中给程序加上主界面的图标

    首先在源码目录下面新建一个 myapp.rc的文件,在里面填写如下: IDI_ICON1 ICON DISCARDABLE "myappico.ico" (名字看自己的图片,注意图 ...

  6. 2——FFMPEG之协议(文件)操作----AVIOContext, URLContext, URLProtocol

    协议操作对象结构: 协议(文件)操作的顶层结构是AVIOContext,这个对象实现了带缓冲的读写操作:FFMPEG的输入对象AVFormat的pb字段指向一个AVIOContext. AVIOCon ...

  7. matlab将矩阵写入文件

    % %% date: 5/5/2017 % %% Author: Congbo Ma, Hu Wang % % write matrix to file function wrt_mat_to_fil ...

  8. Supervisor进程监控

    安装 yum install -y python-setuptools easy_install supervisor echo_supervisord_conf > /etc/supervis ...

  9. call、apply、bind用法区别

    call call() 方法调用一个函数, 其具有一个指定的 this 值和分别地提供的参数(参数的列表). <p class="danger"> 注意:该方法的作用和 ...

  10. UVA10652 Board Wrapping

    题意 PDF 分析 就是一个裸的凸包. 如何确定点?就用中心向四边连垂直的向量然后旋转,加上中心点,即可得出旋转后的点. 时间复杂度\(O(T n \log n)\) 代码 #include<i ...