块设备与 OPENSTACK

  • 通过 libvirt 你可以把 Ceph 块设备用于 OpenStack ,它配置了 QEMU 到 librbd 的接口。 Ceph 把块设备映像条带化为对象并分布到集群中,这意味着大容量的 Ceph 块设备映像其性能会比独立服务器更好。

    要把 Ceph 块设备用于 OpenStack ,必须先安装 QEMU 、 libvirt 和 OpenStack 。我们建议用一台独立的物理主机安装 OpenStack ,此主机最少需 8GB 内存和一个 4 核 CPU 。下面的图表描述了 OpenStack/Ceph 技术栈。

  • 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.创建存储池

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

2.安装ceph客户端包

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

  1. yum -y install python-rbd ceph

3.生成ceph配置文件

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

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

4.配置ceph客户端认证

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

  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. ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
  3. 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 的密钥环复制到适当的节点,并更改所有权

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

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

  1. 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 的节点上创建一个密钥的临时副本:

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

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

  1. uuidgen
  2. 457eb676-33da-42ec-9a8c-9293d545c337
  3. cat > secret.xml <<EOF
  4. <secret ephemeral='no' private='no'>
  5. <uuid>457eb676-33da-42ec-9a8c-9293d545c337</uuid>
  6. <usage type='ceph'>
  7. <name>client.cinder secret</name>
  8. </usage>
  9. </secret>
  10. EOF
  11. sudo virsh secret-define --file secret.xml
  12. Secret 457eb676-33da-42ec-9a8c-9293d545c337 created
  13. 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内容:

  1. [glance_store]
  2. stores = rbd
  3. default_store = rbd
  4. rbd_store_pool = images
  5. rbd_store_user = glance
  6. rbd_store_ceph_conf = /etc/ceph/ceph.conf
  7. rbd_store_chunk_size = 8

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

  1. show_image_direct_url = True

重启glance API服务,并测试

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

配置cinder

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

  1. [DEFAULT]
  2. enabled_backends = ceph
  3. [ceph]
  4. volume_driver = cinder.volume.drivers.rbd.RBDDriver
  5. rbd_pool = volumes
  6. rbd_ceph_conf = /etc/ceph/ceph.conf
  7. rbd_flatten_volume_from_snapshot = false
  8. rbd_max_clone_depth = 5
  9. rbd_store_chunk_size = 4
  10. rados_connect_timeout = -1
  11. glance_api_version = 2
  12. rbd_user = cinder
  13. rbd_secret_uuid = 43f7430d-cce0-46eb-a0fc-a593e27878c2

配置cinder backup

  1. backup_driver = cinder.backup.drivers.ceph
  2. backup_ceph_conf = /etc/ceph/ceph.conf
  3. backup_ceph_user = cinder-backup
  4. backup_ceph_chunk_size = 134217728
  5. backup_ceph_pool = backups
  6. backup_ceph_stripe_unit = 0
  7. backup_ceph_stripe_count = 0
  8. restore_discard_excess_bytes = true

重启cinder-volume服务

  1. systemctl restart openstack-cinder-volume.service

在cinder管理节点查看:

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

配置nova

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

  1. libvirt_images_type = rbd
  2. libvirt_images_rbd_pool = vms
  3. libvirt_images_rbd_ceph_conf = /etc/ceph/ceph.conf
  4. libvirt_disk_cachemodes="network=writeback"
  5. rbd_user = cinder
  6. rbd_secret_uuid =43f7430d-cce0-46eb-a0fc-a593e27878c2
  7. 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服务

  1. 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启动虚拟机做磁盘影射时报错:

经检查发现cinder api 和volumes 之间已经断开通信,重启n遍也不行,最后发现时间同步,同步好时间之后,已可以

故障时:

修复后:

openstack的glance、nova、cinder使用ceph做后端存储的更多相关文章

  1. 配置nova服务使用ceph作为后端存储

    在ceph监视器上执行 1.创建pool池 为nova服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1) ceph osd pool create nova-vms 32 ceph ...

  2. 配置cinder-backup服务使用ceph作为后端存储

    在ceph监视器上执行 CINDER_PASSWD='cinder1234!'controllerHost='controller'RABBIT_PASSWD='0penstackRMQ' 1.创建p ...

  3. 配置cinder-volume服务使用ceph作为后端存储

    在ceph监视器上执行 CINDER_PASSWD='cinder1234!'controllerHost='controller'RABBIT_PASSWD='0penstackRMQ' 1.创建p ...

  4. 配置glance使用ceph作为后端存储

    在ceph监视器上执行 1.创建pool池 为glance服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1) ceph osd pool create glance-images  ...

  5. k8s使用ceph作为后端存储挂载

    一.在ceph集群上操作: 1.创建池(主要使用存储类来进行持久卷的挂载,其他的挂载方式不好使也太麻烦):ceph osd pool create k8s 64 二.在k8s上操作: 1.安装客户端( ...

  6. [k8s]k8s配置nfs做后端存储&配置多nginx共享存储&&statefulset配置

    所有节点安装nfs yum install nfs-utils rpcbind -y mkdir -p /ifs/kubernetes echo "/ifs/kubernetes 192.1 ...

  7. 配置Ceph集群为OpenStack后端存储

    配置Ceph存储为OpenStack的后端存储 1  前期配置 Ceph官网提供的配置Ceph块存储为OpenStack后端存储的文档说明链接地址:http://docs.ceph.com/docs/ ...

  8. Openstack使用NFS作为后端存储

    续:Openstack块存储cinder安装配置 接上使用ISCSI作为后端存储,使用NFS作为后端存储配置 参考官方文档:https://wiki.openstack.org/wiki/How_to ...

  9. 高可用OpenStack(Queen版)集群-15.Glance&Cinder集成Ceph

    参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...

随机推荐

  1. Linux进阶:让效率翻倍的Bash技巧(一)

    http://blog.tpircsboy.com/tech/bash-skills-part1/

  2. 关于Unity树形插件Tree View Control的相关搜集

    博客http://blog.csdn.net/qq_15267341/article/details/51997926      的这个   Script Based Runtime Tree-Vie ...

  3. vue分享插件

    vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点.github地址:https://github. ...

  4. 在WMware新建一个虚拟机

  5. 消息队列(RabbitMQ、zorneQ、metaQ、activeMQ)

    术语: AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计. JMS, ...

  6. html静态页面调用php文件

    如在页面a.html中用下面这句调用,可以将action=test的参数传递到b.php. Javascript代码 <script type="text/javascript&quo ...

  7. redis4安装

    第一步官网下载 https://redis.io/ rz 上传或者直接wget   http://download.redis.io/releases/redis-4.0.2.tar.gz 2.将其下 ...

  8. Golang map 如何进行删除操作?

    Cyeam 关注 2017.11.02 10:02* 字数 372 阅读 2784评论 0喜欢 3 map 的删除操作 Golang 内置了哈希表,总体上是使用哈希链表实现的,如果出现哈希冲突,就把冲 ...

  9. tomcat http协议与ajp协议

    AJP13是定向包协议.因为性能原因,使用二进制格式来传输可读性文本.WEB服务器通过 TCP连接和SERVLET容器连接.为了减少进程生成 socket的花费,WEB服务器和SERVLET容器之间尝 ...

  10. navicat上如何导出视图,函数等

    如何导出视图,函数,一般通过linux命令行,如果简单点就用navicat把. image.png 这样函数,视图都可以导出来后续更新.....