将 Ceph 存储集群集成到 OpenStack 云中

查看数: 18196 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-4-9 23:18

正文摘要:

问题导读 1.Ceph 生态系统可分解为哪5部分? 2.OSD是什么进程?它的作用是什么? 3.CRUSH 算法在Ceph中发挥什么作用? Ceph 是一个符合 POSIX (Portable Operating System for UNIX&#174;)、 ...

回复

bluebaby2006 发表于 2015-4-10 09:17:09
好资料  就是得融合呀
desehawk 发表于 2015-4-9 23:23:02
进一步补充:

OpenStack 和 Ceph 集成
也许Ceph最有意思的部分就是同OpenStack的集成了。所以在讨论Ceph RadosGW之前,我将先对这部分进行展示。我假定你在看下面的OpenStack同Ceph的集成指南之前,已经架设成功并让Ceph集群(Bobtail->)和OpenStack(Folsom->)运行了起来。Ceph通过利用libvirt和OpenStack一起使用块设备,其中的libvirt配置了QEMU同librbd的接口。OpenStack中有两个部分同Ceph的块设备进行了集成:
  • 映像(Image): 使用OpenStack Glance对VM的映像进行管理
  • 卷(Volume): OpenStack使用卷来启动VM,它还能向运行中的VM添加额外的卷



Ceph 集群
创建卷池和图像池:

  1. rados mkpool volumes
  2. rados mkpool images
复制代码


增加两个池的复制水平:

  1. ceph osd pool set volumes size 3
  2. ceph osd pool set images size 3
复制代码


现在,为两个池创建 Ceph 客户端和密钥环:

  1. ceph auth get-or-create client.volumes mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rx pool=images' -o /etc/ceph/client.volumes.keyring
  2. ceph auth get-or-create client.images mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images' -o /etc/ceph/client.images.keyring
复制代码


将上面的密钥环复制到 glance-api并将 cinder-volume 节点和 ceph.conf 文件拷贝到 /etc/ceph/目录下。运行 nova-compute 的主机无需密钥环。替代的,他们讲密钥储存于 libvirt。要创建 libvirt 密钥,你需要来自 client.volumes.keyring 的密钥。你可以通过下面命令取得:

  1. ceph-authtool -p -n client.volumes /etc/ceph/client.volumes.keyring > /etc/ceph/client.volumes
复制代码


当需要时,拷贝这个密钥到 nova-compute 节点。在设置完成后,你可以删除它。同时,要安装 Ceph 组件,你需要 Ceph 官方库(ubuntu):

  1. wget -q -O - 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | apt-key add -
  2. echo "deb http://ceph.com/debian-cuttlefish/ precise main" >> /etc/apt/sources.list.d/ceph.list
复制代码


在你拷贝 Ceph 集群的 ceph.conf 到 glance-api,且 cinder-volume 节点更新密钥环路径之后:

  1. [client.volumes]
  2.     keyring = /etc/ceph/client.volumes.keyring
  3. [client.images]
  4.     keyring = /etc/ceph/client.images.keyring
  5. Khiyuan
  6. Khiyuan
复制代码



在 glance-api 主机,你需要为 librbd 绑定 Python:

  1. apt-get install -y python-ceph
复制代码


更新你的 glance-api 配置文件(/etc/glance/glance-api.conf):

  1. default_store = rbd
  2. rbd_store_user = images
  3. rbd_store_pool = images
  4. show_image_direct_url = True
复制代码


并重启 glance-api 服务:

  1. service glance-api restart
  2. Nova compute
复制代码


创建临时的 secret.xml 文件:

  1. cat > secret.xml <<EOF
  2. <secret ephemeral='no' private='no'>
  3.   <usage type='ceph'>
  4.     <name>client.volumes secret</name>
  5.   </usage>
  6. </secret>
  7. EOF
复制代码


从创建的 secret.xml 文件创建密钥:

  1. virsh secret-define --file secret.xml
复制代码

设定 libvirt 使用上面的密钥:
  1. virsh secret-set-value --secret your_key \
  2.                        --base64 $(cat /path/to/client.volumes)
  3. rm client.volumes secret.xml
复制代码



将密钥记录下载,以便于使用上面的命令添加节点。你也需要使用这个密钥来配置 cinder。重启 nova-compute:
  1. service nova-compute restart
复制代码



从Ceph 源更新 librbd 到最新版本。 Ubuntu 所带版本较老,无法工作:

  1. apt-get upgrade librbd
  2. Khiyuan
  3. Khiyuan
复制代码


Cinder 卷
在 cinder-volume 主机,安装客户端命令行工具:

  1. apt-get install -y ceph-common
复制代码


更新 cinder 配置 (/etc/cinder/cinder.conf):

  1. #iscsi_helper = tgtadm
  2. #volumes_dir = /var/lib/cinder/volumes
  3. # Folsom
  4. #volume_driver=cinder.volume.driver.RBDDriver
  5. # Grizzly
  6. volume_driver=cinder.volume.drivers.rbd.RBDDriver
  7. rbd_pool=volumes
  8. rbd_user=volumes
  9. # libvirt secret key
  10. rbd_secret_uuid=your_key
复制代码


在 cinder 启动脚本配置文件(/etc/init/cinder-volume.conf)的“stop on runlevel [!2345]” 之后添加如下代码:

  1. env CEPH_ARGS="--id volumes"
复制代码


重启 cinder-volume 服务:

  1. service cinder-volume restart
复制代码


所有完成后,你应该可以储存 glance 图像,创建卷,通过卷将它们附加到运行机器或启动机器上。同时,Ceph 兼容敏捷API,你可以将对象直接横向传递给 Ceph。更多信息将在我说道 RadosGW 时提及。






关闭

推荐上一条 /2 下一条