benevoles:technique:proxmox
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
benevoles:technique:proxmox [2024/04/21 09:59] – ced117 | benevoles:technique:proxmox [2025/03/31 00:47] (Version actuelle) – ljf | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== | + | < |
+ | |||
+ | # Proxmox pour ARN | ||
> Proxmox Virtual Environnement est une solution de virtualisation libre (licence AGPLv3) basée sur l' | > Proxmox Virtual Environnement est une solution de virtualisation libre (licence AGPLv3) basée sur l' | ||
Ligne 5: | Ligne 7: | ||
[[https:// | [[https:// | ||
- | 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. | + | Promox, tout comme [Ganeti](/ |
+ | |||
+ | |||
+ | ## Installation et création du cluster | ||
+ | |||
+ | ### Ajout d'un nœud | ||
+ | Ici on prendra l' | ||
+ | |||
+ | #### Avant l' | ||
+ | * 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' | ||
+ | |||
+ | #### Création de l' | ||
+ | A faire sur ns0.arn-fai.net | ||
+ | ``` | ||
+ | hwhost-4 A 89.234.141.134 | ||
+ | hwhost-4 AAAA 2a00: | ||
+ | ``` | ||
+ | |||
+ | #### 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' | ||
+ | |||
+ | 1. Brancher un câble vert du switch manageable au premier port du serveur | ||
+ | 1. Brancher un câble bleu du switch non manageable au second port du serveur | ||
+ | 1. Ajouter une route `ip r a 2a00: | ||
+ | 1. Configurer / | ||
+ | |||
+ | |||
+ | ``` | ||
+ | auto eno2 | ||
+ | iface eno2 inet manual | ||
+ | iface eno2 inet6 manual | ||
+ | |||
+ | auto vmbr0 | ||
+ | iface vmbr0 inet static | ||
+ | address 192.168.11.4/ | ||
+ | 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:: | ||
+ | gateway fe80:: | ||
+ | accept_ra 0 | ||
+ | autoconf 0 | ||
+ | dad-attemps 0 | ||
+ | post-up /sbin/ip a a 2a00: | ||
+ | |||
+ | auto vmbr1 | ||
+ | iface vmbr1 inet static | ||
+ | address 169.254.42.1/ | ||
+ | bridge-ports none | ||
+ | bridge-stp off | ||
+ | bridge-fd 0 | ||
+ | post-up | ||
+ | |||
+ | iface vmbr1 inet6 static | ||
+ | address fe80:: | ||
+ | post-up | ||
+ | ``` | ||
+ | |||
+ | |||
+ | #### Ajout dans le cluster | ||
+ | #### SSH | ||
+ | / | ||
+ | |||
+ | A partir d'ici il faudra se connecter via ssh avec le port 722. | ||
+ | |||
+ | #### x509 Let's Encrypt | ||
+ | Dans l' | ||
+ | 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 | ||
+ | / | ||
+ | ``` | ||
+ | search arn-fai.net | ||
+ | nameserver 80.67.169.40 | ||
+ | nameserver 185.233.100.101 | ||
+ | nameserver 89.234.141.66 | ||
+ | ``` | ||
+ | #### Fichier / | ||
+ | Ajouter | ||
+ | ``` | ||
+ | 89.234.141.134 hwhost-4.arn-fai.net hwhost-4 | ||
+ | ``` | ||
+ | |||
+ | #### Déployer les scripts d' | ||
+ | |||
+ | Ajouter la config ssh | ||
+ | ``` | ||
+ | Host hwhost-2.arn-fai.net | ||
+ | Port 2222 | ||
+ | Host * | ||
+ | User root | ||
+ | Port 722 | ||
+ | ``` | ||
+ | |||
+ | Valider les fingerprint sur l' | ||
+ | ``` | ||
+ | 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' | ||
+ | |||
+ | |||
+ | Remplacer aux alentour de la ligne 565 du fichier / | ||
+ | ``` | ||
+ | .data.status.toLowerCase() !== " | ||
+ | ``` | ||
+ | |||
+ | par | ||
+ | |||
+ | ``` | ||
+ | .data.status.toLowerCase() !== " | ||
+ | ``` | ||
+ | |||
+ | #### Libérer du stockage inutilisé sur les machines virtuelles | ||
+ | * En activant l' | ||
+ | |||
+ | #### Modifier les repository de base de l' | ||
+ | |||
+ | ``` | ||
+ | cat <<EOF >/ | ||
+ | # deb https:// | ||
+ | EOF | ||
+ | ``` | ||
+ | |||
+ | ``` | ||
+ | cat <<EOF >/ | ||
+ | deb http:// | ||
+ | pve-no-subscription | ||
+ | EOF | ||
+ | ``` | ||
+ | |||
+ | #### Enlever le message d' | ||
+ | |||
+ | ``` | ||
+ | echo " | ||
+ | apt --reinstall install proxmox-widget-toolkit | ||
+ | ``` | ||
+ | |||
+ | Source : https:// | ||
+ | |||
+ | #### Optimisations | ||
+ | |||
+ | ##### Général | ||
+ | |||
+ | * Récupérer le nom du pool ZFS, en cliquant sur la machine du cluster de la //server view//, sous // | ||
+ | |||
+ | * Désactiver les mises à jour des // | ||
+ | |||
+ | ``` | ||
+ | sudo zfs set atime=off [Nom du pool de stockage] | ||
+ | ``` | ||
+ | |||
+ | * Désactiver la compression du système de fichiers | ||
+ | |||
+ | ``` | ||
+ | sudo zfs set compression=off [Nom du pool de stockage] | ||
+ | ``` | ||
+ | |||
+ | ##### Régler le quota de mémoire utilisée par ZFS | ||
+ | |||
+ | * Ajouter la ligne suivante à **/ | ||
+ | * La valeur est calculée selon cette méthode : **2 GB** de base + **1 GB** par **TB de stockage** | ||
+ | |||
+ | ``` | ||
+ | options zfs zfs_arc_max=[Valeur] | ||
+ | ``` | ||
+ | |||
+ | * Dans notre cas, nous avons sur hwhost-3 un stockage ZFS de 8 To, nous avons donc besoin de 10 GB de mémoire. | ||
+ | * Soit **10** //GB * 1024 * 1024 * 1024// = **10737418240** | ||
+ | |||
+ | Source : https:// | ||
+ | |||
+ | ##### Modifier le profil de mise à l' | ||
+ | |||
+ | * Modifier le fichier crontab | ||
+ | ``` | ||
+ | | ||
+ | ``` | ||
+ | |||
+ | * Ajouter les lignes | ||
+ | |||
+ | ``` | ||
+ | # Modification de la mise à l' | ||
+ | @reboot (sleep 60 && echo " | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ## 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:// | ||
+ | sync-nodes | ||
+ | ``` | ||
+ | |||
+ | ### Ajouter une image cloud-init | ||
+ | ``` | ||
+ | wget https:// | ||
+ | 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" | ||
+ | ``` | ||
+ | Exemple pour un vps à 7€/ | ||
+ | ``` | ||
+ | manage-vps create VMID --name vps-cdupont --vcpu 1 --ram 2048 --disk 15 --suite bookworm --ipv4 89.234.141.106/ | ||
+ | ``` | ||
+ | |||
+ | ### Importer un VPS depuis ganeti | ||
+ | |||
+ | A faire sur l' | ||
+ | ``` | ||
+ | manage-vps import VMID --name NAME --ipv4 89.234.141.XXX/ | ||
+ | ``` | ||
+ | |||
+ | ### 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](https:// | ||
+ | - ~~Faire en sorte que les VM netplan fonctionnent~~ | ||
+ | - Écrire la routine d' | ||
+ | - Automatiser le partage de route (soit via le snippets arn-set-routes.sh, | ||
+ | - 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' | ||
+ | - Renforcer le script pour couper l’exécution en cas d' | ||
+ | - Vérifier les permissions des membres sur proxmox | ||
+ | - Ajouter le support de la réplication | ||
+ | - Documenter l' | ||
+ | - 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.1713693593.txt.gz · Dernière modification : 2024/04/21 09:59 de ced117