TP sur les conteneurs LXC sur cluster Proxmox
1. Contexte et objectifs :
- Découvrir les spécificités de la conteneurisation LXC sur Proxmox.
- Utiliser le stockage partagé Ceph pour héberger des conteneurs.
- Mettre en place des conteneurs pour des services simples (HTTP, base de données, etc.) et les manipuler (snapshots, sauvegardes, migration).
- Approfondir la gestion du réseau et la haute disponibilité des conteneurs.
À la fin de ce TP, vous saurez :
- Créer et configurer un conteneur LXC.
- Gérer les ressources attribuées (CPU, RAM, stockage, réseau).
- Réaliser des snapshots et des sauvegardes, restaurer un conteneur.
- Migrer un conteneur d'un nœud à un autre via Ceph.
- Déployer une mini-application conteneurisée (LAMP ou autre) pour illustrer un cas concret.
2. Pré-requis
- Cluster Proxmox opérationnel (au moins 3 nœuds).
- Stockage Ceph déjà configuré et fonctionnel.
- Au moins un template d'OS Linux disponible dans la section Content de Proxmox
(Debian 11, Ubuntu 20.04, etc.).
- Connaissances de base en virtualisation et en réseautique. Lire le cours sur la conteneurisation !
3. Plan du TP
Étape A : Vérifications initiales
- Se connecter à l'interface web de Proxmox et vérifier que le cluster est bien formé :
- Tous les nœuds apparaissent en vert dans la vue Datacenter > Cluster.
- Vérifier le statut de Ceph :
- Via Datacenter > Ceph ou en ligne de commande avec ceph -s sur l'un des nœuds.
- S'assurer que la pool RBD existe et est disponible.
Validation attendue :
- L'état de santé de Ceph doit être "HEALTH_OK".
- La pool RBD est visible et prête.
Étape B : Création et configuration d'un conteneur LXC
B.1. Création d'un conteneur depuis l'interface Proxmox
- Dans l'interface Proxmox, sélectionner un nœud -> Create CT (Create Container).
- Identifier le conteneur : Indiquer un CT ID (exemple : 100) et un Hostname (exemple : ct-lxc-web).
- Template : Choisir un template Debian ou Ubuntu (assurer que le template est déjà téléchargé).
- Storage : Sélectionner le pool Ceph comme stockage principal.
- Network :
- Bridge : vmbr0 (ou tout autre bridge configuré, utiliser vmbr1 si NAT).
- Mode d'adressage : DHCP ou IP statique selon l'infrastructure.
- Resources (CPU & RAM) :
- CPU : 1 ou 2 cœurs (selon la configuration).
- RAM : 512 Mo à 1 Go pour un premier test.
- Finish pour créer le conteneur.
B.2. Vérification et démarrage
- Repérer le nouveau conteneur dans la liste.
- Démarrer le conteneur.
- Se connecter via la console Proxmox pour vérifier que tout fonctionne (mot de passe root paramétré à la création).
Validation attendue :
- Le conteneur se lance sans erreur et est accessible.
- Ping de l'hôte et tests réseau internes.
Étape C : Manipulations de base en CLI
C.1. Découverte des commandes pct
Ouvrir une session SSH sur le nœud hébergeant le conteneur, puis exécuter :
- pct list : Liste les conteneurs et leurs états.
- pct start 100 / pct stop 100 : Démarre/arrête le conteneur (ID 100).
- pct enter 100 : Ouvre une console root à l'intérieur du conteneur.
- pct exec 100 : Exécute une commande directement dans le conteneur (ex. ls, apt update, etc.).
Validation attendue :
- Savoir stopper et redémarrer un conteneur via CLI.
- Entrer dans le conteneur en mode console (root).
Étape D : Snapshots et sauvegardes
D.1. Création d'un snapshot
- Dans l'interface Proxmox, sélectionner le conteneur -> Snapshots -> Take Snapshot.
- Donner un nom explicite, par exemple snap1-avant-install-web.
- Laisser la description vide ou préciser la raison.
- Vérifier la prise de snapshot (se termine rapidement).
D.2. Restauration du snapshot
- Sur l'onglet Snapshots, choisir Rollback pour revenir au snapshot précédent.
- Valider que le conteneur revient dans l'état exact précédant la prise de snapshot.
D.3. Sauvegarde programmée
- Aller dans Datacenter > Backup.
- Ajouter un job de backup pour le conteneur.
- Sélectionner le stockage cible (par exemple un stockage local ou un pool Ceph dédié aux backups).
- Planifier la fréquence (journalier, hebdomadaire) et cliquer sur Create.
Validation attendue :
- Savoir créer/rollback un snapshot et programmer une sauvegarde régulière.
Étape E : Migration de conteneur sur le cluster
- Localiser le conteneur (par exemple, il est sur le nœud pve1).
- Dans l'interface web, bouton Migrate pour le conteneur : choisir la cible (ex. pve2).
- Lancer la migration.
- Comme le disque est sur Ceph RBD, la migration sera rapide et sans copie de gros fichiers.
- Surveiller la barre de progression.
- Vérifier que le conteneur est bien visible et démarré sur le nœud cible.
Validation attendue :
- La migration se fait sans interruption significative, le conteneur se retrouve sur le nouveau nœud.
Étape F : Configuration réseau avancée (optionnelle)
- Créer un bridge dédié ou un VLAN sur Proxmox (facultatif si déjà maîtrisé).
- Assigner l'interface réseau du conteneur sur ce bridge/VLAN pour isoler un service.
- Vérifier la connectivité (ping, traceroute).
Validation attendue :
- Le conteneur obtient une IP correcte et les flux réseaux fonctionnent selon la configuration (NAT, Bridge, VLAN, etc.).
Étape G : Déploiement d'une mini-application
G.1. Installation d'un serveur web dans le conteneur
- Entrer dans le conteneur (via pct enter ou la console web).
- Mettre à jour les paquets :
apt update && apt upgrade -y
- Installer un serveur web (ex. Apache) :
- Vérifier que le service tourne :
- Depuis un autre poste ou un navigateur, accéder à l'adresse IP du conteneur :
- On doit voir la page par défaut d'Apache.
G.2. Création d'une page de test
- Dans /var/www/html/, créer un fichier index.html personnalisé.
- Vérifier l'affichage depuis un navigateur.
Validation attendue :
- Le serveur web est fonctionnel, accessible depuis l'extérieur.
- Des pages web personnalisées s'affichent.
Étape H : Mise en place d'un conteneur base de données (optionnel / complémentaire)
Pour illustrer une mini-architecture 2 conteneurs :
- Créer un nouveau conteneur (ID 101, nom : ct-lxc-db).
- Installer une base de données (MySQL/MariaDB ou PostgreSQL).
- Configurer un petit schéma, une table de test.
- Du côté du conteneur Web (ID 100), installer un client MySQL (par ex. mysql-client) et vérifier la connectivité vers ct-lxc-db.
Validation attendue :
- Les conteneurs communiquent sur le même réseau, la base de données est joignable.
Étape I : Exercice final - Scénario complet
- Création et configuration de 2 conteneurs : ct-lxc-web (serveur web) et ct-lxc-db (base de données).
- Snapshoter avant installation applicative.
- Installer un CMS léger (WordPress par exemple) ou un serveur Nextcloud dans ct-lxc-web.
- Configurer la base de données dans ct-lxc-db.
- Test de fonctionnement de l'application (accès web).
- Effectuer un snapshot global et tester la migration d'un conteneur (ou des deux) sur un autre nœud pour simuler une maintenance.
- Valider que l'application reste fonctionnelle après la migration.
Objectif :
- Mettre en pratique tous les acquis : création, configuration réseau, snapshots, sauvegarde, migration, etc.
- Démontrer la résilience d'une architecture conteneurisée et la simplicité de la maintenance.
4. Livrables et éléments de validation
- Rapport (même court) expliquant chaque étape, les commandes utilisées, les éventuels problèmes rencontrés et leurs résolutions.
- Captures d'écran ou démonstration en direct prouvant :
- La création et la connexion au conteneur LXC.
- Le fonctionnement de l'application web.
- Le snapshot et la restauration (testée).
- La migration entre nœuds du cluster.
- Exploitation :
- Comparaison des performances LXC vs VM
- Analyse des ressources consommées (CPU, RAM) via l'interface Proxmox ou les outils de monitoring intégrés par rapport à une VM hébergeant le même service.
5. Rapport de TP
- Décrire la création et la configuration de conteneurs LXC sur le cluster Proxmox.
- Illustrer l'utilisation de Ceph comme stockage (organisation, pool RBD, etc.).
- Documenter chaque manipulation clé (création, configuration réseau, attribution de ressources, snapshots, sauvegardes, migration) avec captures d'écran et commentaires.
- Présenter la mise en place d'un service applicatif (par exemple un serveur web ou une base de données) pour démontrer le fonctionnement concret.
- Exposer les difficultés rencontrées et les solutions mises en œuvre.