glance對接ceph

FuShudi發表於2024-10-08

目錄
  • glance對接ceph
    • 1. 上傳映象
    • 2. 對接ceph
      • 2.1 建立池
      • 2.2 建立使用者
      • 2.3 下發ceph檔案
      • 2.4 修改globals檔案
      • 2.5 更新glance配置
    • 3. 上傳映象到ceph

glance對接ceph

基於前面的openstack環境

glance的映象預設情況下是儲存在本地的,如果glance節點掛掉了,那麼映象也就不存在了,所以現在我們需要將glance的映象儲存在ceph叢集上,這樣即使glance節點掛掉了,其他的節點啟動glance然後對接一下ceph,映象依然是存在的

1. 上傳映象

這裡我們的glance目前還沒有對接ceph,現在上傳一個映象來看看他是不是存在本地

[root@openstack01 ~]# source .venv/kolla/bin/activate
(kolla) [root@openstack01 ~]# source /etc/kolla/admin-openrc.sh

下載一個cirros映象

(kolla) [root@openstack01 ~]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
(kolla) [root@openstack01 kolla]# openstack image create --disk-format qcow2 --container-format bare --progress  --public --file /root/cirros-0.4.0-x86_64-disk.img test_image 

(kolla) [root@openstack01 kolla]# openstack image list
+--------------------------------------+------------+--------+
| ID                                   | Name       | Status |
+--------------------------------------+------------+--------+
| c5d3998d-51a7-4732-9cd9-fb34ff2d3e94 | cirros     | active |
| 1add255d-d797-4c5a-8e74-f902ca3c45b6 | test_image | active |
+--------------------------------------+------------+--------+

這樣,一個映象就上傳好了。來看看他是不是將映象存在本地了

(kolla) [root@openstack01 kolla]# openstack image show test_image |grep file |head -1
| file             | /v2/images/1add255d-d797-4c5a-8e74-f902ca3c45b6/file 

他的回顯是/v2/images/1add255d-d797-4c5a-8e74-f902ca3c45b6/file 這個路徑,直接進入glance容器內

(kolla) [root@openstack01 kolla]# docker exec -it glance_api /bin/bash
(glance-api)[glance@openstack01 /]$ cd /var/lib/glance/images/
(glance-api)[glance@openstack01 /var/lib/glance/images]$ ls
1add255d-d797-4c5a-8e74-f902ca3c45b6  c5d3998d-51a7-4732-9cd9-fb34ff2d3e94

這個目錄下有2個檔案,每個檔案都與我們的映象ID是對應的,說明映象就是存在本地的,並且還是存在容器內部的

2. 對接ceph

現在我們開始操作ceph,在ceph上要先建立池,然後建立使用者授權,最後改glance的配置檔案

2.1 建立池

[root@ceph ~]# ceph osd pool create images
pool 'images' created
[root@ceph ~]# ceph osd pool application enable images rbd
enabled application 'rbd' on pool 'images'
[root@ceph ~]# rbd pool init -p images

池就建立並初始化好了,接下來建立使用者

2.2 建立使用者

[root@ceph ~]# ceph auth get-or-create client.glance mon 'profile rbd' osd 'profile rbd pool=images' -o /etc/ceph/ceph.client.glance.keyring

glance使用者的金鑰環就輸出到了/etc/ceph下

2.3 下發ceph檔案

先去管理主機建立一個glance目錄

管理主機也就是當時部署openstack的那臺機器

[root@openstack01 config]# cd /etc/kolla/config/
[root@openstack01 config]# mkdir glance

將ceph.conf和glance使用者的金鑰環傳送到管理主機的/etc/kolla/config/

[root@ceph ~]# scp /etc/ceph/ceph.conf /etc/ceph/ceph.client.glance.keyring 192.168.200.130:/etc/kolla/config/glance/
root@192.168.200.130's password: 
ceph.conf                                                           100%  181   256.9KB/s   00:00    
ceph.client.glance.keyring                                          100%   64    67.6KB/s   00:00 

注意一個坑,在管理主機上開啟這2個檔案,將裡面的縮排給刪除,或者將縮排改為空格鍵,不然會報錯,因為等會升級glance是使用ansible讀取配置,yaml是不允許tab鍵的

[root@openstack01 glance]# cat ceph.conf 
# minimal ceph.conf for 601f8e36-2faa-11ef-9c62-000c294ff693
[global]
fsid = 601f8e36-2faa-11ef-9c62-000c294ff693
mon_host = [v2:192.168.200.100:3300/0,v1:192.168.200.100:6789/0]

[root@openstack01 glance]# cat ceph.client.glance.keyring 
[client.glance]
key = AQD+d5JmAtybHBAARluqjWc6/W4xYoWPC4VHXA==

最後這2個檔案應該變成這個樣子

2.4 修改globals檔案

[root@openstack01 kolla]# vim globals.yml 
ceph_glance_user: "glance"
ceph_glance_keyring: "client.{{ ceph_glance_user }}.keyring"
ceph_glance_pool_name: "images"
glance_backend_ceph: "yes"
glance_backend_file: "no"

這裡的keyring不要在前邊加上ceph.因為等會執行的時候ansible會自動給帶上,寫上了反而報錯

將globals檔案改為這樣就可以了,然後我們執行升級glance

2.5 更新glance配置

[root@openstack01 kolla]# source /root/.venv/kolla/bin/activate
(kolla) [root@openstack01 ~]# kolla-ansible -i multinode -t glance upgrade 

等待ansible的劇本執行完,執行完之後我們再來上傳一個映象

3. 上傳映象到ceph

現在我們的glance配置檔案就已經自動更新好了,接下來我們上傳一個映象看看是不是存在ceph叢集裡面了

(kolla) [root@openstack01 ~]# openstack image create --disk-format qcow2 --container-format bare --public --file ./cirros-0.4.0-x86_64-disk.img ceph_test_image
(kolla) [root@openstack01 ~]# openstack image list
+--------------------------------------+-----------------+--------+
| ID                                   | Name            | Status |
+--------------------------------------+-----------------+--------+
| cfe7ca03-896d-4020-90e8-bc45e71068aa | ceph_test_image | active |
| c5d3998d-51a7-4732-9cd9-fb34ff2d3e94 | cirros          | active |
| 1add255d-d797-4c5a-8e74-f902ca3c45b6 | test_image      | active |
+--------------------------------------+-----------------+--------+

還是進入容器去檢視

(glance-api)[glance@openstack01 /var/lib/glance/images]$ ls
1add255d-d797-4c5a-8e74-f902ca3c45b6  c5d3998d-51a7-4732-9cd9-fb34ff2d3e94

透過這裡可以看見,他的回顯依然是2個,也就是本地只存了2個,第3個映象存到ceph裡去了,我們回到ceph叢集來檢視

[root@ceph ~]# rbd ls -p images
cfe7ca03-896d-4020-90e8-bc45e71068aa

他給我們的回顯正好是映象的ID,確實已經儲存到ceph叢集內了

相關文章