Installer Proxmox V7
Installer un hôte Proxmox 7
Description
Cette fiche décrit les étapes pour l'installation d'un hôte de virtualisation sous Proxmox 7.x
Préparation
Préparer un serveur physique selon la fiche : [[1]]
Attention, la suite des actions est prévue pour être réalisée hors réseau. Si vous faites une installation à distance (via la console IPMI par exemple), assurez vous que le switch que vous utilisez est un switch de distribution (pas un switch de boucle) et que le port du switch sur lequel est connectée votre hôte est **paramètré en UNTAGGED sur le VLAN 10**.
Installation de l'OS
L'installation de l'OS est faite par le technicien qui prépare et rack le matériel
Démarrer le serveur sur une clé USB préparer pour installer Proxmox VE 7.x Choisir "Install Proxmox VE" Accepter le "contrat utilisateur final"
Etape 1 : Choix du disque d'installation
* Choisir le disque qui recevra l'installation de l'OS * Cliquer sur le bouton 'Options' * Choisir une partition ext4 * Saisir une taille de 100Go * Valider * Bouton 'Next'
Etape 2 : Localisation
* Country : Saisir 'france' * Time zone : Choisir 'Europe/Paris' * Keyboard : Choisir 'French' * Bouton 'Next'
Etape 3 : Mot de passe
* Saisir un mot de passe root (à enregistrer dans le Vaultwarden) * Saisir le mail : support@dri.fr * Bouton 'Next'
Etape 4 : Réseau
* Sélectionner la carte d'interface * Rentrer le 'fqdn' de la machine : dpsxxxxx.produhost.net * Conserver la configuration reçus par DHCP (Noter l'IP Attribuée) * Bouton 'Next'
Etape 5 : Vérifications
Vérifier le récapitulatif, cocher reboot automatique et valider par le bouton 'Install'
L'installation continue et se termine toute seule.
Configuration de base
* Se connecter à la console en root * Modifier les dépôt de mise à jour et ajouter openvswitch :
rm -f /etc/apt/sources.list.d/pve-enterprise.list
echo "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription">/etc/apt/sources.list.d/pve-ose.list
apt -y update
apt -y install vim openvswitch-switch
* Se connecter à la WebGUI en root (IP notée précédement) : [[2]] * Configurer le réseau
Dans le menu Datacenter, dpsxxxxx
Puis le menu Système, Réseau
Sur le vmbr0/Linux Bridge : Notez le nom de la carte connecté (exemple : eno1)
Supprimer le vmbr0/Linux Bridge
Bouton "Créer", OVS Bridge
* Nom : vmbr0
* Démarrage auto : coché
* Port du bridge : la carte réseau connectée (exemple : eno1) + la carte 10G (exemple : enp0f0)
* Bouton "Créé"
Bouton "Créer", OVS IntPort
* Nom : admin
* IPv4 : 10.1x5.x.x/8
* Passerelle : 10.0.0.254
* OVS Bridge : vmbr0
* Tag VLAN : 10
* Bouton "Créer"
* Racker le serveur dans sont emplacement (Port du switch data en mode TAG vlan 10 et 1108 à minimum) * Une fois la machine démarrée, se connecter en root via SSH (ssh root@<@IP>) * Mettre à jour
apt -y update && apt -y upgrade
apt -y install tmux
* Modifier le swappiness
echo -e "# vm.swappiness\nvm.swappiness = 1"> /etc/sysctl.d/90-swappiness.conf
sysctl -p --system
* Configurer le NTP
apt -y install systemd-timesyncd
vim /etc/systemd/timesyncd.conf
....
[Time]
NTP=185.86.178.206
FallbackNTP=ntp.produhost.net
....
systemctl restart systemd-timesyncd.service
timedatectl set-ntp true
timedatectl set-timezone UTC
timedatectl timesync-status
* Redémarrer le serveur
Bouton "Redémarrer" dans le bandeau du haut
* Vérifier que l'on à accès à la WebGUI
Inventaire dans OCS
Afin d'intégrer la nouvelle machine dans l'inventorisation gérée par OCS, il faut installer l'agent OCS selon la procédure suivante installation OCS agent dans une machine PROXMOX.
- ATTENTION : Proxmox 7 est sur une base Debian 11, il faut un environnement Python 3 pour le déploiement.**
Il faut au préalable avoir un accès SSH afin de pouvoir utiliser la procédure réalisée via Ansible. \\ La machine doit également avoir accès à Internet.
Volume de stockage
Deux possibilités validées chez DRI :
* LVM-THIN : Un volume LVM en thin-provisionning pour stocker les fichiers de VMs (attention pas de réplication prévu avec ce type de stockage) parfait pour un serveur seul. * DRBD : Solution de réplication pour deux noeuds (au delà les besoins réseau sont trop contraignants) dans le cas de DRBD, il faut privilégier des interfaces 10Gb sur les noeuds du cluster afin de garantir une bande passante suffisante pour les VMs.
LVM-THIN
* Préparer le disque :
fdisk /dev/sdX
(UNIQUEMENT si le disque n'a pas d'autres partitions : g (pour create new empty GPT partition))
n (pour new partition)
Partition number : ok (prend le numéro à suivre)
Firts sector : ok (prend le secteur à suivre)
Last sector : ok (prend le dernier secteur)
t (pour Toggle partition type)
Select partition : numéro de la partition précédemment créé (si une seule partition c'est automatique)
30 (pour Linux LVM)
w (pour Write information on disk and quit)
partx -u /dev/sdX
* Créer le volume LVM :
pvcreate /dev/sdXn
vgcreate vg_data /dev/sdXn
lvcreate -L xxT --thinpool lv_data vg_data --poolmetadatasize xxxG
<WRAP center round important 60%> **Taille du disque** : Ne pas attribuer tous l'espace, laisser environ 5Go de libre. </WRAP> <WRAP center round important 60%> **poolmetadatasize** : 2Go par To mini, prévoir la possibilité d'extend car non modifiable par la suite. </WRAP>
* Configuration pour Proxmox :
Très important, le lvmthin doit être initié en : lvm-thin (bonne pratique).
vim /etc/pve/storage.cfg
...
lvmthin: lvm-thin
thinpool lv_data
vgname vg_data
content rootdir,images
...
<WRAP center round info 60%> Pensez à nommer vos volume de façon à reconnaître les SSD (exemple : lvm-thin-SSD) </WRAP>
DRBD
FIXME Make Linstor HA : [[3]] and [[4]]
Faire un cluster avant de déployer DRBD, cela facilite la configuration (doc ci-dessous : [[5]])
<WRAP center round important 60%> **ATTENTION** Linbit à tendance à produire des mise à jour "trop" vite et mal documenté, si vous rencontrez un problème lors de la mise en place, contacter SebC ou à défaut tentez avec un downgrade des outils linbit. </WRAP>
A FAIRE SUR TOUS LES NOEUDS
* Filtrer les volumes DRBD pour LVM, trouver et modifier la ligne global_filter pour y ajouter le filtrage DRBD :
vim /etc/lvm/lvm.conf
...
global_filter [ ......, "r|/dev/drbd.*|" ]
...
* Créer le volume LVM pour DRBD
fdisk /dev/sdX
(UNIQUEMENT si le disque n'a pas d'autres partitions : g (pour create new empty GPT partition))
n (pour new partition)
Partition number : ok (prend le numéro à suivre)
Firts sector : ok (prend le secteur à suivre)
Last sector : ok (prend le dernier secteur)
t (pour Toggle partition type)
Select partition : numéro de la partition précédemment créé (si une seule partition c'est automatique)
30 ou 31 (pour Linux LVM)
w (pour Write information on disk and quit)
partx -u /dev/sdX
pvcreate /dev/sdXn
vgcreate vg_drbd /dev/sdXn
lvcreate -L xxT --thinpool lv_drbd vg_drbd --poolmetadatasize xxxG
<WRAP center round important 60%> **Taille du disque** : Ne pas attribuer tous l'espace, laisser environ 5Go de libre. </WRAP> <WRAP center round important 60%> **poolmetadatasize** : 2Go par To (max 15,8G), prévoir la possibilité d'extend car non modifiable par la suite. </WRAP>
* Installation de DRBD9 pour Proxmox 7
Vérifier que le serveur à bien un accès internet.
apt -y install pve-headers
wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
echo "deb https://packages.linbit.com/proxmox/ proxmox-7 drbd-9"> /etc/apt/sources.list.d/linbit.list
apt update && apt -y install linstor-proxmox linstor-satellite drbd-utils drbd-dkms linstor-common
* Redémarrer tous les nœuds (sauf celui qui servira de controleur) Cela permet la prise en charge de DRBD-DKMS en v9, vérifier que les nœuds ont bien démarré et qu'il n'y a pas d'erreur dans les logs.
SUR LE NOEUD "Contrôleur" (préférer le site de repli)
apt -y install linstor-controller linstor-client
systemctl enable linstor-controller
* Redémarrer le noeud controleur
Configurer les volumes DRBD
linstor node create dpsxxxx2 192.168.253.2 --node-type Combined
linstor node create dpsxxxx1 192.168.253.1 --node-type Combined
linstor storage-pool create lvmthin dpsxxxx2 drbdpool vg_drbd/lv_drbd
linstor storage-pool create lvmthin dpsxxxx1 drbdpool vg_drbd/lv_drbd
linstor resource-group create --storage-pool=drbdpool --place-count=2 drbdpoolgroup
linstor volume-group create drbdpoolgroup
* Configuration pour Proxmox :
vim /etc/pve/storage.cfg
...
drbd: drbdstorage
content images,rootdir
controller 192.168.253.2
resourcegroup drbdpoolgroup
...
//**Si plusieurs pool DRBD, il faut ajouter une section "drbd:"** //
...
drbd: NomDuPoolVuDansProxmox
content images,rootdir
controller 192.168.253.2
resourcegroup NomDuGroupeDRBD
...
<WRAP center round info 60%> Pensez à nommer vos volume de façon à reconnaître les SSD (exemple : drbdstorage-SSD) </WRAP>
* Supervision DRBD v9 : [[6]]
- RAPPEL : Tester que tous fonctionne correctement en créant une VM test**
Supervision
* proxmox * idrac * irmc
Cluster
Plusieurs cas sont possible en fonction de besoin de "Disponiblité" des VMs souhaitées, chez DRI nous avons validé les solutions suivantes :
* 2 Nœuds : C'est une configuration "minimal" mais aucune solution de bascule automatique n'est envisageable avec ce type de solution (problème trop présent de split-brain), réplication des données via DRBD et PRA manuel * 2 Nœuds + VM Quorum : Permet de résoudre le problème de (split-brain) dans la mesure ou les serveurs et la VM sont bien répartie sur trois sites (DC) différents, réplication DRBD et PRA automatique * 3 Nœuds et plus FIXME : Permet de résoudre le problème de (split-brain) dans la mesure ou l'équilibre des serveurs est incomplet sur deux (ou plus) sites (DC) différents, ZFS Over iSCSI à partir de 3 noeuds, sinon pour 4 noeuds et plus envisager une solution de stockage type CEPH (non documenté ici)
Cluster 2 noeuds
Les actions sont à faire en root sur les noeuds attention au noueds d’exécution des commandes.
* Définir un nouveau vlan pour la communication cluster : Prendre à rebour à partir de 2999 (liste : [[7]]) * Affecter une interface virtuelle sur chaque noeud : * On utilise pour tous les cluster la plage IP suivante : 192.168.253.0/24 * Depuis la WebGUI :
Dans le menu Datacenter, dpsxxxxx
Puis le menu Système, Réseau
Bouton "Créer", OVS Int
* Nom : cluster
* IPv4 : 192.168.253.xxx/24
* Passerelle : vide
* OVS Bridge : vmbr0
* Tag VLAN : 29xx
* Bouton "Créer"
* Bouton "appliquer la configuration" * Mettre à jour le fichier /etc/hosts des machines
192.168.253.1 dpsxxxx1 dpsxxxx1.produhost.net
192.168.253.2 dpsxxxx2 dpsxxxx2.produhost.net
...
* Créer le cluster sur le noeud 1 :
Le nom du cluster est défini ainsi : XXXXX-Nom ou XXXXX est le numéro du client et Nom est le nom du cluster (Prod, Dev etc…)
pvecm create <NomCluster> -link0 192.168.253.1
* Depuis le nœud 2, s'ajouter au cluster :
pvecm add 192.168.253.1 -link0 192.168.253.2 -use_ssh 1
* Modifier la configuration en mode 2 noeuds :
vim /etc/pve/corosync.conf
...
quorum {
provider: corosync_votequorum
two_node: 1
}
...
Cluster 2 noeuds + VM Quorum
Installation d'un VM sur un troisième DC en Debian 10 non chiffré UpToDate, supervisée et avec deux connexion réseau (Une sur le vlan10 et une surle vlan "cluster" des noeuds proxmox) + Faire :
* Installation de corosync qdevice sur la VM
sudo apt -y update
sudo apt -y install corosync-qnetd corosync-qdevice
* Installation de corosync qdevice sur tous les nœuds du cluster
sudo apt -y update
sudo apt -y install corosync-qdevice
* Configuration de corosync qdevice depuis un des nœuds du cluster
- Supprimer l’information cluster deux nœuds si modification d'installation, puis
sudo pvecm qdevice setup <@IP-Cluster-De-La-VM-Qorum>
Cluster 3 noeuds et plus
FIXME …