openstack組件集成ceph
OpenStack集成ceph詳細過程可以查看ceph官方文檔:ceph document
OpenStack Queens版本,1台控制節點controller,1台計算節點compute;
1. 創建存儲池
-
Glance:Glance可以把鏡像存儲在Ceph上;
-
Cinder:Cinder負責管理volume,把volume掛載給instance使用或者直接從volume啟動instance。集成Ceph后可以讓Cinder在Ceph上創建volume;
-
Nova:在OpenStack Havana版本開始,Nova可以直接把instance的disk存放在Ceph上。
在Ceph集群上總共創建3個存儲池,分別給Glance,Cinder和Nova使用;
- backups: 存放備份文件
2. 配置OpenStack的ceph客戶端
2.1. 拷貝ceph.conf
把Ceph的配置文件/etc/ceph/ceph.conf拷貝到2台OpenStack節點上,控制節點和計算節點都需要,因為他們都要跟Ceph通信。
ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
注意:
運行着 glance-api
、 cinder-volume
、 nova-compute
或 cinder-backup
的主機被當作 Ceph 客戶端,它們都需要 ceph.conf
文件。
2.2. 安裝軟件包
在控制節點安裝python-rbd和ceph軟件包:
[root@controller ~]# yum install -y python-rbd ceph
在計算節點安裝ceph:
[root@compute ~]# yum install -y ceph
注意: 如果不安裝ceph,OpenStack在使用Ceph時會報找不到ceph命令。
2.3. 配置cephx認證
創建client.cinder用戶給Cinder和Nova使用,cinder用戶有存儲池volumes、vms、images的所有權限
[root@ceph1 ~]# 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'
創建client.glance用戶給Glance使用,glance用戶有存儲池images的所有權限
[root@ceph1 ~]# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
生成2個用戶的密鑰文件,
[root@ceph1 ~]# ceph auth get-or-create client.cinder > /etc/ceph/ceph.client.cinder.keyring
[root@ceph1 ~]# ceph auth get-or-create client.glance > /etc/ceph/ceph.client.glance.keyring
然后把/etc/ceph/ceph.client.cinder.keyring和/etc/ceph/ceph.client.glance.keyring拷到controller的/etc/ceph下,並且修改文件權限:
[root@controller ~]# chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
[root@controller ~]# chown glance:glance /etc/ceph/ceph.client.glance.keyring
把/etc/ceph/ceph.client.cinder.keyring拷到compute的/etc/ceph下,並且修改文件權限:
[root@compute ~]# chown nova:nova /etc/ceph/ceph.client.cinder.keyring
2.4. 配置compute節點的libvirt
在ceph上獲取client.cinder的key
[root@ceph1 ~]# ceph auth get-key client.cinder > client.cinder.key
把client.cinder.key拷到compute節點的/etc/ceph下,在compute節點上執行以下步驟:
[root@compute ~]# cat > secret.xml <<EOF
<secret ephemeral='no' private='no'> <uuid>e21a123a-31f8-425a-86db-7204c33a6161</uuid> <usage type='ceph'> <name>client.cinder secret</name> </usage> </secret>
EOF
[root@compute ~]# virsh secret-define --file secret.xml
[root@compute ~]# virsh secret-set-value --secret e21a123a-31f8-425a-86db-7204c33a6161 --base64 $(cat /etc/ceph/client.cinder.key) && rm client.cinder.key secret.xml
3. 配置Glance
修改glance-api.conf,
[DEFAULT]
......
default_store = rbd
[glance_store]
stores = rbd
rbd_store_chunk_size = 8
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
重啟Glance服務,
[root@controller ~]# systemctl restart openstack-glance-api openstack-glance-registry
4. 配置Cinder
修改cinder.conf
[DEFAULT]
......
enabled_backends = ceph
[ceph]
rbd_pool = volumes
rbd_user = cinder
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_secret_uuid = e21a123a-31f8-425a-86db-7204c33a6161
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
重啟Cinder服務,
[root@controller ~]# systemctl restart openstack-cinder-api openstack-cinder-volume
5. 配置Nova
修改compute節點的nova.conf,
[libvirt]
virt_type=kvm
inject_password=false
inject_key=false
inject_partition=-2
disk_cachemodes = "network=writeback"
images_type=rbd
images_rbd_pool=vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
hw_disk_discard=unmap
rbd_user=cinder
rbd_secret_uuid=e21a123a-31f8-425a-86db-7204c33a6161
重啟nova-compute服務,
[root@compute ~]# systemctl restart openstack-nova-compute
6. 驗證
創建測試鏡像
[root@controller ~]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
#Glance以Ceph RBD為后端存儲時只支持raw格式,不是raw格式創建實例時會出錯
[root@controller ~]# qemu-img convert -f qcow2 -O raw cirros-0.4.0-x86_64-disk.img cirros-0.4.0-x86_64-disk.raw
[root@controller ~]# openstack image create "cirros" --file cirros-0.4.0-x86_64-disk.raw --disk-format raw --container-format bare --public
有兩種在Ceph上啟動實例的方式:
-
以鏡像為基礎創建可啟動的卷,然后啟動實例時選擇boot-from-volume,選擇此卷;
-
直接使用鏡像創建實例,這種用法是Havana版本后才支持的。
創建實例
測試
7. 總結
OpenStack集成ceph,作為cinder、nova、glance的后端存儲,整體過程:
(1)搭建ceph集群,在Ceph集群上總共創建4個存儲池,分別給Glance,Cinder,Nova和backup使用
(2)將Ceph的配置文件/etc/ceph/ceph.conf拷貝到2台OpenStack節點,以便節點可以和ceph集群進行通信,運行着 glance-api
、 cinder-volume
、 nova-compute
或 cinder-backup
的主機被當作 Ceph 客戶端,它們都需要 ceph.conf
文件。
(3)在OpenStack中配置ceph客戶端
(4)修改Glance的配置文件,支持ceph后端存儲
(5)修改Cinder的配置文件,支持ceph后端存儲
(6)修改Nova的配置文件,支持ceph后端存儲
上述過程完成后,即可將OpenStack的所有存儲工作交給ceph來管理,在OpenStack數據的容災備份方面即有ceph來接管。
具體實現OpenStack數據容災備份備份,可參考博文:ceph中rbd的備份和恢復
文章參考:OpenStack集成ceph