Proxmox PVE 7 - Mise à jour de Ceph Octopus(v15) vers Pacific(v16)

Auteur : Vince NADUS
Date de publication : Aug. 23, 2021
proxmox ceph upgrade

Introduction

Cet article explique comment mettre à niveau Ceph d'Octopus vers Pacific (16.2.4 ou supérieur) sur Proxmox VE 7.x.

Pour plus d'informations, consultez les notes de version

Le cas pratique utilise la mise à jour depuis Octopus 15.2.13 vers la dernière en date de pacific.

Le cluster est composé de 3 noeuds ayant chacun :

  • 6 SSD 1To
  • 1 vlan d'interconnexion des 3 machines en cluster dédié à ce rôle (réplication ceph)
Veuilleze à bien réaliser un backup de l'ensemble des machines sur un équipement externe (NAS, disque externe, autre cluster proxmox)

Pré-requis

Nous supposons que tous les nœuds sont sur la dernière version Proxmox VE 7.0 (ou supérieure) et Ceph est sur la version Octopus (15.2.13-pve1 ou supérieure).

  • La version Ceph est 15.2.x Octopus

prx_ceph_upgrade_00.png

Sinon, veuillez consulter le guide de mise à niveau de Ceph Nautilus vers Octopus.

Remarque : alors qu'en théorie, il est possible de passer directement de Ceph Nautilus à Pacific, Proxmox VE ne prend en charge que la mise à niveau d'Octopus vers Pacific.

  • Déjà mis à niveau vers Proxmox VE 7.x

Mise à jour Proxmox VE (PVE) 6.4-11 vers 7.0-11

Si non, veuillez consulter le guide [[Mise à niveau de 6.x vers 7.0]].

  • Le cluster doit être sain et fonctionnel !

Activer le protocole msgrv2 et mettre à jour la configuration Ceph

Si vous ne l'avez pas déjà fait lors de la mise à niveau vers Nautilus ou Octopus, vous devez activer le nouveau protocole réseau v2. Émettez la commande suivante :

Voir sur quelle version nous sommes :

root@hpv-prx-01:~# netstat -lptune | grep 6789
tcp 0 0 10.254.94.196:6789 0.0.0.0:* LISTEN 64045 53735 3526/ceph-mon
root@hpv-prx-01:~# netstat -lptune | grep 3300
tcp 0 0 10.254.94.196:3300 0.0.0.0:* LISTEN 64045 53734 3526/ceph-mon

Nous avons donc ici bien le protocl réseau v2 (port 3300) activé.

ceph mon enable-msgr2

Cela indiquera à tous les moniteurs qui se lient à l'ancien port par défaut 6789 pour le protocole v1 hérité de se lier également au nouveau port de protocole 3300 v2. Pour voir si tous les moniteurs ont été mis à jour, exécutez

ceph mon dump

et vérifiez que chaque moniteur a une adresse v2 : et v1 : répertoriée.

Préparation sur chaque nœud de cluster Ceph

Modifiez les référentiels Ceph actuels d'Octopus à Pacific.

sed -i 's/octopus/pacific/' /etc/apt/sources.list.d/ceph.list

Votre /etc/apt/sources.list.d/ceph.list devrait maintenant ressembler à ceci

deb http://download.proxmox.com/debian/ceph-pacific bullseye main

Définir le drapeau « noout »

Définissez l'indicateur noout pour la durée de la mise à niveau (facultatif, mais recommandé) :

ceph osd set noout

Ou via l'interface graphique dans l'onglet OSD (Gérer les indicateurs globaux).

prx_ceph_upgrade_01.png

Mettre à niveau sur chaque nœud de cluster Ceph

Mettez à niveau tous vos nœuds avec les commandes suivantes. Il mettra à niveau le Ceph sur votre nœud vers Pacific.

apt update
apt full-upgrade

Après la mise à jour, votre configuration exécutera toujours les anciens binaires Octopus.

Redémarrer le démon de surveillance

Remarque : vous pouvez utiliser l'interface Web ou la ligne de commande pour redémarrer les services ceph.

Après la mise à niveau de tous les nœuds du cluster, vous devez redémarrer le moniteur sur chaque nœud sur lequel un moniteur s'exécute.

systemctl restart ceph-mon.target

Une fois que tous les moniteurs sont en place, vérifiez que la mise à niveau du moniteur est terminée. Recherchez la chaîne Pacific dans la carte mon. La commande

ceph mon dump | grep min_mon_release

devrait signaler

min_mon_release 16 (pacific)

Si ce n'est pas le cas, cela implique qu'un ou plusieurs moniteurs n'ont pas été mis à niveau et redémarrés, et/ou que le quorum n'inclut pas tous les moniteurs.

Redémarrez les démons du gestionnaire sur tous les nœuds

Redémarrez ensuite tous les gestionnaires sur tous les nœuds

systemctl restart ceph-mgr.target

Vérifiez que les démons ceph-mgr sont en cours d'exécution en vérifiant ceph -s

ceph -s...
services:
mon: 3 daemons, quorum foo,bar,baz
mgr: foo(active), standbys: bar, baz
...

Redémarrez le démon OSD sur tous les nœuds

Important : après la mise à niveau, la première fois que chaque OSD démarre, il effectuera une conversion de format pour améliorer la comptabilisation des données omap. Cela peut prendre quelques minutes ou jusqu'à quelques heures (par exemple sur un disque dur avec beaucoup de données OMAP).

Il est préférable de redémarrer les OSD sur un nœud à la fois après

systemctl restart ceph-osd.target

Attendez après chaque redémarrage et vérifiez périodiquement l'état du cluster :

ceph status

Il doit être dans HEALTH_OK ou

HEALTH_WARN
noout flag(s) set

Facultatif : Vous pouvez désactiver la conversion automatique des données OMAP avec :

ceph config set osd bluestore_fsck_quick_fix_on_mount false

Mais la conversion doit se faire le plus tôt possible.

Interdire les OSD pré-Pacific et activer toutes les nouvelles fonctionnalités uniquement pour le Pacific

ceph osd require-osd-release pacific

REMARQUE : Le fait de manquer cette étape interrompt le démarrage de l'OSD à partir duquel ils ont leur version requise sur Ceph Luminous ou une version antérieure (par exemple, si vous avez effectué une mise à niveau de Luminous -> Nautilus -> Octopus)

Mettre à niveau tous les démons CephFS MDS

Pour ma part je n'utilise pas le CephFS (système de fichiers) mais le BRD (système de blocks).
Je n'ai donc pas pu tester cette partie.

Pour chaque système de fichiers CephFS,

  • Assurez-vous qu'un seul MDS est en cours d'exécution

L'installation par défaut utilise un MDS actif. Pour vérifier si c'est le cas sur votre cluster, vérifiez la sortie de ceph status et vérifiez qu'il n'y a qu'un seul MDS actif.

Réduisez le nombre de rangs à 1 (si vous prévoyez de le restaurer plus tard, notez d'abord le nombre d'origine de démons MDS). :

ceph status
ceph fs get <fs_name> | grep max_mds
ceph fs set <fs_name> max_mds 1
  • Attendez que le cluster désactive tous les rangs non nuls en vérifiant périodiquement l'état :
statut ceph
  • Mettez tous les démons MDS de secours hors ligne sur les hôtes appropriés avec :
systemctl stop ceph-mds.target
  • Confirmez qu'un seul MDS est en ligne et qu'il est au rang 0 pour votre FS :
ceph status
  • Mettez à niveau le dernier démon MDS restant en redémarrant le démon :
systemctl restart ceph-mds.target
  • Redémarrez tous les démons MDS de secours qui ont été mis hors ligne :
systemctl start ceph-mds.target
  • Restaurez la valeur d'origine de max_mds pour le volume :
ceph fs set <fs_name> max_mds <original_max_mds>

Désactivez le drapeau 'noout'

Une fois le processus de mise à niveau terminé, n'oubliez pas de désactiver le drapeau noout.

ceph osd unset noout

Ou via l'interface graphique dans l'onglet OSD (Gérer les indicateurs globaux).

Mettre à niveau les paramètres

Remarque : ces fichiers ne sont pas nécessaires s'ils sont déjà effectués avec la mise à niveau de Nautilus vers Octopus.
Pour ma part j'ai réalisé un upgrade de Octopus vers Pacific donc je n'ai pas eu à faire cette partie.

Si vos paramètres CRUSH sont plus anciens que Hammer, Ceph émettra désormais un avertissement de santé. Si vous voyez une alerte sanitaire à cet effet, vous pouvez annuler cette modification avec :

# move to older minimum required version, only required if ceph complains
ceph config set mon mon_crush_min_required_version firefly

Si Ceph ne se plaint pas des anciens paramètres CRUSH, nous vous recommandons de basculer également tous les seaux CRUSH existants vers paille2, qui a été rajouté dans la version Hammer. Si vous avez des seaux de paille, cela entraînera une quantité modeste de mouvement de données, mais généralement rien de trop grave :

# create a backup first
ceph osd getcrushmap -o backup-crushmap
ceph osd crush set-all-straw-buckets-to-straw2

S'il y a des problèmes, vous pouvez facilement revenir en arrière avec :

ceph osd setcrushmap -i backup-crushmap

Le passage aux seaux paille2 débloquera quelques fonctionnalités récentes, comme le mode d'équilibrage compatible avec l'écrasement rajouté dans Nautilus.

Problèmes connus

Repartitionnement RocksDB cassé

La configuration du repartitionnement RocksDB après la mise à niveau est actuellement interrompue (16.2.4) et nécessitera la suppression et le rajout de l'OSD. Veuillez éviter de déclencher un reshard jusqu'à nouvel ordre ici.

Surveiller les plantages après la mise à niveau

Pour les anciens clusters (pré-jewel) qui n'utilisaient pas CephFS, il se peut que le moniteur plante une fois mis à jour vers Pacific en raison de certaines anciennes structures de données qu'il ne comprend toujours pas. Suivez la solution de contournement dans le suivi des bogues Ceph ou attendez que Ceph Octopus v15.2.14 puisse être installé avant de passer à Pacific.