根据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。

安装部署

  1. 获取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
  2. 生成calamari-server安装包,先yum remove prlink
    # yum install gcc gcc-c++ postgresql-libs python-virtualenv
    # cd calamari && ./build-rpm.sh
  3. 安装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
  4. 生成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 dist

    make 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
  5. 安装calamari-clients
    # yum localinstall RPMS/x86_64/calamari-clients-1.2-rc2_49_g3e3686d.el6.x86_64.rpm
  6. 初始化calamari
    # calamari-ctl initialize

    这一步在最后重启服务(主要是cthulhu)的时候一直没有结束,根据搜索到的信息,说是supervisord的问题,升级到3.0以上就不会有问题了。

  7. 生成diamond安装包
    # cd ../Diamond
    # git checkout origin/calamari
    # make rpm
  8. 将diamond-<version>.noarch.rpm复制到所有的ceph服务器。
    使用yum localinstall安装,或者yum install python-configobj然后使用rpm -ivh安装。
  9. 在所有的ceph服务器上安装salt-minion,创建/etc/salt/minion.d/calamari.conf,内容为:
    master: {fqdn}

    {fqdn}对应calamari服务器的域名。
    启动salt-minion服务:

    # service salt-minion restart
  10. 在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 ACCEPT

    saltstack认证:
    当ceph服务器上的salt-minion服务启动之后,会自动向salt-master请求认证。
    在Calamari服务器上可以通过下面的命令查看salt-minion密钥的列表:

    # salt-key -L

    刚刚启动salt-minion服务的ceph服务器会出现在Unaccepted Keys列表之后,要使得Calamari能够通过saltstack管理ceph服务器,需要对这些密钥进行认证:

    # salt-key -A
  11. 部署完成之后,可以访问calamari

后期遇到的问题

  1. 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)
  2. 打开Manage --> OSD页面无内容 
    查看calamari.log看到了异常,原因是httpd没有权限访问/etc/salt/master,修改权限临时解决。
  3. 打开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)
  4. 打开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的更多相关文章

  1. ceph学习笔记之十二 Ubuntu安装部署Ceph J版本

    https://cloud.tencent.com/info/2b70340c72d893c30f5e124e89c346cd.html 安装Ubuntu系统安装步骤略过 拓扑连接: 一.安装前准备工 ...

  2. 如何使用国内源部署Ceph?

    由于网络方面的原因,Ceph的部署经常受到干扰,通常为了加速部署,基本上大家都是将Ceph的源同步到本地进行安装.根据Ceph中国社区的统计,当前已经有国内的网站定期将Ceph安装源同步,极大的方便了 ...

  3. 使用国内源部署ceph

    由于网络方面的原因,Ceph的部署经常受到干扰,通常为了加速部署,基本上大家都是将Ceph的源同步到本地进行安装.根据Ceph中国社区的统计,当前已经有国内的网站定期将Ceph安装源同步,极大的方便了 ...

  4. ceph calamari 监控系统安装 on ubuntu 14.04

    在 ubuntu 14.04 上安装ceph calamari时,遇到calamari web界面中node server可以正常添加,但cluster 集群无法显示的问题. 经过定位,是因为salt ...

  5. 在Ubuntu 12.10 上安装部署Openstack

    OpenStack系统有几个关键的项目,它们能够独立地安装但是能够在你的云计算中共同工作.这些项目包括:OpenStack Compute,OpenStack Object Storage,OpenS ...

  6. 使用虚拟机CentOS7部署CEPH集群

    第1章   CEPH部署 1.1  简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...

  7. openstack pike 集群高可用 安装 部署 目录汇总

    # openstack pike 集群高可用 安装部署#安装环境 centos 7 史上最详细的openstack pike版 部署文档欢迎经验分享,欢迎笔记分享欢迎留言,或加QQ群663105353 ...

  8. 分布式存储ceph——(1)部署ceph

    前言: 很多朋友想学ceph,但是开始ceph部署就让初学者举步为艰,ceph部署时由于国外源的问题(具体大家应该懂得),下载和安装软件便会卡住,停止不前.即使配置搭建了国内源后,执行ceph-dep ...

  9. Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录

    之前已详细介绍了Ceph分布式存储基础知识,下面简单记录下Centos7使用Ceph-deploy快速部署Ceph环境: 1)基本环境 192.168.10.220 ceph-admin(ceph-d ...

随机推荐

  1. Unix和Windows文件格式转化

    可能的原因有: 1)执行权限的问题 解决方法: chmod +x ***.py 2)python版本的问题 解决方法:在执行时或者在py文件中选择好对应的Python的版本 3)python文件格式的 ...

  2. JSR 规范目录

    JSR 规范目录 一.Servlet 规范 1.1 Servlet 2.x 规范 1.2 Servlet 3.x 规范 - 注解和异步请求规范 每天用心记录一点点.内容也许不重要,但习惯很重要!

  3. Redis学习笔记:windows上redis的安装运行

    Redis的windows版本地址https://github.com/MicrosoftArchive/redis 下载之后解压之 在当前解压目录下可以看到如下文件 在当前目录下打开命令行窗口,输入 ...

  4. 【Linux】CentOS 7.2 安装 MySQL 5.7.21 解压版

    安装环境/工具 1.Linux(CentOS 7.2版) 2.mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 安装步骤 1.下载mysql解压版(mysql-5. ...

  5. [ASP.NET]static变量和viewstate的使用方法

    在.Net平台下进行CS软件开发时,我们经常遇到以后还要用到某些变量上次修改后的值,为了简单起见,很多人都习惯用static来定义这些变量,我也是.这样非常方便,下一次调用某个函数时该变量仍然保存的是 ...

  6. java ajax请求后台并获取到返回值

    js: $.ajax({ url : '../Islogin.do', type : 'get', cache : false, dataType : 'json', success : functi ...

  7. dfs序理解-hdu3887

    dfs序就是相当于把树转化成了一个区间,在区间上进行操作. void dfs(int u, int fa) { l[u]=++key; ; i=e[i].next) { int v=e[i].v; i ...

  8. MySQL查找SQL耗时瓶颈 SHOW profiles

    http://blog.csdn.net/k_scott/article/details/8804384 1.首先查看是否开启profiling功能 SHOW VARIABLES LIKE '%pro ...

  9. kbmmw 5.06.20 发布

    经过1个多月的测试,终于发布正式版. 5.06.20 July 11 2018           Important notes (changes that may break existing c ...

  10. JAVA折腾微信公众平台(Token验证)[转]

    JAVA折腾微信公众平台(Token验证) BAE的JAVA还在内测的时候,抱着好奇的态度发邮件申请了内测权限,当时折腾了一天,然后就没折腾了.现在BAE的JAVA都已经正式开放使用了,我又蛋疼的想写 ...