使用Ceph作为OpenStack的后端存储配置过程详解

云计算 OpenStack
libvirt配置了librbd的QEMU接口,通过它可以在OpenStack中使用Ceph块存储。Ceph块存储是集群对象,这意味着它比独立的服务器有更好的性能。

[[131208]]

概述

libvirt配置了librbd的QEMU接口,通过它可以在OpenStack中使用Ceph块存储。Ceph块存储是集群对象,这意味着它比独立的服务器有更好的性能。

在OpenStack中使用Ceph块设备,必须首先安装QEMU,libvirt和OpenStack,下图描述了 OpenStack和Ceph技术层次结构:

使用Ceph作为OpenStack的后端存储配置过程

http://my.oschina.net/JerryBaby/blog/376580 我翻译的官方文档,仅供参考 ^ ^。

系统规划

OpenStack集群:

控制节点:openstack(controller)192.168.1.131

计算节点:compute 192.168.1.132

存储节点:storage 192.168.1.133

Ceph集群:

monitor、mds、osd0 节点:openstack(controller)192.168.1.131

osd1:compute 192.168.1.132

osd2:storage 192.168.1.133

系统架构:

 

使用Ceph作为OpenStack的后端存储配置过程

#p#

配置过程

Important:由于这里将两套集群服务部署在了同一组节点上,所以配置过程中省略了一些关于Ceph集群的配置。

创建存储池

  1. # ceph osd pool create volumes 128 
  2.  
  3. # ceph osd pool create images 128 
  4.  
  5. # ceph osd pool create vms 128 

设置Ceph客户端认证

在OpenStack节点执行如下命令:

  1. # 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' 
  2.  
  3. # ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images' 

为client.cinder,client.glance添加密钥文件来访问节点并改变属主:

  1. # ceph auth get-or-create client.glance | ssh openstack sudo tee /etc/ceph/ceph.client.glance.keyring 
  2.  
  3. # ssh openstack sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring 
  4.  
  5. # ceph auth get-or-create client.glance | ssh compute sudo tee /etc/ceph/ceph.client.glance.keyring 
  6.  
  7. # ssh compute sudo chown nova:nova /etc/ceph/ceph.client.glance.keyring 
  8.  
  9. # ceph auth get-or-create client.cinder | ssh compute sudo tee /etc/ceph/ceph.client.cinder.keyring 
  10.  
  11. # ssh compute sudo chown nova:nova /etc/ceph/ceph.client.cinder.keyring 
  12.  
  13. # ceph auth get-or-create client.cinder | ssh storage sudo tee /etc/ceph/ceph.client.cinde.keyring 
  14.  
  15. # ssh storage sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring 

运行nova-compute的节点nova-compute进程需要密钥文件。它们也存储client.cinder用户的密钥在libvirt。libvirt进程在Cinder中绑定块设备时需要用到它来访问集群。

在nova-compute节点创建一个临时的密钥副本:

  1. # uuidgen 
  2.  
  3. 457eb676-33da-42ec-9a8c-9293d545c337 
  4.  
  5. # cat > secret.xml < 
  6.  
  7.  
  8. 457eb676-33da-42ec-9a8c-9293d545c337 
  9.  
  10.  
  11. client.cinder secret 
  12.  
  13. EOF 
  14.  
  15. # sudo virsh secret-define --file secret.xml 
  16.  
  17. # sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml 

配置Glance

编辑 /etc/glance/glance-api.conf并添加如下内容:

  1. [DEFAULT] 
  2.  
  3. default_store = rbd 
  4.  
  5. ... 
  6.  
  7. [glance_store] 
  8.  
  9. stores = rbd 
  10.  
  11. rbd_store_pool = images 
  12.  
  13. rbd_store_user = glance 
  14.  
  15. rbd_store_ceph_conf = /etc/ceph/ceph.conf 
  16.  
  17. rbd_store_chunk_size = 8 

如果要启动镜像的写时复制功能,添加下面的 [DEFAULT] 部分:

  1. show_image_direct_url = True 

配置Cinder

在openstack节点和storage节点编辑 /etc/cinder/cinder.conf配置文件并添加如下内容:

  1. volume_driver = cinder.volume.drivers.rbd.RBDDriver 
  2.  
  3. rbd_pool = volumes 
  4.  
  5. rbd_ceph_conf = /etc/ceph/ceph.conf 
  6.  
  7. rbd_flatten_volume_from_snapshot = false 
  8.  
  9. rbd_max_clone_depth = 5 
  10.  
  11. rbd_store_chunk_size = 4 
  12.  
  13. rados_connect_timeout = -1 
  14.  
  15. glance_api_version = 2 

如果使用cephx验证,需要配置user和uuid:

  1. rbd_user = cinder 
  2.  
  3. rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337 

配置Nova

为了挂载Cinder设备(普通设备或可引导卷),必须指明使用的用户及UUID。libvirt将使用期在Ceph集群中进行连接和验证:

  1. rbd_user = cinder 
  2.  
  3. rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337 

编辑 /etc/nova/nova.conf并添加如下内容:

  1. [libvirt] 
  2.  
  3. images_type = rbd 
  4.  
  5. images_rbd_pool = vms 
  6.  
  7. images_rbd_ceph_conf = /etc/ceph/ceph.conf 
  8.  
  9. rbd_user = cinder 
  10.  
  11. rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337 
  12.  
  13. libvirt_live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST" 

禁用文件注入。当启动一个实例的时候,nova通常会尝试打开rootfs。这时,nova注入一些数据,如密码、ssh 密钥,配置文件等到文件系统中。然而,这***依靠元数据服务和cloud-init来完成。

在每个计算节点,编辑 /etc/nova/nova.conf 在 [libvirt] 标签添加:

  1. libvirt_inject_password = false 
  2.  
  3. libvirt_inject_key = false 
  4.  
  5. libvirt_inject_partition = -2 

重启服务

  1. # sudo glance-control api restart 
  2.  
  3. # sudo service nova-compute restart 
  4.  
  5. # sudo service cinder-volume restart 
  6.  
  7. # sudo service cinder-backup restar 

#p#

从块设备引导

Ceph后端存储状况:

 

使用Ceph作为OpenStack的后端存储配置过程

Ceph不支持从qcow2格式的镜像引导,所以创建一个raw格式的镜像:

 

使用Ceph作为OpenStack的后端存储配置过程

创建一个可引导卷:

使用Ceph作为OpenStack的后端存储配置过程

 

 

 

从可引导卷创建一个实例:

 

使用Ceph作为OpenStack的后端存储配置过程

查看Ceph存储状况:

使用Ceph作为OpenStack的后端存储配置过程


 

责任编辑:Ophira 来源: 开源中国博客
相关推荐

2017-12-06 14:35:01

OpenStackCeph存储

2018-05-22 08:37:02

Ceph存储存储系统

2017-03-06 09:32:50

CephKVM虚拟机

2023-03-02 08:00:26

后端存储InfluxDB

2018-04-12 08:37:27

2022-09-28 08:00:43

MinioS3接口

2018-09-21 11:00:58

Ceph存储系统

2011-09-01 13:09:58

SQL Server DataTable作为

2018-08-20 10:14:21

Ceph存储ObjectStore

2020-11-26 10:33:44

MySQL存储函数

2021-10-15 06:43:11

数据库存储过程

2011-08-09 09:49:23

存储过程SQL语句数据库

2012-07-12 16:00:32

OpenStackSwift架构

2022-09-06 08:00:57

Ceph分布式存储系统

2012-03-08 10:18:33

JavaOracle

2016-01-31 17:44:46

星辰天合OpenStackCeph

2009-07-08 17:17:16

JDBC调用存储过程

2009-09-09 10:54:52

Linq存储过程返回

2021-09-30 19:00:17

对象存储Ceph

2021-04-26 08:03:18

Nexus容器镜像仓库开发
点赞
收藏

51CTO技术栈公众号