Intégration Cinder avec Ceph RBD¶
Introduction¶
Cette section configure Cinder pour utiliser Ceph comme backend de stockage pour les volumes persistants.
Prérequis¶
- Cluster Ceph fonctionnel
- Pool
volumescréé - Utilisateur
client.cindercréé
Points à apprendre¶
Distribution des fichiers Ceph¶
# Sur le nœud deploy, copier les fichiers Ceph vers tous les nœuds OpenStack
for host in controller-{1,2,3} compute-{1,2}; do
ssh $host 'sudo mkdir -p /etc/ceph'
scp /etc/ceph/ceph.conf $host:/tmp/
scp /etc/ceph/ceph.client.cinder.keyring $host:/tmp/
ssh $host 'sudo mv /tmp/ceph.conf /etc/ceph/'
ssh $host 'sudo mv /tmp/ceph.client.cinder.keyring /etc/ceph/'
ssh $host 'sudo chmod 644 /etc/ceph/*'
done
Configuration Kolla pour Ceph backend¶
# /etc/kolla/globals.yml - Ajouter/modifier
# Désactiver LVM, activer Ceph
enable_cinder_backend_lvm: "no"
enable_cinder_backend_ceph: "yes"
# Configuration Ceph
ceph_cinder_pool_name: "volumes"
ceph_cinder_backup_pool_name: "backups"
ceph_nova_pool_name: "vms"
ceph_glance_pool_name: "images"
# Keyring
ceph_cinder_keyring: "ceph.client.cinder.keyring"
Configuration manuelle Cinder (si pas via Kolla)¶
# /etc/kolla/config/cinder/cinder.conf
[DEFAULT]
enabled_backends = ceph
default_volume_type = ceph
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
rbd_user = cinder
rbd_secret_uuid = <UUID_SECRET>
Générer le secret libvirt pour Nova¶
# Sur un controller
UUID_SECRET=$(uuidgen)
echo $UUID_SECRET
# Créer le fichier XML du secret
cat > secret.xml << EOF
<secret ephemeral='no' private='no'>
<uuid>${UUID_SECRET}</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
EOF
# Créer le secret sur tous les compute nodes
for host in compute-{1,2}; do
scp secret.xml $host:/tmp/
ssh $host 'sudo virsh secret-define /tmp/secret.xml'
# Définir la valeur du secret
CINDER_KEY=$(sudo ceph auth get-key client.cinder)
ssh $host "sudo virsh secret-set-value ${UUID_SECRET} ${CINDER_KEY}"
done
Reconfigurer Kolla¶
Créer le type de volume Ceph¶
source /etc/kolla/admin-openrc.sh
# Créer le type de volume
openstack volume type create ceph \
--property volume_backend_name=ceph
# Définir comme défaut
openstack volume type set --property volume_backend_name=ceph ceph
Test de création de volume¶
# Créer un volume
openstack volume create --size 10 --type ceph test-volume
# Vérifier dans OpenStack
openstack volume list
openstack volume show test-volume
# Vérifier dans Ceph
sudo rbd ls volumes
sudo rbd info volumes/volume-<UUID>
# Attacher à une instance
openstack server add volume test-vm test-volume
# Détacher
openstack server remove volume test-vm test-volume
# Supprimer
openstack volume delete test-volume
Checkpoint¶
- Configuration Ceph ajoutée à globals.yml
- Fichiers Ceph distribués sur tous les nœuds
- Secret libvirt créé sur les compute nodes
- Type de volume "ceph" créé
- Test de création/attachement de volume réussi