Outils pour utilisateurs

Outils du site


benevoles:technique:proxmox

Ceci est une ancienne révision du document !


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

  1. Booter sur l'iso proxmox
  2. 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.

  1. Brancher un câble vert du switch manageable au premier port du serveur
  2. Brancher un câble bleu du switch non manageable au second port du serveur
  3. Ajouter une route ip r a 2a00:5881:8100::134 via fe80::69:4 dev eth1 metric 1024 pref medium sur hw2
  4. 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
        
auto vmbr1
iface vmbr1 inet static
	address 169.254.42.1/32
	bridge-ports none
	bridge-stp off
	bridge-fd 0
	post-up  /sbin/ip a a 10.254.42.1/32 dev $IFACE

iface vmbr1 inet6 static
	address fe80::42:1/64
	post-up  /sbin/ip a a fc00::42:1/64 dev $IFACE

Ajout dans le cluster

SSH

/etc/ssh/sshd_config

A partir d'ici il faudra se connecter via ssh avec le port 722.

x509 Let's Encrypt

Dans l'interface web:

  1. Cliquer sur le noeud hwhost-4 > Certificates
  2. Dans la partie ACME cliquer sur Add
  3. Saisir hwhost-4.arn-fai.net
  4. Cliquer sur Edit (account) et mettre arn-fai puis Apply
  5. Order certificates now

Résolveur DNS

/etc/resolv.conf

search arn-fai.net
nameserver 80.67.169.40
nameserver 185.233.100.101
nameserver 89.234.141.66

Fichier /etc/hosts

Ajouter

89.234.141.134 hwhost-4.arn-fai.net hwhost-4

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)
benevoles/technique/proxmox.1743377914.txt.gz · Dernière modification : 2025/03/30 23:38 de ljf