安装部署Ceph Calamari
根据http://ovirt-china.org/mediawiki/index.php/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2Ceph_Calamari
原文如下:
Calamari是管理和监控Ceph集群的工具,并且提供REST api。
建议的部署平台是ubuntu,本文使用CentOS 6.5。
安装部署
- 获取calamari相关代码
# git clone https://github.com/ceph/calamari.git
# git clone https://github.com/ceph/calamari-clients.git
# git clone https://github.com/ceph/Diamond - 生成calamari-server安装包,先yum remove prlink
# yum install gcc gcc-c++ postgresql-libs python-virtualenv
# cd calamari && ./build-rpm.sh - 安装calamari-server
# yum localinstall ../rpmbuild/RPMS/x86_64/calamari-server-<version>.rpm
使用yum可以自动解决依赖,如果手动安装依赖的可以这样:
# yum install postgresql-server salt-master salt-minion supervisor
# rpm -ivh ../rpmbuild/RPMS/x86_64/calamari-server-<version>.rpm - 生成calamari-clients安装包,需要安装ruby-devel
# yum install npm ruby rubygems
# npm install -g grunt grunt-cli bower grunt-contrib-compass
# gem update --system && gem install compass
# cd calamari-clients
# make build-real
# make distmake dist会在上级目录生成calamari-client的压缩包;
手动解压缩,建立mkdir -p opt/calamari/webapp;
在解压生成的目录下,手动更新目录结构和内容:# for dir in manage admin login dashboard
>do
>mkdir -p ../opt/calamari/webapp/content/"$dir"
>cp -pr "$dir"/dist/* ../opt/calamari/webapp/content/"$dir"/
>done重新制作压缩包,然后根据Makefile里面的rpm target手动执行rpmbuild:
# rpmbuild -bb --define "_topdir /xxx/calamari-clients/../rpmbuild" --define "version 1.2" --define "revision rc2_49_g3e3686d" --define "tarname /xxx/rpmbuild/SOURCES/calamari-clients_product_1.2.tar.gz" SPECS/clients.spec
- 安装calamari-clients
# yum localinstall RPMS/x86_64/calamari-clients-1.2-rc2_49_g3e3686d.el6.x86_64.rpm
- 初始化calamari
# calamari-ctl initialize
这一步在最后重启服务(主要是cthulhu)的时候一直没有结束,根据搜索到的信息,说是supervisord的问题,升级到3.0以上就不会有问题了。
- 生成diamond安装包
# cd ../Diamond
# git checkout origin/calamari
# make rpm - 将diamond-<version>.noarch.rpm复制到所有的ceph服务器。
使用yum localinstall安装,或者yum install python-configobj然后使用rpm -ivh安装。 - 在所有的ceph服务器上安装salt-minion,创建/etc/salt/minion.d/calamari.conf,内容为:
master: {fqdn}
{fqdn}对应calamari服务器的域名。
启动salt-minion服务:# service salt-minion restart
- 在Calamari服务器上配置防火墙和saltstack认证
防火墙(允许ceph服务器访问salt-master和carbon):### salt-master
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4505 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4506 -j ACCEPT
### carbon
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2003 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2004 -j ACCEPTsaltstack认证:
当ceph服务器上的salt-minion服务启动之后,会自动向salt-master请求认证。
在Calamari服务器上可以通过下面的命令查看salt-minion密钥的列表:# salt-key -L
刚刚启动salt-minion服务的ceph服务器会出现在Unaccepted Keys列表之后,要使得Calamari能够通过saltstack管理ceph服务器,需要对这些密钥进行认证:
# salt-key -A
- 部署完成之后,可以访问calamari
后期遇到的问题
- SELinux导致500错误:
由于SELinux的限制,访问页面时会出现500错误,原因是httpd_t对于anon_inodefs_t没有写入权限,可以根据审计日志生成SELinux模块:# ausearch -m avc -c httpd -se httpd_t -o anon_inodefs_t | audit2allow -R -M httpd_anon_inodefs
# semodule -i httpd_anon_inodefs.pp生成的SELinux模块规则如下:
require {
type httpd_t;
} #============= httpd_t ==============
fs_rw_anon_inodefs_files(httpd_t) - 打开Manage --> OSD页面无内容
查看calamari.log看到了异常,原因是httpd没有权限访问/etc/salt/master,修改权限临时解决。 - 打开Manage --> Logs页面无内容
查看日志,发现是访问http://xxx.xxx.xxx.xxx/api/v2/cluster/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/log发生503错误:HTTP 503 SERVICE UNAVAILABLE
Vary: Accept
Content-Type: text/html; charset=utf-8
Allow: GET, HEAD, OPTIONS {
"detail": "No mon servers are responding"
}经过研究还是SELinux的限制,通过ausearch配合audit2allow生成相应的模块,可以解决问题。
生成的SELinux模块的规则如下:require {
type var_run_t;
type httpd_t;
class sock_file { write getattr };
} #============= httpd_t ==============
allow httpd_t var_run_t:sock_file { write getattr };
files_read_var_files(httpd_t)
init_stream_connect_script(httpd_t) - 打开graphite/dashboard/页面出现HTTP 500错误
日志中提示找不到graphite的模板,在calamari的bug列表中找到对应的说明——issue 8669
解决方法是:
在/opt/calamari/venv/lib/python2.6/site-packages下找到calamari_web的egg文件,解压缩之后手动修改calamari_web/settings.py,然后重新打包。
重启apache之后可以访问graphite/dashboard/。
在centos6.5安装了一下Calamari,期间出现了一些rpm的问题。安装完成后,运行
calamari-ctl initialize
进行初始化,最后一直停止在restart,此文说 这一步在最后重启服务(主要是cthulhu )的时候一直没有结束,根据搜索到的信息,说是supervisord 的问题,升级到3.0以上就不会有问题了。
试图升级supervisord,但需要python2.7等,只能作罢,以后再折腾吧。
首页可以打开,但登陆后出现Server Error(500):
安装部署Ceph Calamari的更多相关文章
- ceph学习笔记之十二 Ubuntu安装部署Ceph J版本
https://cloud.tencent.com/info/2b70340c72d893c30f5e124e89c346cd.html 安装Ubuntu系统安装步骤略过 拓扑连接: 一.安装前准备工 ...
- 如何使用国内源部署Ceph?
由于网络方面的原因,Ceph的部署经常受到干扰,通常为了加速部署,基本上大家都是将Ceph的源同步到本地进行安装.根据Ceph中国社区的统计,当前已经有国内的网站定期将Ceph安装源同步,极大的方便了 ...
- 使用国内源部署ceph
由于网络方面的原因,Ceph的部署经常受到干扰,通常为了加速部署,基本上大家都是将Ceph的源同步到本地进行安装.根据Ceph中国社区的统计,当前已经有国内的网站定期将Ceph安装源同步,极大的方便了 ...
- ceph calamari 监控系统安装 on ubuntu 14.04
在 ubuntu 14.04 上安装ceph calamari时,遇到calamari web界面中node server可以正常添加,但cluster 集群无法显示的问题. 经过定位,是因为salt ...
- 在Ubuntu 12.10 上安装部署Openstack
OpenStack系统有几个关键的项目,它们能够独立地安装但是能够在你的云计算中共同工作.这些项目包括:OpenStack Compute,OpenStack Object Storage,OpenS ...
- 使用虚拟机CentOS7部署CEPH集群
第1章 CEPH部署 1.1 简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...
- openstack pike 集群高可用 安装 部署 目录汇总
# openstack pike 集群高可用 安装部署#安装环境 centos 7 史上最详细的openstack pike版 部署文档欢迎经验分享,欢迎笔记分享欢迎留言,或加QQ群663105353 ...
- 分布式存储ceph——(1)部署ceph
前言: 很多朋友想学ceph,但是开始ceph部署就让初学者举步为艰,ceph部署时由于国外源的问题(具体大家应该懂得),下载和安装软件便会卡住,停止不前.即使配置搭建了国内源后,执行ceph-dep ...
- Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录
之前已详细介绍了Ceph分布式存储基础知识,下面简单记录下Centos7使用Ceph-deploy快速部署Ceph环境: 1)基本环境 192.168.10.220 ceph-admin(ceph-d ...
随机推荐
- [转]slf4j 与log4j 日志管理
log4j简易入门 package test.log4j; import org.apache.log4j.Logger; public class HelloLog4j { private stat ...
- 条件随机场_CRF
无向图 举例:“Bob drank coffee at Starbucks” 标记方式1:(名词,动词,名词,介词,名词) 称为l 标记方式2:(名词,动词,动词,介词,名词) 挑选出一个最靠谱的: ...
- 隐马尔科夫_HMM
有向图 抽象:λ代表输入:输入一个句子,λi表示句子中的每个字 O代表输出:[B词首/M词中/E词尾/S单独成词] max=maxP(O1 O2 On/ λ1 λ2 λn) 假设: (1)当前观察值只 ...
- json数据映射填充到html元素显示
映射算法做了改进,支持name重复映射 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...
- PHP代码不应有的坏习惯
>>使用echo取代print >>使用str_replace取代preg_replace, 除非你绝对需要 >>不要使用 short tag >>简单 ...
- 几种开源的TCP/IP协议栈分析
1:BSD TCP/IP协议栈,BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的.这是因为 BSD栈在BSD许可协议下提供了这些专业栈的 ...
- spring事件机制
前置知识补充: 程序里面所谓的“上下文”就是程序的执行环境,打个比方:你就相当于web程序,你的房子就相当于web程序的上下文,你可以在家里放东西,也可以取东西,你的衣食住行都依赖这个房子,这个房子就 ...
- RAID : 独立磁盘冗余阵列(Redundant Array of Independent Disks)
RAID 分为不用的等级(RAID0 - RAID5),以满足不同的数据应用需求. RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术. AID ...
- 671. Second Minimum Node In a Binary Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
- 2018.11.08 NOIP模拟 水管(简单构造)
传送门 仔细读题会发现只要所有点点权之和等于0一定有解. 如何构造? 直接当做树来构造就行了,非树边都赋值成0就行. 代码