Comment optimiser l'espace disque et l'utilisation d'Elasticsearch ?

Expliquer comment prévenir et traiter les cas où le disque est trop plein (surutilisation) et où la capacité du disque est sous-utilisée.

Vous débutez avec Elasticsearch ? Participez à notre webinaire Premiers pas avec Elasticsearch. Vous pouvez aussi démarrer un essai gratuit sur le cloud ou tester Elastic dès maintenant sur votre machine.

La gestion des disques est importante pour toute base de données, et Elasticsearch ne fait pas exception. Si vous n'avez pas assez d'espace disque disponible, Elasticsearch arrêtera d'allouer des shards au nœud. Cela vous empêchera éventuellement d'écrire des données dans le cluster, avec le risque potentiel de perte de données dans votre application. En revanche, si vous disposez de trop d'espace disque, vous payez pour plus de ressources que vous n'en avez besoin.

Historique des filigranes

Il existe différents seuils "en filigrane" sur votre cluster Elasticsearch qui vous aident à suivre l'espace disque disponible. Lorsque le disque d'un nœud se remplit, le premier seuil à être franchi est le "filigrane de disque faible". Le deuxième seuil sera alors le "seuil de filigrane de disque élevé". Enfin, le "stade de l'inondation du disque" sera atteint. Une fois ce seuil dépassé, le cluster bloque l'écriture dans TOUS les index qui ont un shard (primaire ou réplique) sur le nœud qui a passé le filigrane. Les lectures (recherches) restent possibles.

Comment prévenir et gérer les cas où le disque est trop plein (surutilisation) ?

Il existe plusieurs méthodes pour gérer les cas où le disque Elasticsearch est trop plein :

  1. Supprimer les anciennes données : En général, les données ne doivent pas être conservées indéfiniment. L'un des moyens de prévenir et de résoudre le problème des disques trop pleins est de veiller à ce que les données atteignant un certain âge soient archivées et supprimées de manière fiable. L'un des moyens d'y parvenir est d'utiliser l'ILM.
  2. Augmenter la capacité de stockage : Si vous ne pouvez pas supprimer les données, vous pouvez ajouter des nœuds de données supplémentaires ou augmenter la taille des disques afin de conserver toutes les données sans nuire aux performances. Si vous devez ajouter de la capacité de stockage à la grappe, vous devez déterminer si vous devez ajouter uniquement de la capacité de stockage, ou à la fois de la capacité de stockage et des ressources RAM et CPU en proportion (voir la section sur le rapport entre la taille du disque, la RAM et le CPU ci-dessous).

Comment ajouter de la capacité de stockage à votre cluster Elasticsearch ?

  1. Augmentez le nombre de nœuds de données : N'oubliez pas que les nouveaux nœuds doivent être de la même taille que les nœuds existants et de la même version d'Elasticsearch.
  2. Augmenter la taille des nœuds existants : Dans les environnements en nuage, il est généralement facile d'augmenter la taille du disque et la RAM/CPU sur les nœuds existants.
  3. Augmentez uniquement la taille du disque : Dans les environnements en nuage, il est souvent relativement facile d'augmenter la taille du disque.
  4. Instantané et restauration: Si vous souhaitez que les anciennes données soient récupérées sur demande dans le cadre d'un processus automatisé à partir des sauvegardes, vous pouvez prendre des clichés des anciens index, les supprimer et restaurer temporairement les données sur demande à partir des clichés. 
  5. Réduire le nombre de répliques par groupe : Une autre option pour réduire les données consiste à réduire le nombre de répliques de chaque groupe. Pour des raisons de haute disponibilité, il est préférable d'avoir une réplique par bloc de données, mais lorsque les données vieillissent, il est possible de se passer de répliques. Cela peut généralement fonctionner si les données sont persistantes ou si vous disposez d'une sauvegarde à restaurer en cas de besoin.
  6. Créer des alertes : Afin d'éviter que les disques ne se remplissent à l'avenir et d'agir de manière proactive, vous devriez créer des alertes basées sur l'utilisation du disque qui vous préviendront lorsque le disque commencera à se remplir. 

Comment prévenir et traiter les cas où la capacité du disque est sous-utilisée ?

Si la capacité de votre disque est sous-utilisée, il existe plusieurs options pour réduire le volume de stockage de votre cluster.

Comment réduire le volume de stockage d'un cluster Elasticsearch ?

Il existe plusieurs méthodes pour réduire le volume de stockage d'un cluster.

1. Réduire le nombre de nœuds de données

Si vous souhaitez réduire le stockage des données et réduire les ressources RAM et CPU dans la même proportion, il s'agit de la stratégie la plus simple. Le déclassement des nœuds inutiles devrait permettre de réaliser les économies les plus importantes.

Avant de mettre le nœud hors service, vous devez.. :

  • Assurez-vous que le nœud à mettre hors service n'est pas nécessaire en tant que nœud MASTER. Vous devez toujours avoir au moins trois nœuds ayant le rôle de nœud MASTER.
  • Migrer les blocs de données hors du nœud à mettre hors service.

2. Remplacer les nœuds existants par des nœuds plus petits

Si vous ne pouvez pas réduire davantage le nombre de nœuds (en général, 3 est une configuration minimale), vous pouvez alors réduire la taille des nœuds existants. Il est conseillé de veiller à ce que tous les nœuds de données aient la même mémoire RAM et la même taille de disque, étant donné que l'équilibre des ensembles est basé sur le nombre d'ensembles par nœud.

La procédure serait la suivante :

  • Ajouter de nouveaux nœuds plus petits à la grappe
  • Faire migrer les shards à l'écart des nœuds à déclasser
  • Arrêter les anciens nœuds

3. Réduire la taille des disques sur les nœuds

Si vous souhaitez uniquement réduire la taille des disques sur les nœuds sans modifier la mémoire vive ou l'unité centrale de la grappe, vous pouvez réduire la taille des disques pour chaque nœud. La réduction de la taille du disque sur un nœud Elasticsearch n'est pas un processus trivial.

La manière la plus simple de le faire est généralement d'effectuer les opérations suivantes :

  • Migrations de shards depuis le nœud
  • Arrêter le nœud
  • Monter un nouveau volume de données sur le nœud avec la taille appropriée
  • Copier toutes les données de l'ancien volume de disque vers le nouveau volume
  • Détacher l'ancien volume A
  • Démarrer le nœud et migrer les unités de stockage vers le nœud

Pour ce faire, vous devez disposer d'une capacité suffisante sur les autres nœuds pour stocker temporairement les fragments supplémentaires du nœud au cours de ce processus. Dans de nombreux cas, le coût de la gestion de ce processus peut dépasser les économies potentielles en termes d'utilisation du disque. Pour cette raison, il peut être plus simple de remplacer le nœud par un nouveau nœud ayant la taille de disque souhaitée (voir "Remplacer les nœuds existants par des nœuds plus petits" ci-dessus).

Lorsque vous payez pour des ressources inutiles, il est évident que vous pouvez réduire les coûts en optimisant l'utilisation de vos ressources.

La relation entre la taille du disque, la mémoire vive et le processeur

Le rapport idéal entre la capacité des disques et la mémoire vive dans votre cluster dépend de votre cas d'utilisation particulier. C'est pourquoi, lorsque vous envisagez de modifier votre capacité de stockage, vous devez également vous demander si vos ratios actuels Disque/RAM/CPU sont bien équilibrés et si, par conséquent, vous devez également ajouter/réduire la RAM/CPU dans les mêmes proportions.

Les besoins en RAM et en CPU dépendent du volume de l'activité d'indexation, du nombre et du type de requêtes, ainsi que de la quantité de données recherchées et agrégées. Elle est souvent proportionnelle à la quantité de données stockées sur la grappe, et doit donc également être liée à la taille du disque.

Le rapport entre la capacité du disque et la mémoire vive peut varier en fonction du cas d'utilisation. Voir quelques exemples ici :

Activité de l'indiceConservationActivité de rechercheCapacité du disqueRAM
Application de recherche d'entrepriseIngestion modérée de billesLonguesLumière2TB32GB
Surveillance des applicationsIngestion intensive de boisCourtLumière1TB32GB
Commerce électroniqueIndexation des données légèresIndéfinieLourd500GB32GB

N'oubliez pas que la modification de la configuration des machines des nœuds doit être effectuée avec précaution, car elle peut entraîner l'arrêt du nœud et vous devez veiller à ce que les fragments ne commencent pas à migrer vers vos autres nœuds déjà surchargés.

Pour aller plus loin

Prêt à créer des expériences de recherche d'exception ?

Une recherche suffisamment avancée ne se fait pas avec les efforts d'une seule personne. Elasticsearch est alimenté par des data scientists, des ML ops, des ingénieurs et bien d'autres qui sont tout aussi passionnés par la recherche que vous. Mettons-nous en relation et travaillons ensemble pour construire l'expérience de recherche magique qui vous permettra d'obtenir les résultats que vous souhaitez.

Jugez-en par vous-même