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

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 reloadou 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

Création de la clé d'authentification pour 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

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 et cloudbr1 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é

Élément
Commentaire

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?