ceph rbd與openstack的結合

openstack經過libvirt調用qemu來啓動具體的虛擬機,qemu經過librbd這個庫與librados通訊,而librados是ceph集羣的統一API庫,這樣一來openstack就與ceph rbd聯繫起來了。具體調用流程以下圖所示:
api

須要在ceph端進行的操做以下:ssh

一、爲ceph client建立一系列可用的pools。ui

    根據ceph client的需求及其分類,爲client建立一系列的pools。建立pools須要根據當前集羣中OSDs的數量合理的分配PGs數量以及對象複製的個數。
url

    #ceph osd pool create volumes 128     建立一個名字爲volumes的pool且該pool中的PGs數量爲128;
spa

    #ceph osd pool create images 128
rest

    #ceph osd pool create vms 128
xml

二、爲ceph client建立一系列用戶及其使用集羣的權限。對象

    ceph client不一樣的用戶對集羣有不一樣的使用要求,所以須要根據client用戶的實際需求爲其設置訪問集羣的權限。
ip

    #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=images allow rwx pool=vms'ci

    #ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'

三、將ceph配置文件及其ceph client用戶信息分別上傳給所需的client節點。

    openstack能夠經過glance、cinder以及nova使用ceph,所以須要將ceph配置文件以及ceph client的權限文件上傳給glance、cinder以及nova節點。其中ceph配置文件的位置位於client節點的/etc/ceph/ceph.conf下,ceph client的權限文件位於client節點的/etc/ceph目錄下,對於glance節點權限文件位於/etc/ceph/ceph.client.glance.keyring,對於cinder節點權限文件位於/etc/ceph/ceph.client.cinder.keyring,對於nova節點權限文件位於/etc/ceph/ceph.client.cinder.keyring(nova節點使用cinder用戶來訪問ceph集羣);

    除了client普通用戶使用的keyring外,還須要將ceph集羣上的ceph.client.admin.keyring也上傳到全部client節點的/etc/ceph/目錄下;

四、glance節點的配置。

    對於glance節點須要修改glance節點的配置文件,使得glance節點可使用ceph。glance節點的配置文件位於/etc/glance/glance-api.conf。在該文件中須要添加以下信息:

[glance_store]

default_store = rbd

store = rbd

rbd_store_ceph_conf = /etc/ceph/ceph.conf

rbd_store_user = glance

rbd_store_pool = images

rbd_store_chunk_size = 8

另外,爲了支持copy-on-write clone images功能,須要在配置文件的default節處添加以下信息:

[default]

show_image_direct_url = True

另外,爲了避免讓glance使用本地cache,須要在配置文件的paste_deploy節處設置以下信息:

[paste_deploy]

flavor = keystone

五、cinder節點配置。

    對於cinder節點須要修改cinder節點的配置文件,使得cinder節點可使用ceph。cinder節點的配置文件位於/etc/cinder/cinder.conf。在該文件中須要添加以下信息:

#cinder volume

volume_driver = cinder.volume.drivers.RBDDriver

rbd_pool = volumes

rbd_user = cinder

rbd_secret_uuid = {uuid}

rbd_ceph_conf = /etc/ceph/ceph.conf

rbd_flatten_volume_from_snapshot = True

rbd_max_clone_depth = 5

rbd_store_chunk_size = 4

rados_connect_timeout = -1

glance_api_version = 2

設置了rbd_user和rbd_secret_uuid,則容許nova使用經過cinder使用ceph。

六、nova節點配置。

    1)須要獲取到client.cinder的key值。該值能夠在ceph集羣中的任何節點經過以下命令得到且上傳到nova節點:    

    #ceph auth get-key client.cinder | ssh {nova-ip} tee ceph.client.cinder.key

    2)須要在nova節點上使用uuidgen命令生成一個隨機數:

    #uuidgen

    3)在nova節點上爲libvirt使用ceph,建立secret.xml文件以及將該文件以及隨機數添加到libvirt中,具體操做以下:

    #cat > secret.xml <<EOF

<secret ephemeral='no' private='no'>

    <uuid>{uuid}</uuid>

    <usage type='ceph'>

        <name>client.cinder secret</name>

    </usage>

</secret>

EOF

    #virsh secret-define --file secret.xml

    #virsh secret-set-value --secret {uuid} --base64 $(cat secret.xml)   

    4)配置nova節點的配置文件,使之可使用ceph集羣。nova節點的配置文件位於/etc/nova/目錄下的nova.conf和nova-compute.conf這兩個配置文件。這裏咱們修改nova-compute.conf這個配置文件,在該文件中添加以下內容:

[libvirt]

images_type = rbd

images_rbd_pool = vms

images_rbd_ceph_conf = /etc/ceph/ceph.conf

rbd_user = cinder

rbd_secret_uuid = {uuid}

disk_cachemodes = "network=writeback"

七、從新啓動glance、cinder以及nova節點上對應的服務。

    #service glance-control api restart

    #service cinder-volume restart

    #service nova-compute restart

以上是關於openstack中glance、cinder以及nova如何與ceph rbd相結合的配置介紹。

相關文章
相關標籤/搜索