• Ceph实验室:第二课:集成ceph与openstack


    本课程介绍如何配置ceph作为Nova的后端存储,用来存放vm的临时磁盘。


    集成ceph与Openstack Nova

    安装ceph客户端
    集成ceph与Openstack的第一步就是要在openstack的节点上安装ceph客户端(一些ceph命令行工具和连接ceph集群需要的libraries)。

    $ ceph-deploy install --cli --no-adjust-repos openstack
    $ ceph-deploy config push openstack
    

    创建pool
    给虚拟机的ephemeral disks创建一个ceph pool。

     $ ceph osd pool create compute 256
     pool 'compute' created
    

    给nova客户端创建一个ceph用户和密钥
    ceph get-or-create 会产生一个用户名和一个秘钥,并将它们保存在ceph monitor上。下面命令给nova客户端创建一个用户和秘钥,并赋予合适的权限。

     [root@ceph ceph]# ceph auth get-or-create client.compute mon "allow r" osd "allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=compute, allow rx pool=images"
    [client.compute]
    key = AQBLHcJYm1XxBBAA75foQeQ72bT3GsGVDzBZcg==
    

    分发秘钥给nova客户端,并修改秘钥文件的group和权限
    客户端需要ceph秘钥去访问集群,ceph创建了一个默认用户client.admin,他有足够的权限去访问ceph集群。不能把这个用户共享给其他客户端。更好的做法是用分开的秘钥,创建一个新的ceph用户去访问特定的pool。

    [root@ceph ceph]# ceph auth get-key client.compute | ssh openstack tee /etc/ceph/ceph.client.compute.keyring
    AQBLHcJYm1XxBBAA75foQeQ72bT3GsGVDzBZcg==
    [root@openstack]# chgrp nova /etc/ceph/ceph.client.compute.keyring
    [root@openstack]# chmod 0640 /etc/ceph/ceph.client.compute.keyring
    

    建一个临时秘钥,用来配置libvirt

    [root@ceph ceph]# ceph auth get-key client.compute | ssh openstack tee /etc/ceph/client.compute
    AQBLHcJYm1XxBBAA75foQeQ72bT3GsGVDzBZcg==
    
    

    把密钥配置在计算节点的ceph.conf文件
    compute节点,其进程需要nova的密钥环文件。

     vi /etc/ceph/ceph.conf
     [client.compute]
     keyring = /etc/ceph/ceph.client.compute.keyring
    

    集成ceph和libvirt
    libvirt进程需要有访问ceph集群的权限。所以需要把nova客户端的密钥存进libvirt。在计算节点上把nova客户端密钥加进libvirt 。

    生成一个uuid

       [root@openstack]# uuidgen    
      c1261b3e-eb93-49bc-aa13-557df63a6347    
    

    创建libvirt secret文件,设置uuid

        <secret ephemeral="no" private="no">    
        <uuid>c1261b3e-eb93-49bc-aa13-557df63a6347</uuid>    
        <usage type="ceph">    
        <name>client.compute secret</name>    
        </usage>    
        </secret>    
    
       [root@openstack]# virsh secret-define --file ceph.xml      
       Secret c1261b3e-eb93-49bc-aa13-557df63a6347 created      
    

    把nova密钥加进libvirt

       [root@openstack]# virsh secret-set-value --secret c1261b3e-eb93-49bc-aa13-557df63a6347  --base64 $(cat client.compute.key)    
        Secret value set    
       [root@openstack]# virsh secret-list    
        UUID                                  Usage    
       ---------------------------------------------------   
        c1261b3e-eb93-49bc-aa13-557df63a6347  ceph client.compute secret    
    

    配置nova
    修改/etc/nova/nova.conf文件里的libvirt部分,增加ceph的认证信息。libvirt会使用该用户来和Ceph集群进行连接和认证。

     [libvirt]
    images_rbd_pool=compute
    images_type=rbd
    rbd_secret_uuid=c1261b3e-eb93-49bc-aa13-557df63a6347
    rbd_user=compute
    

    重启nova compute服务

      [root@openstack]#systemctl restart openstack-nova-compute
    

    测试
    新建一个vm,然后检查VM’s ephemeral disk是否健在ceph上。

      [root@ceph ceph]# rbd -p compute ls
      24e6ca7f-05c8-411b-b23d-6e5ee1c809f9_disk
    
      [root@ceph ceph]# rbd -p compute info 24e6ca7f-05c8-411b-b23d-6e5ee1c809f9_disk
      rbd image '24e6ca7f-05c8-411b-b23d-6e5ee1c809f9_disk':
      size 1024 MB in 256 objects
      order 22 (4096 kB objects)

    阅读全文:http://click.aliyun.com/m/16677/  

  • 相关阅读:
    matplotlib-2D绘图库-面向对象
    C 指针
    POCO库中文编程参考指南(8)丰富的Socket编程
    POCO C++ SOCKET
    c++ poco StreamSocket tcpclient测试用例
    用OpenLayers开发地图应用
    Nginx-rtmp模块实现流媒体play、push、pull功能
    使用pjsip传输已经编码的视频,源码在github
    ReSIProcate源码目录下功能说明
    resiprocate使用入门:内网搭建基于repro的sipproxy测试环境
  • 原文地址:https://www.cnblogs.com/iyulang/p/6699821.html
Copyright © 2020-2023  润新知