Pourquoi mon nœud Amazon OpenSearch Service a-t-il planté ?

Date de la dernière mise à jour : 30/07/2021

L'un des nœuds de mon cluster Amazon OpenSearch Service (successeur d'Amazon Elasticsearch Service) est en panne. Pourquoi le nœud est-il en panne et comment éviter que cela se reproduise ?

Brève description

Chaque nœud OpenSearch Service s'exécute sur une instance Amazon Elastic Compute Cloud (Amazon EC2) distincte. Un nœud défaillant est une instance qui ne répond pas aux signaux d'activité des autres nœuds. Les signaux de pulsation sont des signaux réguliers qui contrôlent la disponibilité des nœuds de données dans le cluster.

Les nœuds de cluster peuvent être défaillants pour l'une ou l'autre des raisons suivantes :

  • Forte sollicitation de la mémoire de la machine virtuelle Java (JVM)
  • Panne matérielle

Solution

Rechercher les nœuds défaillants

1.    Ouvrez la console OpenSearch Service.

2.    Choisissez le nom de votre domaine OpenSearch Service.

3.    Choisissez l'onglet Santé du cluster, puis la métrique Nœuds. Si le nombre de nœuds est inférieur au nombre que vous avez défini pour votre cluster, cela signifie qu'un nœud est défaillant.

Remarque : la métrique Nœuds peut être inexacte durant les modifications de la configuration de votre cluster ou pendant les opérations de maintenance du service. Ce comportement est normal.

Identifiez et résolvez les problèmes liés à une forte sollicitation de la mémoire JVM.

La sollicitation de mémoire JVM désigne le pourcentage de tas Java utilisé pour tous les nœuds de données d'un cluster OpenSearch Service. Une forte sollicitation de la mémoire JVM peut entraîner une utilisation élevée du processeur et poser d'autres problèmes de performances de cluster.

La sollicitation de la mémoire JVM est déterminée par les facteurs suivants :

  • Volume de données dans le cluster proportionnellement aux nombres de ressources.
  • Charge des requêtes dans le cluster.

Voici ce qui se produit lorsque la sollicitation de la mémoire JVM augmente :

  • À 75 % : OpenSearch Service déclenche le récupérateur de mémoire Concurrent Mark Sweep (CMS). Le récupérateur CMS s'exécute en même temps que d'autres processus pour réduire au minimum les pauses et interruptions. Remarque : OpenSearch Service publie plusieurs métriques du récupérateur de mémoire sur Amazon CloudWatch. Ces métriques peuvent vous aider à contrôler l'utilisation de la mémoire JVM. Pour en savoir plus, veuillez consulter la rubrique Surveillance des métriques d'un cluster avec Amazon CloudWatch Logs.
  • Au-dessus de 75 % : si le récupérateur CMS ne parvient pas à récupérer suffisamment de mémoire et que l'utilisation reste supérieure à 75 %, JVM OpenSearch Service tente de libérer de la mémoire. La JVM OpenSearch Service tente également d'empêcher une exception JVM OutOfMemoryError (OOM) en ralentissant ou en arrêtant des processus.
  • Si la JVM continue de croître et que l'espace n'est pas récupéré, la JVM OpenSearch Service arrête les processus qui tentent d'allouer de la mémoire. Si un processus important est arrêté, un ou plusieurs nœuds de cluster peuvent devenir défaillants. Il est recommandé de maintenir l'utilisation du processeur inférieure à 80 %.

Afin d'éviter toute sollicitation élevée de la mémoire JVM, suivez les bonnes pratiques ci-dessous :

  • Évitez d'exécuter des requêtes sur de larges plages, telles que des requêtes génériques.
  • Évitez d'envoyer un grand nombre de requêtes en même temps.
  • Assurez-vous de disposer du nombre approprié de partitions. Pour plus d'informations concernant la stratégie d'indexation, veuillez consulter la rubrique Choix du nombre de partitions.
  • Assurez-vous que vos partitions sont réparties de façon uniforme entre les nœuds.
  • Évitez l'agrégation sur les champs de texte. Cela permet d'éviter les augmentations dans les champs de données. Plus vous disposez de données de champ, plus l'espace de tas est utilisé. Utilisez l'opération d'API GET _cluster/stats pour vérifier les données de champ. Pour plus d'informations, veuillez consulter la rubrique Fielddata sur le site Web d'Elasticsearch.
  • Si vous devez effectuer des agrégations sur des champs de texte, remplacez le type de mappage par mot clé. Si la sollicitation de la mémoire JVM devient trop élevée, utilisez les opérations d'API suivantes afin de nettoyer le cache des données de champ : POST /index_name/_cache/clear (cache au niveau de l'index) et POST */_cache/clear (cache au niveau du cluster).
    Remarque : le nettoyage du cache peut perturber les requêtes en cours.

Identification et résolution des problèmes de défaillance matérielle

Parfois, les défaillances matérielles peuvent avoir un impact sur la disponibilité des nœuds Pour limiter l'impact des défaillances matérielles potentielles, procédez comme suit :

  • Assurez-vous que votre cluster comporte plus d'un nœud. Un cluster à nœud unique constitue un point de défaillance unique. Vous ne pouvez pas utiliser de partitions de réplica pour sauvegarder vos données, car les partitions principales et de réplica ne peuvent pas être affectées au même nœud. Si le nœud tombe en panne, vous pouvez restaurer les données à partir d'un instantané. Pour plus d'informations sur les instantanés, veuillez consulter la rubrique Création d'instantanés d'index dans Amazon OpenSearch Service. Notez que vous ne pouvez pas récupérer les données qui n'ont pas déjà été capturées dans le dernier instantané. Pour plus d'informations, veuillez consulter les rubriques Taille des domaines OpenSeach Service et Création et gestion de domaines OpenSearch Service.
  • Assurez-vous de disposer d'au moins un réplica. Un cluster à plusieurs nœuds peut toujours perdre des données s'il n'y a pas de partitions de réplica.
  • Activez la prise en compte des zones. Lorsque la reconnaissance de zone est activée, OpenSearch Service lance des nœuds de données dans plusieurs zones de disponibilité. OpenSearch Services essaie de distribuer les partitions principales et leurs partitions de réplica correspondantes vers différentes zones. En cas de défaillance d'un nœud ou d'une zone de disponibilité, vos données sont toujours disponibles. Pour plus d'informations, veuillez consulter la rubrique Configuration d'un domaine Multi-AZ.