在部署 Kolla-Ansible 時,雖然能夠同時部署 Ceph Cluster,但是在一些情況下,維運人員會希望將 Ceph 跟 OpenStack 分開管理,可是又想要利用 Ceph 當儲存的 Backend。這時可不用擔心,Kolla-Ansible 可以運用之前提過的 config override 的功能來使用 External Ceph Cluster。本篇文章將會介紹如何使用 Kolla-Ansible 和其 config override 的功能部署 OpenStack 並使用外部的 Ceph。
Table of Contents
事前準備
既然要使用外部的 Ceph Cluster,首相需要部署出一個 Ceph 集群。部署 Ceph 的方法有很多選擇,也可以參考之前介紹過的 Ceph-Ansible 進行部署。
另外我們也需要一些使用 Kolla-Ansible 的基礎跟相關知識,可以參考這篇文章:透過 Kolla-Ansible 跟 Container 部署 OpenStack
Ceph 設定
RBD Pool
OpenStack Nova, Cinder (Cinder Backup), Glance 都可以使用 RBD 作為儲存 Backend,所以需要為這三個 service 創建其使用的 RBD Pool。
sudo ceph osd pool create images 128
sudo ceph osd pool create vms 128
sudo ceph osd pool create volumes 128
Ceph Keyring 設定
Ceph 是透過 Keyring 做認證的,所以同樣會需要為三個 service 創建相對應的 Keyring,並且給予其所使用的 Pool 權限。
sudo ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rdb_children, allow rwx pool=images' -o /etc/ceph/ceph.client.glance.keyring
sudo ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rx pool=images' -o /etc/ceph/ceph.client.cinder.keyring
sudo ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups -o /etc/ceph/ceph.client.cinder-backup.keyring
sudo ceph auth get-or-create client.nova mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=vms, allow rx pool=images' -o /etc/ceph/ceph.client.nova.keyring
Kolla-Ansible 設定
globals.yml
globals.yml
在
中我們必須將透過部署 Kolla-Ansible Ceph 的選項設為 no,不過將 Nova, Cinder, Glance 使用 Ceph 作為儲存 backend 的選項設為 yes。globals.yml
enable_ceph: "no"
glance_backend_ceph: "yes"
cinder_backend_ceph: "yes"
nova_backend_ceph: "yes"
Glance 設定
設定 Glance 使用 external Ceph 基本上包含三個步驟:
- 在
設定使用 rbd backendglance-api.conf
- 在
新增 Ceph 的設定/etc/ceph/ceph.conf
- 新增
/etc/ceph/ceph.client.images.keyring
第一步是需要透過 config override 實現的,首先在建立
並新增以下內容/etc/kolla/config/glance/glance-api.conf
[glance_store]
stores = rbd
default_store = rbd
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
接下來在第二步同樣在
加入 Ceph 的設定/etc/kolla/config/glance/ceph.conf
[global]
fsid = 88a8ea91-df1d-4f67-b78b-52bb2f04df4d
mon_initial_members = ceph01, ceph02, ceph03
mon_host = 192.168.113.10,192.168.113.11,192.168.113.10
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
最後將上面已經創建好的 keyring 放到 /etc/kolla/config/glance/ceph.client.glance.keyring
sudo cp /etc/ceph/ceph.client.glance.keyring /etc/kolla/config/glance/ceph.client.glance.keyring
Kolla-Ansible 會將資料夾下所有
的檔案放到 container 內的 /etc/ceph 下。ceph*
Cinder 設定
Cinder 設定的步驟跟 Glance 雷同,先建立
並新增以下內容/etc/kolla/config/cinder/cinder-volume.conf
[DEFAULT]
enabled_backends=rbd-1
[rbd-1]
rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=cinder
backend_host=rbd:volumes
rbd_pool=volumes
volume_backend_name=rbd-1
volume_driver=cinder.volume.drivers.rbd.RBDDriver
rbd_secret_uuid = {{ cinder_rbd_secret_uuid }}
接下來設定 Cinder-Backup,創建
並加入以下內容/etc/kolla/config/cinder/cinder-backup.conf
[DEFAULT]
backup_ceph_conf=/etc/ceph/ceph.conf
backup_ceph_user=cinder-backup
backup_ceph_chunk_size = 134217728
backup_ceph_pool=backups
backup_driver = cinder.backup.drivers.ceph
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0
restore_discard_excess_bytes = true
接下來一樣將
下ceph.conf
<code> 放到 </code>
/etc/kolla/config/cinder/
最後需要 copy 所有的 keyring。
sudo cp /etc/ceph/ceph.client.cinder.keyring /etc/kolla/config/cinder/cinder-backup/ceph.client.cinder.keyring
sudo cp /etc/ceph/ceph.client.cinder.keyring /etc/kolla/config/cinder/cinder-volume/ceph.client.cinder.keyring
sudo cp /etc/ceph/ceph.client.cinder-backup.keyring /etc/kolla/config/cinder/cinder-backup/ceph.client.cinder-backup.keyring
Nova 設定
Nova 設定也很相似,基本上會是一樣的步驟
根據下面內容建立 /etc/kolla/config/nova/nova-compute.conf
[libvirt]
images_rbd_pool=vms
images_type=rbd
images_rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=nova
將
下ceph.conf
<code> 放到 </code>
/etc/kolla/config/nova/
最後 copy keyring
sudo cp /etc/ceph/ceph.client.nova.keyring /etc/kolla/config/nova/ceph.client.nova.keyring
實際部署
關於實際部署的指令想要暸解更多可以看 透過 Kolla-Ansible 跟 Container 部署 OpenStack
cd kolla-ansible
tools/generate_passwords.py
tools/kolla-ansible -i ansible/inventory/multinode bootstrap-servers
tools/kolla-ansible -i ansible/inventory/multinode prechecks
tools/kolla-ansible -i ansible/inventory/multinode deploy
Playbook 順利跑完的後,可以試著使用各個 service,確認能夠正常運作。
Reference
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.