Ceph與OpenStack整合(僅爲雲主機提供雲盤功能)

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. image2016-5-25%2011%3A1%3A20.png?version

    2. yum install ceph-common -y 

    3. 修改 /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

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

    5. 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. image2016-5-25%2010%3A57%3A0.png?version

    6. yum install ceph-common -y

    7. 注意:目前生產環境是基於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版本就可以了。

    8. 查看命令(升級後的結果應該是這樣)

    9. 升級方法:          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 --------------->看到這個證明升級成功

    10. 製作secret.xml文件,注意標紅部分必須是2->b->i指定的名字

    11. virsh secret-define --file secret.xml

    12. 找到剛剛定義的client.cinder用戶的uuid

    13.  找到ceph提供的祕鑰文件的祕鑰

    14.  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}')

    15. 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}

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

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

    18. virsh secret-list

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

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

    21. 下載qemu-開頭的包,放到本地路徑

    22. 切換到本地路徑下執行rpm -Uvh qemu-* --force

    23. service libvirtd restart

    24. /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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章