KVM Hosts and Ceph Storage
Installation des noeuds KVM sous Rocky Linux 9
🛠️ 1. Préparer le nœud KVM
Installer Rocky Linux 8/9 (ou équivalent EL8/EL9).
Synchroniser l’heure (chrony/ntpd), mets à jour, et s'assurer que SELinux est en enforcing
.
Installation minimale nécessaire :
mkdir /etc/yum.repos.d/cloudstack.repo
cat <<EOF >>/etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://download.cloudstack.org/centos/\$releasever/4.20/
enabled=1
gpgcheck=0
EOF
sudo dnf install -y epel-release
sudo dnf install -y centos-release-ceph-squid.noarch cloudstack-agent cloudstack-common wget vim bash-completion chrony libvirt libvirt-daemon libvirt-daemon-driver-storage-rbd libvirt-daemon-driver-network libvirt-daemon-config-network qemu-kvm virt-install bridge-utils ceph
Cela inclut librbd
de Ceph et l’agent CloudStack (Ceph Documentation, Apache CloudStack Documentation).
Configurer SELinux
vim /etc/selinux/config
#modifier la ligne SELINUX=enforcing comme suit :
SELINUX=permissive
#Activer selinix au démarrage
setenforce permissive
🌐 2. Configuration des bridges réseau
CloudStack nécessite au minimum deux bridges pour une zone advanced Core et au minimum 1 pour une zone Basic : cloudbr0
(public/management) et cloudbr1
(privé/VLAN) (ShapeBlue).
Explication des traffic types
Type de trafic
Description
Gestion (Management)
Trafic utilisé pour la communication interne entre les composants CloudStack : hôtes, serveurs de gestion, VM système (VR, SSVM). Généralement, ce réseau doit être séparé pour garantir la sécurité et la stabilité.
Invité (Guest)
Trafic généré par les instances utilisateur (VM invitées). C’est le réseau par lequel les VMs communiquent entre elles, en mode isolé ou partagé. C’est aussi celui qui peut éventuellement donner accès au réseau local des clients ou à Internet. Info
Public
Trafic entre les instances et l’extérieur (Internet). Permet d’attribuer des adresses IP publiques aux VMs et d’exposer leurs services au réseau public. Ce trafic n’existe que dans certains modes réseau (zones avancées). Info
Stockage (Storage)
Trafic dédié entre les hôtes et le stockage secondaire ou principal. Il est possible de dédier un réseau séparé pour améliorer les performances d’accès aux volumes disque et iso
À retenir pour un environnment de production :
Séparer les types de trafic est une bonne pratique pour la sécurité et l’efficacité.
Le paramétrage de ces types se fait au niveau de l’infrastructure physique ET lors de la définition des réseaux CloudStack.
Ici nous partons sur une zone basique
Config bridge via /etc/sysconfig/network-scripts
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
BRIDGE=cloudbr0
/etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.x.y
NETMASK=255.255.255.0
GATEWAY=192.168.x.x
BRIDGE_STP=no
BRIDGE_PORTS=eth0
⚠️ Redémarrer ou recharger NetworkManager (nmcli connection reload
ou sudo systemctl restart NetworkManager
🔄 3. Configuration de libvirt/QEMU pour CloudStack
Activer
libvirtd
en mode écoute pour migration et l’agent :
sudo vi /etc/libvirt/libvirtd.conf
# assurez vous d'avoir ces paramètres
listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0
sudo vi /etc/sysconfig/libvirtd
# modifier le fichier comme suit
LIBVIRTD_ARGS="--listen"
sed -i -e 's/\# vnc_listen.*$/vnc_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf
Redémarrer : sudo systemctl restart libvirtd cloudstack-agent
(Yonyou Cloud Documentation).
☁️ 4. Intégration avec Ceph comme stockage primaire
Configurer CEPH au préalable : voir CEPH DOC
S'assurer que le keyring admin a bien été déployé sur tous les noeuds
Création de la clé d'authentification pour client.cloudstack
client.cloudstack
Une fois CEPH installé, on créera un keyring pour le client client.cloudstack. Ce keyring permet à CloudStack d'interagir avec Ceph, notamment pour le stockage des volumes, des images et autres objets dans le cluster Ceph. Il s'agira donc de créer un client Ceph spécifique à CloudStack (client.cloudstack
) avec les bonnes permissions pour interagir avec le cluster Ceph. Cela se fait à l'aide de la commande suivante :
ceph auth get-or-create client.cloudstack \
mgr 'allow r' \
mon 'allow r' \
osd 'allow rwx pool=prm-strg1' \
-o /etc/ceph/ceph.client.cloudstack.keyring
Explication des options :
mgr 'allow r'
: Accès en lecture seule pour le gestionnaire Ceph.mon 'allow r'
: Accès en lecture seule pour les moniteurs Ceph.osd 'allow rwx pool=prm-strg1'
: Accès en lecture, écriture et exécution au pool de stockageprm-strg1
.
La commande crée un fichier ceph.client.cloudstack.keyring
contenant la clé secrète du client. Ce fichier est à conserver avec précaution.
Déploiement du keyring sur tous les nœuds CEPH :
Ce fichier doit être disponible sur tous les nœuds hyperviseurs et éventuellement les nodes utilisant CloudStack (ex : pour les agents KVM, s'ils font noeuds ceph également). On le place donc dans /etc/ceph/
.
for node in ceph-node2 ceph-node3 ceph-node4
do
scp /etc/ceph/ceph.client.cloudstack.keyring root@$node:/etc/ceph/
done
✅ 5. Vérification
sudo systemctl status libvirtd
sudo systemctl status cloudstack-agent
Vérifie que les bridges
cloudbr0
etcloudbr1
sont actifs (ip a show cloudbr*
).Vérifie que
librbd
fonctionne (rpm -q ceph-common
).Ajoute le nœud via l’UI CloudStack sous Infrastructure → Hosts, en sélectionnant bridging, Ceph, etc.
🧩 Résumé
Bridges (br0
, br1, votre bridge
)
Cruciaux, noms codés en dur, config réseau via ifcfg ou NetworkManager (Apache CloudStack Documentation, Ceph Documentation, OpenMetal IaaS)
libvirtd
Doit écouter en TCP (--listen
) pour l’agent CloudStack (Yonyou Cloud Documentation, Apache CloudStack Documentation)
Ceph
via ceph-common
, ceph.conf
, clef, et pool RBD ; intégration automatique (Ceph Documentation, ShapeBlue)
Agent CloudStack
Installe, actif, écoute 16059/tcp
Last updated
Was this helpful?