根据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. Ubuntu下安装VS code

    sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubun ...

  2. a[i++]

    今天才知道,a[i++]到底是什么意思:: 其实也很简单了,就是a[i]的值还是a[i],然后i自增1: 把这篇博客当作平常各种错题博客吧,把各种从网上抄的代码不懂的地方写到这个地方算了 ====== ...

  3. About the Cron Expression

    About the Cron Expression Cron is use in Linux for the time schedule Format Seconds Minutes Hours Da ...

  4. eclipse中tomcat调试正确关联源码

    1.build path中jar包关联本地源码 2.tomcat中添加source关联工程lib下的jar包 以上两步即可. 可解决tomcat直接关联本地源码debug时无法计算表达式的情况. 错误 ...

  5. 第一个spring boot 程序

    安装.运行.预览省略 错误1:8080端口被IIS占用,关闭它 Description: The Tomcat connector configured to listen on port 8080 ...

  6. Android相关概念

    2017-06-02 armeabi就是针对普通的或旧的arm v5 cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu. armeabi-v7a(32位ARM设备), ...

  7. 编译https://github.com/CIR-KIT/steer_drive_ros时出现的问题

    解决gazebo对应的protobuf版本问题: I've come across to the same problem. I'm using Ubuntu 16.04, ROS Kinetic a ...

  8. OneZero第三周第五次站立会议(2016.4.8)

    1. 时间: 15:10--15:25  共计15分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...

  9. 核心一:DI

    1.DI:中文名称:依赖注入 2.英文名称:(Dependency Injection) 3.DI是什么?? 3.1 DI和IoC是一样的 3.2 当一个类(A)中需要依赖另一类(B)对象时,把B赋值 ...

  10. log4j介绍和使用

    1.apache推出的开源免费日志处理的类库 2.为什么需要日志?? 2.1 在项目中编写system.out.println();输出到控制台,当项目发布到tomcat后,没有控制台(在命令界面能看 ...