• OpenStack集成ceph


    openstack组件集成ceph

    OpenStack集成ceph详细过程可以查看ceph官方文档:ceph document

    OpenStack Queens版本,1台控制节点controller,1台计算节点compute;

    1. 创建存储池

    1. Glance:Glance可以把镜像存储在Ceph上;

    2. Cinder:Cinder负责管理volume,把volume挂载给instance使用或者直接从volume启动instance。集成Ceph后可以让Cinder在Ceph上创建volume;

    3. Nova:在OpenStack Havana版本开始,Nova可以直接把instance的disk存放在Ceph上。

    在Ceph集群上总共创建3个存储池,分别给Glance,Cinder和Nova使用;

    1. backups: 存放备份文件

    2. 配置OpenStack的ceph客户端

    2.1. 拷贝ceph.conf

    把Ceph的配置文件/etc/ceph/ceph.conf拷贝到2台OpenStack节点上,控制节点和计算节点都需要,因为他们都要跟Ceph通信。

    ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
    

    注意:

    运行着 glance-apicinder-volumenova-computecinder-backup 的主机被当作 Ceph 客户端,它们都需要 ceph.conf 文件。

    2.2. 安装软件包

    在控制节点安装python-rbd和ceph软件包:

    [root@controller   ~]# yum install -y python-rbd ceph
    

    在计算节点安装ceph:

    [root@compute   ~]# yum install -y ceph
    

    注意: 如果不安装ceph,OpenStack在使用Ceph时会报找不到ceph命令。

    2.3. 配置cephx认证

    创建client.cinder用户给Cinder和Nova使用,cinder用户有存储池volumes、vms、images的所有权限

    [root@ceph1 ~]# ceph auth get-or-create client.cinder mon 'allow   r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes,   allow rwx pool=vms, allow rx pool=images'
    

    创建client.glance用户给Glance使用,glance用户有存储池images的所有权限

    [root@ceph1 ~]# ceph auth get-or-create client.glance mon 'allow   r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
    

    生成2个用户的密钥文件,

    [root@ceph1 ~]# ceph auth   get-or-create client.cinder > /etc/ceph/ceph.client.cinder.keyring
    
    [root@ceph1 ~]# ceph auth   get-or-create client.glance > /etc/ceph/ceph.client.glance.keyring
    

    然后把/etc/ceph/ceph.client.cinder.keyring和/etc/ceph/ceph.client.glance.keyring拷到controller的/etc/ceph下,并且修改文件权限:

    [root@controller ~]# chown cinder:cinder   /etc/ceph/ceph.client.cinder.keyring
    
    [root@controller ~]# chown   glance:glance /etc/ceph/ceph.client.glance.keyring
    

    把/etc/ceph/ceph.client.cinder.keyring拷到compute的/etc/ceph下,并且修改文件权限:

    [root@compute ~]# chown nova:nova   /etc/ceph/ceph.client.cinder.keyring
    

    2.4. 配置compute节点的libvirt

    在ceph上获取client.cinder的key

    [root@ceph1 ~]# ceph auth get-key   client.cinder > client.cinder.key
    

    把client.cinder.key拷到compute节点的/etc/ceph下,在compute节点上执行以下步骤:

    [root@compute ~]# cat > secret.xml <<EOF
    <secret   ephemeral='no' private='no'>   <uuid>e21a123a-31f8-425a-86db-7204c33a6161</uuid> <usage   type='ceph'> <name>client.cinder secret</name> </usage>   </secret>
    EOF
    [root@compute ~]# virsh secret-define --file secret.xml
    [root@compute ~]# virsh secret-set-value --secret e21a123a-31f8-425a-86db-7204c33a6161   --base64 $(cat /etc/ceph/client.cinder.key) && rm client.cinder.key   secret.xml
    

    3. 配置Glance

    修改glance-api.conf,

    [DEFAULT]
    ......
    default_store = rbd
    [glance_store]
    stores = rbd
    rbd_store_chunk_size = 8
    rbd_store_pool = images
    rbd_store_user = glance
    rbd_store_ceph_conf = /etc/ceph/ceph.conf
    

    重启Glance服务,

    [root@controller ~]# systemctl restart   openstack-glance-api openstack-glance-registry
    

    4. 配置Cinder

    修改cinder.conf

    [DEFAULT]
    ......
    enabled_backends = ceph
    [ceph]
    rbd_pool = volumes
    rbd_user = cinder
    rbd_ceph_conf = /etc/ceph/ceph.conf
    rbd_flatten_volume_from_snapshot = false
    rbd_secret_uuid =   e21a123a-31f8-425a-86db-7204c33a6161
    rbd_max_clone_depth = 5
    rbd_store_chunk_size = 4
    rados_connect_timeout = -1
    volume_driver = cinder.volume.drivers.rbd.RBDDriver
    volume_backend_name = ceph
    

    重启Cinder服务,

    [root@controller   ~]# systemctl restart openstack-cinder-api openstack-cinder-volume
    

    5. 配置Nova

    修改compute节点的nova.conf,

    [libvirt]
    virt_type=kvm
    inject_password=false
    inject_key=false
    inject_partition=-2
    disk_cachemodes = "network=writeback"
    images_type=rbd
    images_rbd_pool=vms
    images_rbd_ceph_conf = /etc/ceph/ceph.conf
    hw_disk_discard=unmap
    rbd_user=cinder
    rbd_secret_uuid=e21a123a-31f8-425a-86db-7204c33a6161
    

    重启nova-compute服务,

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

    6. 验证

    创建测试镜像

    [root@controller ~]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
    #Glance以Ceph RBD为后端存储时只支持raw格式,不是raw格式创建实例时会出错
    [root@controller ~]# qemu-img convert -f   qcow2 -O raw cirros-0.4.0-x86_64-disk.img cirros-0.4.0-x86_64-disk.raw
    [root@controller ~]# openstack image   create "cirros"   --file   cirros-0.4.0-x86_64-disk.raw     --disk-format raw --container-format bare   --public
    

    有两种在Ceph上启动实例的方式:

    1. 以镜像为基础创建可启动的卷,然后启动实例时选择boot-from-volume,选择此卷;

    2. 直接使用镜像创建实例,这种用法是Havana版本后才支持的。

    创建实例

    ​ 测试

    7. 总结

    OpenStack集成ceph,作为cinder、nova、glance的后端存储,整体过程:

    (1)搭建ceph集群,在Ceph集群上总共创建4个存储池,分别给Glance,Cinder,Nova和backup使用

    (2)将Ceph的配置文件/etc/ceph/ceph.conf拷贝到2台OpenStack节点,以便节点可以和ceph集群进行通信,运行着 glance-apicinder-volumenova-computecinder-backup 的主机被当作 Ceph 客户端,它们都需要 ceph.conf 文件。

    (3)在OpenStack中配置ceph客户端

    (4)修改Glance的配置文件,支持ceph后端存储

    (5)修改Cinder的配置文件,支持ceph后端存储

    (6)修改Nova的配置文件,支持ceph后端存储

    上述过程完成后,即可将OpenStack的所有存储工作交给ceph来管理,在OpenStack数据的容灾备份方面即有ceph来接管。

    具体实现OpenStack数据容灾备份备份,可参考博文:ceph中rbd的备份和恢复

    文章参考:OpenStack集成ceph

  • 相关阅读:
    NSUserDefaults写作和阅读对象定义自己
    JavaScript三在弹出的对话框中
    mybatis02 架构
    mybatis01
    oracle17 视图
    oracle16 例外
    oracle15 pl/sql 分页
    oracle14 复杂数据类型
    oracle13 触发器 变量
    oracle12 pl/sql
  • 原文地址:https://www.cnblogs.com/jimlau/p/11953782.html
Copyright © 2020-2023  润新知