Ceci est une ancienne révision du document !
Table des matières
Proxmox pour ARN
Proxmox Virtual Environnement est une solution de virtualisation libre (licence AGPLv3) basée sur l'hyperviseur Linux KVM, et offre aussi une solution de conteneurs avec LXC. Elle propose un support payant.
[[https://fr.wikipedia.org/wiki/Proxmox_VE|Source]].
Promox, tout comme Ganeti, permet la migration à chaud de machines virtuelles ce qui permet une disponibilité du service de virtualisation en cas de panne ou de maintenance. Proxmox simplifie grandement la gestion de machines virtuelles.
Installation et création du cluster
Ajout d'un nœud
Ici on prendra l'exemple de l'ajout du noeud hw4
Avant l'installation de proxmox
- Un serveur
- Pas de carte RAID matériel
- 4 disques de 4To + 1 disque de spare (moitié Samsung 870 EVO, moitié Crucial XXXXXXX)
- Vérifier que les 2 alims fonctionnent
Installation de proxmox
- Booter sur l'iso proxmox
- choisir l'installation ZFS RAID 10 (en faisant attention que les disques avec des serial number proche, ne soient pas dans le même sous mirroir du RAID 10...)
Création de l'entrée DNS
A faire sur ns0.arn-fai.net
hwhost-4 A 89.234.141.134 hwhost-4 AAAA 2a00:5881:8100::134
Mise en réseau
! Cette configuration est temporaire, car on utilise le switch non manageable dédié du cluster pour accéder à internet, ce qui n'était pas prévu.
- Brancher un câble vert du switch manageable au premier port du serveur
- Brancher un câble bleu du switch non manageable au second port du serveur
- Ajouter une route
ip r a 2a00:5881:8100::134 via fe80::69:4 dev eth1 metric 1024 pref medium
sur hw2 - Configurer /etc/network/interfaces et redémarrer le réseau
service networking restart
auto eno2 iface eno2 inet manual iface eno2 inet6 manual auto vmbr0 iface vmbr0 inet static address 192.168.11.4/24 gateway 192.168.11.2 bridge-ports eno2 bridge-stp off bridge-fd 0 post-up /sbin/ip a a 89.234.141.134 dev $IFACE iface vmbr0 inet6 static address fe80::69:4/112 gateway fe80::69:2 accept_ra 0 autoconf 0 dad-attemps 0 post-up /sbin/ip a a 2a00:5881:8100::134 dev $IFACE
Ajout dans le cluster
Configuration SSH
/etc/ssh/sshd_config
A partir d'ici il faudra se connecter via ssh avec le port 722.
Configuration x509 Let's Encrypt
Dans l'interface web:
- Cliquer sur le noeud
hwhost-4 > Certificates
- Dans la partie
ACME
cliquer surAdd
- Saisir
hwhost-4.arn-fai.net
- Cliquer sur
Edit
(account) et mettrearn-fai
puisApply
Order certificates now
Déployer les scripts d'ARN
Ajouter la config ssh
Host hwhost-2.arn-fai.net Port 2222 Host * User root Port 722
Valider les fingerprint sur l'ensemble des nœuds
ssh hwhost-3.arn-fai.net ssh hwhost-4.arn-fai.net
A faire sur un des nœuds déjà installé
sync-nodes
Désactiver le message de souscription sur l'interface web
Remplacer aux alentour de la ligne 565 du fichier /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
.data.status.toLowerCase() !== "active") {
par
.data.status.toLowerCase() !== "active") {orig_cmd(); } else if ( false ) {
Commandes utiles
Lister les VPS
manage-vps list
Obtenir les infos générales d'un VPS
manage-vps show VMID
Démarrer un VPS
manage-vps start VMID
Éteindre un VPS
manage-vps stop VMID
Redémarrer un VPS
sur son disque
manage-vps reboot VMID
sur un disque de sauvetage (rescue)
manage-vps reboot VMID --rescue
sur une iso
manage-vps reboot VMID --iso ISO
Ajouter une iso
wget https://miroir.univ-lorraine.fr/debian-cd/12.6.0/amd64/iso-cd/debian-12.6.0-amd64-netinst.iso -P /var/lib/vz/template/iso -o bookworm.iso sync-nodes
Ajouter une image cloud-init
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2 -P /var/lib/vz/images -o bookworm.qcow2 sync-nodes
Créer un VPS
manage-vps create VMID --name NOM --vcpu VCPU --ram RAM --disk DISQUE --suite SUITE --ipv4 IPV4/32 --ipv6 IPV6/128 --publickey "CLÉ PUBLIQUE" --user USER --firstname "PRENOM" --lastname "NOM" --email "MAIL" --secondary hwhost-4
Exemple pour un vps à 7€/mois:
manage-vps create VMID --name vps-cdupont --vcpu 1 --ram 2048 --disk 15 --suite bookworm --ipv4 89.234.141.106/32 --ipv6 2a00:5881:8110:b00::1/128 --publickey "ssh-ed25519 AAAAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX camille@doe" --user jdoe --firstname "Camille" --lastname "Dupont" --email "camille@dupont.net" --secondary hwhost-4
Importer un VPS depuis ganeti
A faire sur l'hôte sur lequel on souhaite faire migrer la VM.
manage-vps import VMID --name NAME --ipv4 89.234.141.XXX/32 --user USER --firstname "PRENOM" --lastname "NOM" --email "MAIL"
Supprimer un VPS
manage-vps destroy VMID
Migrer un VPS à chaud sur un autre nœud
PAS ENCORE DISPONIBLE (mais le bouton migrer suivi d'un reboot fonctionne)
Faire évoluer les ressources d'un VPS
RAM
La taille est en Mo
manage-vps upgrade --ram 4048
CPU
manage-vps upgrade --cpu 2
Augmentation du disque
La taille est en Go
manage-vps upgrade --disk 200
TODO
- Utiliser libguestfs pour personnaliser les images avec virt-builder
Faire en sorte que les VM netplan fonctionnent- Écrire la routine d'import de VM depuis ganeti
- Automatiser le partage de route (soit via le snippets arn-set-routes.sh, soit via ospf ou ibgp)
- Pouvoir créer des VM sur un nœud mais depuis un autre nœud
- Pouvoir lister les VM de tous les nœuds
- Raccorder COIN au cluster pour proposer le bouton provisionner
- Ajouter d'autres boutons (redémarrer, rescue, iso, faire évoluer les ressources, stop, start, changer le mot de passe, changer la clé publique)
- Renforcer le script pour couper l’exécution en cas d'échecs d'une commande (+ trap)
- Vérifier les permissions des membres sur proxmox
- Ajouter le support de la réplication
- Documenter l'installation d'un nœud
- Utiliser une zone et un Vnet (SDN) à la place d'une interface vmbr1 configurée manuellement sur chaque nœud
- Revoir le réseau pour éviter de tout faire passer par le switch dédié au backbone
- Relire des bouts de doc proxmox au cas où on a loupé des choses
- Utiliser cicustom pour lancer un script finale (install yunohost)