1. Ceph与OpenStack整合(仅为云主机提供云盘功能)

  1. ceph

    1. ceph osd pool create volumes 128 128

    2. 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' -o /etc/ceph/ceph.client.cinder.keyring

  2. 部署一个cinder-volume节点。部署过程中可能报错(部署过程请参考官方文档)
    报错内容:
    2016-05-25 08:49:54.917 24148 TRACE cinder RuntimeError: Could not bind to 0.0.0.0:8776 after trying for 30 seconds
    问题分析:
    RuntimeError->访问违例,这种情况是由于0.0.0.0:8776端口冲突的问题,如果你讲cinder-api和cinder-schduler,cinder-volume部署在同一台机器
    就会有这个端口冲突的问题,我遇到的情况是haproxy的端口和cinder-api的端口都是8776
    解决方法:
    vim /etc/cinder/cinder.conf
    新增如下两行:
    osapi_volume_listen=172.16.209.17
                                          osapi_volume_listen_port=8776

  3. 在ceph的monitor节点创建pool,创建对这个pool有rwx权限的账号,导出该账号的秘钥文件拷贝给cinder-volume节点和需要使用该pool的计算节点,只发送配置文件给cinder-volume节点(计算节点要想获取ceph集群信息由cinder-volume节点告诉他,所以不需要配置文件)

    1. 创建存储池volume-pool,请记池的名字,cinder-volume和compute节点都需要在配置文件中指定这个池

    2. 创建访问volume-pool这个池的账号,注意:下面我标红的部分 ,账号名字必须是client. 开头(client.cinder其中cinder就是你的账号名,client代表你的角色是客户端,),导出的账号秘钥文件命名规则为ceph.client.账号名.keyring(这个文件必须放到ceph客户端的/etc/ceph目录下)

    3. 将ceph集群的配置文件和上一步创建的秘钥文件一并发送给客户端(cinder-volume节点,compute节点),注意:一定要将这两个文件拷贝到ceph客户端的/etc/ceph目录下(cinder.conf中有很多缺省配置,寻找ceph配置文件的路径默认/et/ceph)

    4. scp -r /etc/ceph/ceph.conf  cinder-volume节点ip:/etc/ceph

    5. scp -r /etc/ceph/ceph.client.cinder.keyring cinder-volume节点ip:/et/ceph

    6. scp -r /etc/ceph/ceph.conf  compute节点ip:/etc/ceph

    7. scp -r /etc/ceph/ceph.client.cinder.keyring compute节点ip:/etc/ceph

  4. 配置cinder-volume节点

    1. yum install ceph-common -y

    2. 修改 /etc/cinder/cinder.conf:
      [DEFAULT]
      volume_driver = cinder.volume.drivers.rbd.RBDDriver
      storage_availability_zone=blockstrage03-ceph
      rbd_pool = volume-pool
      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

    3. /etc/init.d/openstack-cinder-volume restart

    4. tail -f /var/log/cinder/volume.log 
      报错:Unable to update stats, RBDDriver -1.1.0  driver is uninitialized.
       问题分析:cinder-volume无法连接ceph集群导致驱动无法正常初始化,请看2->b->i和2->c 标红部分
      解决方法:参照2->b-i和2->c标红部分指示的命名规则重新命名你的文件,以及文件在客户端的存放路径,重启openstack-cinder-volume服务

  5. 配置compute节点,升级qemu-*包,重启libvirtd,制作秘钥文件导入libvirt

    1. [root@compute04 ~]# rpm -qa |grep qemu
      qemu-kvm-tools-0.12.1.2-2.415.el6.3ceph.x86_64
      qemu-kvm-0.12.1.2-2.415.el6.3ceph.x86_64
      gpxe-roms-qemu-0.9.7-6.14.el6.noarch
      qemu-img-0.12.1.2-2.415.el6.3ceph.x86_64
      qemu-guest-agent-0.12.1.2-2.415.el6.3ceph.x86_64

    2. [root@compute04 ~]# virsh version
      Compiled against library: libvirt 0.10.2
      Using library: libvirt 0.10.2
      Using API: QEMU 0.10.2
      Running hypervisor: QEMU 0.12.1

    3. [root@compute04 ~]# /usr/libexec/qemu-kvm -drive format=?
      Supported formats: raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2 qed vhdx parallels nbd blkdebug host_cdrom host_floppy host_device file gluster gluster gluster gluster rbd

    4. [root@compute04 ~]# /usr/libexec/qemu-kvm -M ?
      Supported machines are:
      pc         RHEL 6.5.0 PC (alias of rhel6.5.0)
      rhel6.5.0  RHEL 6.5.0 PC (default)
      rhel6.4.0  RHEL 6.4.0 PC
      rhel6.3.0  RHEL 6.3.0 PC
      rhel6.2.0  RHEL 6.2.0 PC
      rhel6.1.0  RHEL 6.1.0 PC
      rhel6.0.0  RHEL 6.0.0 PC
      rhel5.5.0  RHEL 5.5.0 PC
      rhel5.4.4  RHEL 5.4.4 PC
      rhel5.4.0  RHEL 5.4.0 PC
      如果升级后新建虚拟机碰到上述提示信息,可以修改虚拟机的xml配置文件,machine=‘rhel6.5.0’或者干脆删掉machine,然后用virsh define 虚拟机名字.xml
      <os>
          <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
          <boot dev='hd'/>
          <smbios mode='sysinfo'/>
        </os>

    5. yum install ceph-common -y

    6. 注意:目前生产环境是基于centos6.5构建openstack I版本,openstack-nova-compute-2014.1.5-1.el6.noarch->libvirt-python-0.10.2-54->libvirt 0.10.2-> QEMU 0.12.1,而这个版本的QEMU不支持rbd协议,openstack-nova-compute-2014.1.5-1只支持ibvirt-python-0.10.2-54,如果你升级
      libvirt那么相应的libvirt-python也要升级,进而openstack-nova-compute也要升级,其实你只需要用同一版本的qemu带ceph支持的包替换原来的qemu版本就可以了。

    7. 查看命令(升级后的结果应该是这样)

    8. 升级方法:          Supported formats: raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2 qed vhdx parallels nbd blkdebug host_cdrom host_floppy host_device file gluster gluster gluster gluster rbd --------------->看到这个证明升级成功

    9. 制作secret.xml文件,注意标红部分必须是2->b->i指定的名字

    10. virsh secret-define --file secret.xml

    11. 找到刚刚定义的client.cinder用户的uuid

    12. 找到ceph提供的秘钥文件的秘钥

    13. virsh secret-set-value $(virsh secret-list |grep client.cinder |awk '{print $1}') --base64  $(cat /etc/ceph/ceph.client.cinder.keyring |awk 'NR==2{print $3}')

    14. vim /etc/nova/nova.conf
       rbd_user=cinde
       rbd_secret_uuid=dda10a4e-c03c-b029-ef07-ce86e7a07bdd        ------------------>值为:virsh secret-list |grep client.cinder |awk '{print $1}

    15. /etc/init.d/openstack-nova-compute restart

    16. cat /etc/ceph/ceph.client.cinder.keyring

    17. virsh secret-list

    18. cat > secret.xml <<EOF
      <secret ephemeral='no' private='no'>
        <usage type='ceph'>
          <name>client.cinder secret</name>
        </usage>
      </secret>
      EOF

    19. 链接:http://172.16.201.36/qemu-kvm-for-ceph/或者http://apt-mirror.sepia.ceph.com/centos6-qemu-kvm/

    20. 下载qemu-开头的包,放到本地路径

    21. 切换到本地路径下执行rpm -Uvh qemu-* --force

    22. service libvirtd restart

    23. /usr/libexec/qemu-kvm -drive format=?

延伸:cinder为云主机提供云盘,在计算节点的映射关系

分析:在为云主机添加完云盘后,进入该云主机所在的计算机点

进入云主机fdisk -l,可以发现新增了一块硬盘

进入云主机所在的计算节点,发现同样新增了一块硬盘

问题就是,cinder服务其实就是把硬盘映射给了计算节点,读写请求都交给计算节点去做,然后计算节点负责把该硬盘映射给自己虚拟出来的云主机

在计算节点:

一:                                     1.

[root@compute03 by-path]# ll /dev/disk/by-path/ip-10.5.0.20\:3260-iscsi-iqn.2010-10.org.openstack\:volume-26f04424-7ddb-4756-9648-e023b84bcd5e-lun-1

lrwxrwxrwx. 1 root root 9 May 25 18:43 /dev/disk/by-path/ip-10.5.0.20:3260-iscsi-iqn.2010-10.org.openstack:volume-26f04424-7ddb-4756-9648-e023b84bcd5e-lun-1 -> ../../sdb

二:

[root@compute03 by-path]# cat /etc/libvirt/qemu/instance-00000031.xml |grep disk
<disk type='file' device='disk'>
<source file='/var/lib/nova/instances/db14cd53-b791-4f0b-91cd-0e160dd7b794/disk'/>
</disk>
<disk type='block' device='disk'>
<source dev='/dev/disk/by-path/ip-10.5.0.20:3260-iscsi-iqn.2010-10.org.openstack:volume-26f04424-7ddb-4756-9648-e023b84bcd5e-lun-1'/>
</disk>

Ceph与OpenStack整合(仅为云主机提供云盘功能)的更多相关文章

  1. 干货|带你体验一次原生OpenStack云平台发放云主机的过程

    一个执着于技术的公众号 1 前言 上一章节我们完成了OpenStack云平台的搭建工作,今天就带大家一起学习下如何发放一台云主机 点击查看:如何搭建一套OpenStack云平台 2 发放OpenSta ...

  2. ceph与openstack对接

    对接分为三种,也就是存储为openstack提供的三类功能1.云盘,就好比我们新加的硬盘2.原本的镜像也放在ceph里,但是我没有选择这种方式,原因是因为后期有要求,但是我会把这个也写出来,大家自己对 ...

  3. ceph与openstack对接(cinder、glance、nova)

    对接分为三种,也就是存储为openstack提供的三类功能1.云盘,就好比我们新加的硬盘2.原本的镜像也放在ceph里,但是我没有选择这种方式,原因是因为后期有要求,但是我会把这个也写出来,大家自己对 ...

  4. 真假云主机,VPS资料集合

    资料来源: http://www.west263.com/services/CloudHost/pk.asp?ads=baidu912 用"云里雾里"形容中小企业用户对云计算的理解 ...

  5. 云主机和vps的区别

    云主机和vps的区别   近年来,IT行业开始热衷于各种云概念,而云主机就是其中之一,并且有越来越热之势.对普通用户而言,可能不太清楚云主机和VPS的区别,下面我们就来说说云主机和VPS到底有什么不同 ...

  6. 虚拟主机、VPS以及云主机的区别和对比

    对于很多需要建网站的朋友来说,虚拟主机是必须要了解的基础知识.虚拟主机相对于VPS与云主机来说出现的较早,也是被大多数站长所了解的主机.很多人容易将这三者混淆,弄不清楚三者的联系与区别.那么虚拟主机. ...

  7. 虚拟主机,VPS,云主机之间的区别?

    虚拟主机即共享主机,是利用虚拟技术把一台完整的服务器分成若干个主机,拥有多个网站,共享这台服务器的硬件和带宽的资源.可以托管简单的静态和动态的网站,满足客户最基本的网络托管需求. VPS是将一台物理服 ...

  8. VPS、虚拟主机、云主机的区别

    引用知乎网友通俗的例子解释: 1. 小王是深圳的一拆迁户,有钱任性:自己租了一块地皮[带宽],盖了一栋10000平方的房子[服务器],计划租给别人赚钱.2. 但是10000平方的房子太大,能租起的人太 ...

  9. 云主机文件系统readonly处理案例

    本文由作者朱益军授权网易云社区发布. 背景 维护巡检云主机时,发现有一台运行redis的云主机状态显示维护中,登录该实例查看,系统盘变成readonly.本文简单分析该问题出现原因,并为运维人员提供常 ...

随机推荐

  1. vue项目如何打包扔向服务器

    vue项目如何打包扔向服务器   当我们将 vue 项目完成后,面临的就是如何将项目进行打包上线,放到服务器中.我使用的是 vue-cli(simple) 脚手架,所以就讲一下如何将项目进行打包,并放 ...

  2. Java中String.valueOf、toString、(String)的区别

    原文地址http://blog.csdn.net/yangzhaomuma/article/details/51173138 原文地址https://www.cnblogs.com/xhyouyou/ ...

  3. python基础(数字、字符串、布尔值、字典数据类型简介)

    一 执行第一个python程序 1.下载安装python2.7和python3.6的版本及pycharm,我们可以再解释器中输入这样一行代码: 则相应的就打出了一句话.这里的print是打印的意思.你 ...

  4. TRegExpr正则表达式

    TRegExpr正则表达式 2006-10-24 10:55 DELPHi中的REGEXPR   [ 2006-03-29 11:33:46 am | Author: Admin ] 其实这个Pasc ...

  5. 转:asp.net获取url各项参数

    假设当前页完整地址是:http://www.test.com/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.te ...

  6. Wannafly交流赛1_B_硬币【数学】

    Wannafly交流赛1_B_硬币[数学] 链接:https://www.nowcoder.com/acm/contest/69/B 来源:牛客网 题目描述 蜥蜴的生日快到了,就在这个月底! 今年,蜥 ...

  7. JavaScript的消息机制

    JavaScript本身是单线程的,但它却是事件驱动的.类似Windows窗体应用程序,它也需要消息队列机制来实现.程序的执行并不是连续的,绝大多数时间都在等待消息.每次执行执行程序都是在响应消息,这 ...

  8. Python3.x:第三方库简介

    Python3.x:第三方库简介 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex ...

  9. 插入算法分别从C,java,python三种语言进行书写

    真正学懂计算机的人(不只是“编程匠”)都对数学有相当的造诣,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”. 作为一个初级编程人员或者说是一个 ...

  10. kali安装后配置

    0x00.安装Vmware Tools 由于是在VMware Workstation里面安装的,所以需要首先安装VMware tools工具方便我们Ctrl+C和Ctrl+V,步骤如下: 在VMWar ...