思路及實現:
1.承接前兩篇文章,鏡像服務的存儲 池爲p_w_picpaths,雲盤的存儲池爲volumes,目前要完成openstack新建雲主機磁盤鏡像文件直接存放到ceph中去(在ceph中新建存儲池vms)。
雲主機在啓動時需要有能訪問鏡像存儲池p_w_picpaths和雲盤存儲池volumes的能力,所以你需要在ceph集羣的monitor節點新建存儲池vms,同時新建賬號,該賬號具有對vms,p_w_picpaths,
以及volumes三個存儲池的rwx權限
2.這裏請務必注意一個細節:回憶第一篇ceph與openstack整合僅作爲雲盤掛載,我們新建了一個賬號client.cinder,該賬號對volumes池有rwx權限,然後我們分發配置文件和client.cinder賬號的祕鑰文件給cinder-volume節點,分發client.cinder的祕鑰文件給計算節點,同時利用該祕鑰文件製作了uuid,然後將該uuid寫入到了compute節點的配置文件中,二此uuid唯一(這也就意味着:計算節點祕鑰uuid----->client.cinder用戶------>(rwx)ceph的volumes池),所以我們必須在ceph集羣原有賬號client.cinder的基礎上新增對vms,p_w_picpaths的rwx權限,然後cinder和compute節點公用client.cinder賬號)
ceph auth caps client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=libvirt-pool' -o /etc/ceph/ceph.client.cinder.keyring
scp /etc/ceph/ceph.client.cinder.keyring 所有計算節點:/etc/ceph
scp /etc/ceph/ceph.client.cinder.keyring 所有計算節點:/etc/ceph
3.導出賬號的祕鑰文件分發給所有計算節點(如果已經做過ceph與openstack整合僅提供雲盤功能,這一步可以跳過)
在所有計算節點執行下列操作:
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
EOF
virsh secret-define --file secret.xml
找到剛剛定義的client.cinder用戶的uuid
virsh secret-list
cat /etc/ceph/ceph.client.cinder.keyring
4.修改配置文件
vim /etc/nova/nova.conf
rbd_user=cinder
rbd_secret_uuid=dda10a4e-c03c-b029-ef07-ce86e7a07bdd ------------------>值爲:virsh secret-list |grep client.cinder |awk '{print $1}
p_w_picpaths_type = rbd #只有在 boot disk 放在 ceph 中才需要配置這個,否則,設置爲 qcow2
p_w_picpaths_rbd_pool = vms
p_w_picpaths_rbd_ceph_conf = /etc/ceph/ceph.conf
disk_cachemodes="network=writeback"
inject_password = false
inject_key = false
inject_partition = -2
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
/etc/init.d/openstack-nova-compute restart