Exploitation courante d'Elasticsearch et scénarios de panne (8.x / 9.x)
ElasticsearchNiveau: AvancéDurée: 5 min (contrôle) – plusieurs heures (reindex, vidage d'un nœud)Il ne s'agit pas d'une installation : runbook par scénarios pour exploiter au quotidien un cluster Elasticsearch 8.x / 9.x installé et le rétablir en cas de panne. Santé et allocation explain, résolution des shards non assignés (disque, filtering, retry_failed, replicas, stale/empty primary en dernier recours), disk watermark, bloc read_only_allow_delete, ajout et retrait sécurisé de nœuds, reindex sans interruption via un alias, ILM et rollover, _shrink / _split, restauration d'un seul index depuis un snapshot sous un nouveau nom. Si vous ne savez pas quoi faire, commencez par le contrôle de santé. La mise en place des snapshot repositories et du SLM, le durcissement de la sécurité et les montées de version font l'objet de guides Elasticsearch distincts.
Topologie: Cluster Elasticsearch 8.x / 9.x (1–N nœuds), TLS et authentification activés
Scénarios
- Santé du cluster : status, nœuds, shards non assignés, disque — Lecture seule : green/yellow/red, liste des nœuds, shards non assignés (UNASSIGNED) et leur cause (allocation explain), occupation disque et watermarks, tâches en attente. Commencez ici si vous ne savez pas quoi faire.
- Résoudre un shard non assigné (UNASSIGNED) (selon explain) — Le cluster est yellow ou red et les shards ne sont pas alloués : selon la cause donnée par allocation explain, disque, allocation filtering, limite de tentatives (retry_failed), nombre de replicas ou, en dernier recours, primaire depuis une ancienne copie.
- Afficher / modifier les paramètres de disk watermark — Des shards sont déplacés ou ne sont pas alloués à cause du remplissage disque ; les seuils de watermark (low / high / flood_stage) doivent être modifiés temporairement ou durablement, ou remis aux valeurs par défaut.
- Index passé en lecture seule : lever le bloc read_only_allow_delete — Les écritures sont rejetées avec 'FORBIDDEN/12/index read-only / allow delete (api)' ou 'TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark' : libérez d'abord de l'espace disque, puis levez le bloc.
- Ajouter un nœud au cluster (enrollment token) — Besoin de capacité : Elasticsearch a été installé sur un nouveau serveur, qui rejoint le cluster avec un enrollment token ; les shards se rééquilibrent automatiquement. Aucune interruption.
- Retirer un nœud en toute sécurité (exclude, vidage, arrêt) — Un nœud est mis hors service ou son matériel va changer : ses shards sont déplacés vers les autres nœuds avec un allocation exclude, on vérifie qu'il est vide, on lui applique une voting exclusion s'il est master-eligible, puis on l'arrête.
- Reindex : bascule sans interruption vers un nouvel index via un alias pour un changement de mapping/paramètres — Le type d'un champ du mapping, l'analyzer ou le nombre de shards doit changer : un nouvel index est créé, les données sont copiées avec _reindex et l'alias est basculé de façon atomique vers le nouvel index.
- Mettre en place / dépanner l'index lifecycle (ILM) et le rollover — Les index de logs/séries temporelles grossissent ou ne sont pas supprimés : une politique ILM (rollover + delete), un index template et l'index initial (write alias) sont mis en place ; explain montre pourquoi une politique existante n'avance pas.
- Corriger le nombre de shards : _shrink (réduire) / _split (augmenter) — Le nombre de shards de l'index a été mal choisi : les shards trop petits (oversharding) sont fusionnés avec _shrink, les shards trop gros sont divisés avec _split ; la bascule se fait via un alias.
- Restaurer un seul index depuis un snapshot sous un nouveau nom — Un index a été supprimé ou corrompu : seul cet index est restauré depuis le snapshot repository sous un nouveau nom (rename), sans toucher à l'index en production ; après vérification, il est mis en service via un alias.
Avant de commencer
- Sur … (…), vous disposez des droits root, de curl et du certificat CA HTTP du cluster (…) ; vous avez le mot de passe de l'utilisateur elastic (ou d'un utilisateur ayant les privilèges manage + index). Les appels API sont envoyés à ce nœud en HTTPS.
- Une demande de changement a été ouverte et l'équipe applicative prévenue. Le déplacement de shards, le reindex et le resize chargent le disque, le réseau et le CPU ; faites-les hors heures de pointe. Avant les étapes irréversibles (suppression, stale/empty primary), il faut un snapshot récent : Snapshot.
- Le nouveau serveur a été préparé avec les phases de préparation du système d'exploitation et d'installation du logiciel du guide d'installation du cluster : même version d'Elasticsearch, vm.max_map_count, heap, swap désactivé, 9200/9300 ouverts dans le firewall ; le service n'a jamais été démarré (l'enrollment n'est possible qu'avant le premier démarrage).
Phases du guide
- Accès à l'API — Fichier d'identifiants temporaire pour l'API
- État : santé, nœuds, shards, disque (lecture seule) — Santé du cluster, nœuds et shards non assignés · Demander pourquoi le shard n'est pas assigné (allocation explain) · Occupation disque et watermarks · Tâches en attente et interprétation du résultat
- 1. Diagnostic : pourquoi le shard n'est-il pas alloué ? — Shards de l'index et décision d'explain
- 2. Application — Relancer les allocations en échec (retry_failed) · Adapter le nombre de replicas au nombre de nœuds · Supprimer l'allocation filtering · Aller au blocage disque · Allouer une primaire depuis une ancienne copie (allocate_stale_primary) · Allouer une primaire vide (allocate_empty_primary)
- 3. Vérification — Suivre le démarrage des shards
- 1. Diagnostic — Occupation disque et seuils actuels
- 2. Application — …Modifier les seuils…Remettre les seuils par défaut…
- 1. Diagnostic : bloc et disque — Afficher les index bloqués et le disque · Options pour libérer de l'espace disque
- 2. Application — Lever le bloc
- 3. Vérification — Tester que les écritures fonctionnent
- 1. Diagnostic — Afficher l'état du cluster
- 2. Application : enrollment et intégration — Créer un enrollment token de nœud · Configurer le nouveau nœud avec le token · Vérifier node.name et les paramètres réseau · Démarrer le service
- 3. Vérification — Vérifier que le nœud a rejoint le cluster et reçoit des shards
- 1. Diagnostic — Afficher les shards et le rôle du nœud
- 2. Application : vider et arrêter — Déplacer les shards hors du nœud (allocation exclude) · Attendre que le nœud soit vidé · Retirer le nœud master-eligible du vote · Arrêter le nœud · Supprimer l'exclude et la voting exclusion
- 3. Vérification — Vérifier la santé du cluster
- 1. Diagnostic et préparation — Afficher l'index source et l'alias · Créer le nouvel index avec le nouveau mapping/les nouveaux paramètres
- 2. Application : copier et basculer l'alias — Copier les données (_reindex, en arrière-plan) · Suivre la tâche · Préparer le nouvel index et comparer les nombres · Basculer l'alias de façon atomique vers le nouvel index
- 3. Après l'opération — Fermer l'ancien index (le supprimer plus tard)
- 1. Politique ILM, template et index initial — Créer la politique ILM · Créer l'index template · Créer l'index initial avec l'alias d'écriture
- Diagnostic : pourquoi ILM n'avance-t-il pas ? — Afficher l'état d'ILM et les index en erreur · Relancer l'étape en erreur
- Rollover manuel — Faire immédiatement le rollover de l'alias
- 1. Diagnostic — Nombre de shards et taille de l'index
- 3. Application — …Shrink…Split… : … → … (… shards) · Basculer l'alias vers le nouvel index
- 4. Après l'opération — Fermer l'index source (le supprimer plus tard)
- 1. Diagnostic : l'index est-il dans le snapshot ? — Afficher les snapshots et l'index qu'ils contiennent
- 2. Application : restaurer sous un nouveau nom — Restaurer l'index sous le nom …… · Vérifier et mettre en service
- Nettoyage — Supprimer le fichier d'identifiants