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

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 ) {

Libérer du stockage inutilisé sur les machines virtuelles

Modifier les repository de base de l'instance Proxmox

cat <<EOF >/etc/apt/sources.list.d/pve-enterprise.list
# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
EOF
cat <<EOF >/etc/apt/sources.list.d/pve-install-repo.list
deb http://download.proxmox.com/debian/pve bookworm
pve-no-subscription
EOF

Enlever le message d'alerte de souscription lors de la connexion à l'interface graphique

  echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from UI...'; sed -i '/.*data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script
  apt --reinstall install proxmox-widget-toolkit

Source : https://github.com/tteck/Proxmox/blob/main/misc/post-pve-install.sh

Optimisations

Général
sudo zfs set atime=off [Nom du pool de stockage]
sudo zfs set compression=off [Nom du pool de stockage]
Régler le quota de mémoire utilisée par ZFS
    options zfs zfs_arc_max=[Valeur]

Source : https://pve.proxmox.com/wiki/ZFS_on_Linux#sysadmin_zfs_limit_memory_usage

Modifier le profil de mise à l'échelle du CPU
# Modification de la mise à l'échelle du processeur par le gouverneur "Conservative"
@reboot (sleep 60 && echo "conservative" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor)

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