openstack的glance、nova、cinder使用ceph做后端存储

摘要:
要在OpenStack中使用Ceph块设备,必须首先安装QEMU、libvirt和OpenStack。下图描述了OpenStack/Ceph技术堆栈。OpenStack中有三个地方可以与Ceph块设备结合:映像:OpenStack的Glance管理VM映像。OpenStack使用Cinder服务来管理卷。当libvirt进程从Cinder装载块设备时,它需要访问集群。

块设备与 OPENSTACK

  • 通过 libvirt 你可以把 Ceph 块设备用于 OpenStack ,它配置了 QEMU 到 librbd 的接口。 Ceph 把块设备映像条带化为对象并分布到集群中,这意味着大容量的 Ceph 块设备映像其性能会比独立服务器更好。
    要把 Ceph 块设备用于 OpenStack ,必须先安装 QEMU 、 libvirt 和 OpenStack 。我们建议用一台独立的物理主机安装 OpenStack ,此主机最少需 8GB 内存和一个 4 核 CPU 。下面的图表描述了 OpenStack/Ceph 技术栈。

openstack的glance、nova、cinder使用ceph做后端存储第1张

  • OpenStack 里有三个地方可以和 Ceph 块设备结合:

    • Images: OpenStack 的 Glance 管理着 VM 的 image 。Image 相对恒定, OpenStack 把它们当作二进制文件、并以此格式下载。
    • Volumes: Volume 是块设备, OpenStack 用它们引导虚拟机、或挂载到运行中的虚拟机上。 OpenStack 用 Cinder 服务管理 Volumes 。
    • Guest Disks: Guest disks 是装有客户操作系统的磁盘。默认情况下,启动一台虚拟机时,它的系统盘表现为 hypervisor 文件系统的一个文件(通常位于 /var/lib/nova/instances//)。

前期配置

1.创建存储池

ceph osd pool create volumes 128
ceph osd pool create images 128
ceph osd pool create backups 128
ceph osd pool create vms 128

2.安装ceph客户端包

在运行着glance-api 、 cinder-volume 、 nova-compute 或 cinder-backup 的主机上进行安装

yum -y install python-rbd ceph

3.生成ceph配置文件

在ceph存储的管理节点上,将配置文件同步到ceph客户端

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

4.配置ceph客户端认证

如果ceph启用了客户端认证,则需要为 Nova/Cinder 和 Glance 创建新用户

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

把 client.cinder 、 client.glance 和 client.cinder-backup 的密钥环复制到适当的节点,并更改所有权

ceph auth get-or-create client.glance | ssh {your-glance-api-server} sudo tee /etc/ceph/ceph.client.glance.keyring
ssh {your-glance-api-server} sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring
ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
ceph auth get-or-create client.cinder-backup | ssh {your-cinder-backup-server} sudo tee /etc/ceph/ceph.client.cinder-backup.keyring
ssh {your-cinder-backup-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring

运行 nova-compute 的节点,其进程需要密钥环文件

ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.key

还得把 client.cinder 用户的密钥存进 libvirt 。 libvirt 进程从 Cinder 挂载块设备时要用它访问集群。
在运行 nova-compute 的节点上创建一个密钥的临时副本:

ceph auth get-key client.cinder | ssh {your-compute-node} tee client.cinder.key

然后,在计算节点上把密钥加进 libvirt 、然后删除临时副本:

uuidgen
457eb676-33da-42ec-9a8c-9293d545c337

cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
  <uuid>457eb676-33da-42ec-9a8c-9293d545c337</uuid>
  <usage type='ceph'>
        <name>client.cinder secret</name>
  </usage>
</secret>
EOF
sudo virsh secret-define --file secret.xml
Secret 457eb676-33da-42ec-9a8c-9293d545c337 created
sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml

保留密钥的 uuid ,稍后配置 nova-compute 时要用。

配置 OPENSTACK 使用 CEPH

配置glance

编辑/etc/glance/glance-api.conf
修改glance_store的section内容:

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

如果你想允许使用 image 的写时复制克隆,再添加下列内容到 [DEFAULT] 段下

show_image_direct_url = True

重启glance API服务,并测试

systemctl restart openstack-glance-api.service  openstack-glance-registry.service
source admin-openrc.sh
glance image-create --name "centos6_ceph" --file /root/centos6.5-cloud.qcow2 --disk-format qcow2 --container-format bare   --visibility public --progress
openstack  image list 

配置cinder

OpenStack 需要一个驱动和 Ceph 块设备交互。还得指定块设备所在的存储池名。编辑 OpenStack 节点上的 /etc/cinder/cinder.conf ,添加如下内容

[DEFAULT]
enabled_backends = ceph

[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2
rbd_user = cinder
rbd_secret_uuid = 43f7430d-cce0-46eb-a0fc-a593e27878c2

配置cinder backup

backup_driver = cinder.backup.drivers.ceph
backup_ceph_conf = /etc/ceph/ceph.conf
backup_ceph_user = cinder-backup
backup_ceph_chunk_size = 134217728
backup_ceph_pool = backups
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0
restore_discard_excess_bytes = true

重启cinder-volume服务

 systemctl restart   openstack-cinder-volume.service

在cinder管理节点查看:

[root@controller ~]# cinder-manage service list
Binary           Host                                 Zone             Status     State Updated At
cinder-scheduler controller                           nova             enabled    :-)   2016-09-19 12:44:50  
cinder-volume    compute2@ceph                        nova             enabled    :-)   2016-09-19 12:44:49
cinder-volume    compute1@ceph                        nova             enabled    :-)   2016-09-19 12:44:49

配置nova

编辑所有计算节点上的 /etc/nova/nova.conf 文件,添加如下内容:

libvirt_images_type = rbd
libvirt_images_rbd_pool = vms
libvirt_images_rbd_ceph_conf = /etc/ceph/ceph.conf
libvirt_disk_cachemodes="network=writeback"
rbd_user = cinder
rbd_secret_uuid =43f7430d-cce0-46eb-a0fc-a593e27878c2
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"

注意修改rbd_secret_uuid 为你自己实际的id
最后重启nova-compute服务

systemctl restart  openstack-nova-compute.service

问题汇总:
1.遇到删除云硬盘处于deleteing中,
经查询/var/log/cinder/volume.log日志发现提示一条[Errno 13] Permission denied: '/var/lock/cinder',于是在/var/lock目录下创建cinder目录,并赋予权限,重启cinder相关服务即可删掉。

2.从ceph启动虚拟机做磁盘影射时报错:

openstack的glance、nova、cinder使用ceph做后端存储第2张

经检查发现cinder api 和volumes 之间已经断开通信,重启n遍也不行,最后发现时间同步,同步好时间之后,已可以
故障时:
openstack的glance、nova、cinder使用ceph做后端存储第3张

修复后:
openstack的glance、nova、cinder使用ceph做后端存储第4张

免责声明:文章转载自《openstack的glance、nova、cinder使用ceph做后端存储》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ORACLE的SPFILE与PFILEJDBC(与Oracle的连接)(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

manjaro安装docker,配置镜像拉取加速器

1、安装docker:sudo pacman -S docker2、启动docker服务:sudo systemctl start docker 3、设置docker开机启动服务:sudo systemctl enable docker4、用daocloud的镜像加速服务配置加速器:修改配置文件 sudo vim /etc/docker/daemon.j...

openstack虚拟机导出镜像

当在虚拟机中安装有软件后,为了使用镜像创建虚拟机不再安装软件,而是创建后就会自动安装,需要将原虚拟机导出为镜像。 如下虚拟机,修改密码后,重新打成镜像,创建出虚拟机后,使用新密码登录     查询出镜像所在位置,执行qemu-img convert -c -O qcow2 /var/lib/nova/instances/c4fcf7dd-74db-409...

gitlab安装配置(Ubuntu18和CentOS7)

gitlab_install_on_ubuntu18_centos7 参考文档: 清华大学镜像站及文档: https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/ 1.在 ubuntu18 上安装社区版 gitlab-ce 官方文档默认安装的是企业版 gitlab-ee,如果使用,注意修改安装命令: 官方文档...

openstack 后期维护(四)--- 删除僵尸卷

前言: 在长时间使用openstack之后,删除虚机后,经常会有因这样那样的问题,导致卷处于僵尸状态,无法删除! 状态一: 虚机已近删除,然而卷却挂在到了 None上无法删除 解决办法: 1、#cinder list | grep 卷名称 #查到卷对应的ID 2、#cinder reset-state --attach-status detached3...

(转载)Ubuntu 12.10开启root用户登录图形界面

(转载)http://cofface.org/?p=698 ubuntu默认是关闭了root用户,但是可以通过sudo来提升root权限,这样可以保证系统安全性。以前ubuntu10.10及以下版本可以直接用sudo root passwd指令开启root登录界面,12.10已经屏蔽了此方法,需要通过下面方式进行开启。第一步:先设置一个root的密码,指令...

Linux下的JDK和OpenJDK有什么具体的区别

大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk.  openjdk是jdk的开放原始码版本,以GPL协议的形式放出。openjdk只包含最精简的JDK 在安装openjdk的机器上,输入“java -version”显示的是openjdkopenJDK 与 Sun 的 JDK 功能都是一样的,只是版权信息不一样。 O...