Pourquoi mon cluster Amazon OpenSearch Service est-il en rouge ou en jaune ?

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

Mon cluster Amazon OpenSearch Service (successeur d'Amazon Elasticsearch Service) est en cluster rouge ou jaune. Quelle en est la raison ?

Brève description

L'onglet Surveillance de votre console OpenSearch Service indique le statut de l'index le moins sain de votre cluster. Un statut de cluster rouge ne signifie pas que votre cluster est arrêté. Au contraire, cet état indique qu'au moins une partition principale et ses réplications ne sont pas allouées à un nœud. Si le statut de votre cluster s'affiche en jaune, ce signifie que les partitions principales de tous les index sont allouées aux nœuds de votre cluster. Cependant, les partitions de réplication d'au moins un index ne sont alloués à aucun des nœuds.

Remarque : ne reconfigurez pas votre domaine avant d'avoir d'abord résolu le problème du statut rouge du cluster. Si vous essayez de reconfigurer votre domaine alors que le statut du cluster est rouge, il peut rester bloqué dans l'état « Traitement en cours ». Pour plus d'informations sur les clusters bloqués dans un statut « Traitement en cours », consultez Pourquoi mon domaine Amazon OpenSearch Service est-il bloqué dans le statut « Traitement en cours » ?

Le statut de votre cluster peut passer au rouge pour les raisons suivantes :

  • Multiples échecs des nœuds de données
  • Utilisation d'une partition corrompue ou rouge pour un index
  • Pression de la mémoire JVM élevée ou utilisation du processeur
  • Espace disque faible ou asymétrie du disque

Remarque : dans certains cas, vous pourrez peut-être résoudre le problème du statut rouge de votre cluster en supprimant puis en restaurant l'index à partir d'un instantané automatisé.

Le statut de votre cluster peut passer à jaune pour les raisons suivantes :

  • Création d'un nouvel index
  • Pas assez de nœuds à allouer aux partitions ou à l'inclinaison du disque
  • Forte sollicitation de la mémoire JVM
  • Défaillance du nœud unique
  • Dépassement du nombre maximal de tentatives d'allocation de partition

Remarque : si l'état de votre cluster jaune ne se résout pas, vous pouvez le résoudre en mettant à jour les paramètres d'index ou en redirigeant manuellement les partitions non attribuées. Si l'état de votre cluster jaune ne se résout pas automatiquement, identifiez et résolvez la cause racine. Pour empêcher l'état de cluster jaune, appliquez les bonnes pratiques en matière de santé.

Résolution

Identification de la raison de vos partitions non attribuées

Pour identifier les partitions non attribuées, effectuez les opérations suivantes :

1.    Répertorier la partition non attribuée :

$ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED

2.    Récupérez les détails expliquant pourquoi la partition n'est pas attribuée :

$ curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d'{"index": "<index name>", "shard": <shardId>, "primary":<true or false>}'

3.    (Facultatif) Pour le statut rouge du cluster, supprimez les index pertinents et identifiez et corrigez le problème de base :

curl -XDELETE 'domain-endpoint/<index names>'

Ensuite, identifiez les instantanés disponibles et restaurez vos index à partir d'un instantané :

curl -XGET 'domain-endpoint/_snapshot?pretty'

Pour l'état du cluster jaune, abordez la cause racine afin que vos partitions soient attribuées.

Dépannage de l'état de votre cluster rouge ou jaune

Pas assez de nœuds à allouer aux partitions

Une partition de réplication ne sera pas attribuée au même nœud que sa partition principale. Un cluster à nœud unique avec des partitions de réplication s'initialise toujours avec le statut jaune de cluster. Les clusters à nœud unique sont initialisés de cette façon, car il n'existe aucun autre nœud disponible auquel OpenSearch Service peut attribuer un réplica.

Il existe également une limite par défaut de « 1 000 » pour le paramètre cluster.max_shards_per_node pour OpenSearch Service versions 7.x et ultérieures. Une bonne pratique consiste à conserver le paramètre cluster.max_shards_per_node sur la valeur par défaut « 1 000 ». Si vous définissez des filtres d'allocation de partitions pour contrôler la façon dont OpenSearch Service alloue des partitions, la partition peut devenir non attribuée parce qu'il n'y a pas suffisamment de nœuds filtrés. Pour éviter cette pénurie de nœuds, augmentez-en le nombre. Assurez-vous que le nombre de réplications pour chaque partition principale est inférieur au nombre de nœuds de données. Vous pouvez également réduire le nombre de partitions de réplication. Pour plus d'informations, veuillez consulter les rubriques Taille des domaines OpenSearch Service et Démystification de l'allocation de partitions OpenSearch Service.

Espace disque faible ou asymétrie du disque

S'il n'y a pas assez d'espace disque, le statut de votre cluster peut passer à rouge ou jaune. L'espace disque doit être suffisant pour accueillir les partitions avant qu'OpenSearch Service ne distribue les partitions.

Pour vérifier l'espace de stockage disponible pour chaque nœud de votre cluster, utilisez la syntaxe suivante :

$ curl domain-endpoint/_cat/allocation?v

Pour plus d'informations sur les problèmes liés à l'espace de stockage, consultez Comment résoudre le faible espace de stockage dans mon domaine Amazon OpenSearch Service ?

Une inclinaison importante du disque peut également entraîner un problème d'espace de stockage faible pour certains nœuds de données. Si vous décidez de réallouer des partitions, celles-ci peuvent ne pas être attribuées pendant la distribution des partitions. Pour résoudre ce problème, consultez Comment puis-je rééquilibrer la distribution inégale des partitions dans mon cluster Amazon OpenSearch Service ?

Les paramètres d'allocation de partition basée sur le disque peuvent également entraîner la non-allocation de partitions. Par exemple, si la métrique cluster.routing.allocation.disk.watermark.low est définie sur 50 Go, la quantité d'espace disque spécifiée doit être disponible pour l'allocation de partition.

Pour vérifier les paramètres actuels d'allocation de partitions sur disque, utilisez la syntaxe suivante :

$ curl -XGET domain-endpoint/_cluster/settings?include_defaults=true&flat_settings=true

Pour résoudre vos problèmes d'espace disque, envisagez les approches suivantes :

  • Supprimez tous les indices indésirables.
  • Augmentez le volume EBS.
  • Ajoutez plus de nœuds de données.

Forte sollicitation de la mémoire JVM

Chaque allocation de partition utilise le processeur, l'espace du tas et les ressources disque et réseau. Des niveaux constamment élevés de pression de la mémoire JVM peuvent entraîner un échec d'allocation de partition. Par exemple, si la pression de la mémoire JVM dépasse 95 %, un disjoncteur de mémoire parent sera déclenché. Le thread d'allocation est ensuite annulé, laissant les partitions non attribuées.

Pour résoudre ce problème, réduisez d'abord le niveau de pression de la mémoire JVM. Une fois la pression de la mémoire JVM réduite, tenez compte de ces conseils supplémentaires pour ramener votre cluster à l'état d'intégrité vert :

  • Augmentez la valeur de nouvelle tentative de partition par défaut de « 5 » ou plus.
  • Désactivez et activez la partition de réplication.
  • Réessayez manuellement les partitions non attribuées.

Pour plus d'informations sur la réduction de la sollicitation de la mémoire JVM, consultez Comment puis-je résoudre les problèmes liés à une forte sollicitation de la mémoire JVM dans mon cluster Amazon OpenSearch Service ?

Échec du nœud

Lorsque votre cluster rencontre une défaillance de nœud, les partitions allouées à un nœud deviennent non attribuées. Lorsqu'aucune partition de réplication n'est disponible pour un index donné, même une défaillance d'un seul nœud peut entraîner un état d'intégrité rouge. Le fait de disposer de deux partitions de réplication et d'un déploiement Multi-AZ protège votre cluster contre la perte de données lors d'une panne matérielle.

Si tous vos index ont une partition de réplication, tout échec d'un seul nœud peut provoquer le passage temporaire du statut du cluster à jaune. Si le statut de votre cluster passe temporairement à jaune, OpenSearch Service se rétablit automatiquement dès que l'état du nœud est à nouveau sain. OpenSearch Service peut également se rétablir lorsque des partitions sont affectées à un nouveau nœud.

Vous pouvez confirmer tout échec de nœud en vérifiant vos métriques Amazon CloudWatch. Pour plus d'informations sur l'identification d'une défaillance de nœud, veuillez consulter la rubrique Nœuds de cluster ayant échoué.

Remarque : il est également de bonne pratique d'attribuer une partition de réplication pour chaque index ou d'utiliser des nœuds maîtres dédiés et d'activer la détection de zone. Pour plus d'informations, consultez Faire face à une panne sur le site Web d'Elasticsearch.

Dépassement du nombre maximal de tentatives

Dans OpenSearch Service, votre cluster ne doit pas dépasser la limite de temps maximale (5 000 ms) ni le nombre de nouvelles tentatives (5) pour l'allocation des partitions. Si votre cluster a atteint les seuils maximum, vous devez déclencher manuellement une allocation de partition. Pour déclencher manuellement une allocation de partition, désactivez et réactivez les partitions de réplication pour vos index.

Une modification de configuration sur votre cluster peut également déclencher une allocation de partition. Cependant, évitez de modifier la configuration de votre cluster lorsqu'il est en état d'intégrité rouge. Pour plus d'informations sur l'allocation de partitions, voir Chaque partition mérite une maison sur le site Web d'Elasticsearch.

Remarque : il n'est pas recommandé de déclencher manuellement l'allocation de partition si votre cluster a une charge de travail importante. Si vous supprimez tous vos réplications d'un index, l'index ne doit reposer que sur des partitions primaires. Lorsqu'un nœud tombe en panne, votre cluster entre alors dans l'état d'intégrité rouge car les partitions principales ne sont pas attribuées.

Pour désactiver une partition de réplication, mettez à jour la valeur number_of_replicas sur « 0 » :

$ curl -XPUT 'domain-endpoint/<indexname>/_settings' -H 'Content-Type: application/json' -d'
{
  "index" : {
    "number_of_replicas" : 0
  }
}'

Vérifiez également que le paramètre index.auto_expand_replicas est défini sur « faux ». Lorsque votre cluster revient à l'état d'intégrité vert, vous pouvez redéfinir la valeur index.number_of_replicas sur la valeur souhaitée pour déclencher l'allocation des partitions de réplication. Si l'allocation de partition réussit, votre cluster entrera dans l'état d'intégrité vert.

Meilleures pratiques relatives à l'intégrité du cluster

Pour résoudre l'état de votre cluster jaune ou rouge, tenez compte des bonnes pratiques suivantes :

Pour plus d'informations sur les bonnes pratiques d'OpenSearch Service, veuillez consulter les Bonnes pratiques relatives à Amazon OpenSearch Service.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?