Installer Proxmox V7

De Travail-ivan
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

    1. 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 …