设为首页 收藏本站
查看: 1774|回复: 0

[经验分享] ceph存储 安装部署Ceph Calamari经典示例

[复制链接]

尚未签到

发表于 2015-11-26 12:46:00 | 显示全部楼层 |阅读模式
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 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安装包
    # yum install npm ruby rubygems
    # npm install -g grunt grunt-cli bower grunt-contrib-compass
    # gem update --sytem && 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/&quot;$dir&quot;
    >cp -pr &quot;$dir&quot;/dist/* ../opt/calamari/webapp/content/&quot;$dir&quot;/
    >done

      重新制作压缩包,然后根据Makefile里面的rpm target手动执行rpmbuild:

    # rpmbuild -bb --define &quot;_topdir /xxx/calamari-clients/../rpmbuild&quot; --define &quot;version 1.2&quot; --define &quot;revision rc2_49_g3e3686d&quot; --define &quot;tarname /xxx/rpmbuild/SOURCES/calamari-clients_product_1.2.tar.gz&quot; 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 ACCEPT

      saltstack认证:

    当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
    {
    &quot;detail&quot;: &quot;No mon servers are responding&quot;
    }

      经过研究还是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/。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143890-1-1.html 上篇帖子: calamari:基于web页面的ceph系统监控管理工具安装 下篇帖子: ceph 0.80.11 发布,分布式文件系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表