Pourquoi mon cluster Amazon OpenSearch Service s’affiche-t-il en rouge ou en jaune ?

Lecture de 10 minute(s)
0

L'état de mon cluster Amazon OpenSearch Service est rouge ou jaune.

Brève description

L'onglet Surveillance de votre console OpenSearch Service indique l'état de l'index le moins sain de votre cluster. L’affichage de l’état d’un cluster en rouge n’indique pas une panne du cluster. Cet état indique qu'au moins une partition principale et ses réplications ne sont pas allouées à un nœud. Si l'état de votre cluster passe au jaune, les partitions principales de tous les index sont allouées aux nœuds de votre cluster. Toutefois, une ou plusieurs partitions de réplication ne sont allouées à aucun des nœuds.

Remarque : Ne reconfigurez pas votre domaine avant d’avoir résolu l’état du cluster affiché en rouge. Si vous essayez de reconfigurer le domaine lorsqu’il est associé à un état de cluster affiché en rouge, il peut en effet rester bloqué à l’état « Traitement en cours ». Pour plus d’informations sur les clusters bloqués à l’état de « Traitement en cours », consultez la section Pourquoi mon domaine OpenSearch Service est-il bloqué à l’état « Traitement en cours » ?

Pour déterminer les raisons pour lesquelles l’état de votre cluster s’affiche en rouge, consultez la section Affichage de l’état du cluster en rouge.

Remarque : Dans certains cas, vous pouvez résoudre l’affichage en rouge de l’état d’un cluster en supprimant puis en restaurant l’index à partir d’un instantané automatique.

Pour déterminer les raisons pour lesquelles l’état de votre cluster s’affiche en jaune, consultez la section Affichage de l’état du cluster en jaune.

Remarque : Si l’affichage en jaune de l’état de votre cluster ne se résout pas sans intervention de votre part, vous pouvez le résoudre en mettant à jour les paramètres d’index ou en réattribuant manuellement les partitions désattribuées. Si l’affichage en jaune de l’état de votre cluster ne se résout pas automatiquement, vous devez identifier et résoudre la cause première. Pour éviter l’état de cluster jaune, appliquez les meilleures pratiques en matière de santé.

Résolution

Identifier la cause de désattribution des partitions

Pour déterminer les causes d’une désattribution des partitions, vous pouvez utiliser un runbook AWS Systems Manager Automation ou des commandes curl manuelles.

Utiliser un runbook d’automatisation

Accédez au cluster AWSSupport-TroubleshootOpenSearchRedYellowCluster dans la console AWS Systems Manager. Suivez ensuite ces étapes pour configurer l’automatisation.

Utiliser les commandes curl

Pour détecter les partitions désattribuées, effectuez les opérations suivantes :

  1. Répertoriez les partitions désattribuées :

    $ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED
  2. Récupérez les détails permettant d’expliquer pourquoi les partitions ne sont pas attribuées :

    $ 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 un cluster dont l’état est affiché en rouge, supprimez les index problématiques, puis déterminez et corrigez la cause première :

    curl -XDELETE 'domain-endpoint/<index names>'
  4. Répertoriez ensuite les instantanés disponibles et restaurez les index à partir d’un instantané:

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

Si l’état du cluster est affiché en jaune, trouvez la cause première afin d’attribuer les partitions.

Résoudre les problèmes liés à l’affichage en rouge ou en jaune de l’état d’un cluster

Insuffisance de nœuds à attribuer aux partitions

Une partition de réplique ne doit être affecté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 l’état de cluster jaune. 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 une réplication.

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. Il est recommandé de conserver le paramètre cluster.max_shards_per_node défini sur la valeur par défaut de « 1 000 ». Si vous définissez des filtres d’allocation de partitions permettant de contrôler la façon dont OpenSearch Service alloue les partitions, il est possible que la partition ne soit pas allouée en raison d’un nombre insuffisant de nœuds filtrés. Pour éviter cette pénurie de nœuds, augmentez le nombre de nœuds. 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, consultez les sections : Taille des domaines OpenSearch Service et Démystification de l'allocation des partitions OpenSearch Service.

Espace disque insuffisant ou inclinaison du disque

S’il n’y a pas assez d’espace disque, l’état d’intégrité de votre cluster peut s’afficher en rouge ou en jaune. L’espace disque doit être suffisant pour accueillir les partitions avant qu’elles soient distribuées par OpenSearch Service.

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 d'espace de stockage, consultez la section : Comment résoudre un problème d'espace de stockage insuffisant dans mon domaine OpenSearch Service ?

Une forte inclinaison du disque peut également entraîner des problèmes d’espace de stockage insuffisant pour certains nœuds de données. Si vous décidez de réattribuer des partitions, une désattribution peut se produire lors de leur distribution. Pour résoudre ce problème, consultez la section Comment puis-je rééquilibrer la distribution inégale des partitions dans mon cluster OpenSearch Service ?

Le paramétrage de l’attribution de partitions basée sur le disque peuvent également entraîner la désattribution des partitions. Par exemple, si la métrique cluster.routing.allocation.disk.watermark.low est définie à 50 Go, l'espace disque spécifié doit être disponible pour l'allocation des partitions.

Pour vérifier les paramètres actuels d'allocation des 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 pour les clusters jaunes et rouges.
  • Supprimer les indices rouges pour les clusters rouges
  • Augmentez le volume de l'EBS.
  • Ajoutez des nœuds de données.

Remarque : Évitez de modifier la configuration de votre cluster lorsque son état est affiché en rouge. Si vous essayez de reconfigurer le domaine lorsqu’il est associé à un état de cluster affiché en rouge, il peut en effet rester bloqué à l’état « Traitement en cours ».

Forte sollicitation de la mémoire JVM

Chaque allocation de partition utilise le processeur, l'espace de tas ainsi que les ressources du disque et du réseau. Des sollicitations constamment élevées de la mémoire JVM peuvent empêcher un échec d’allocation des partitions. Par exemple, une sollicitation de la mémoire JVM dépassant 95 % déclenche un disjoncteur parent de la mémoire. Ceci annule le thread d’attribution, laissant les partitions désattribuées.

Pour résoudre ce problème, vous devez d’abord réduire la sollicitation de la mémoire JVM. Par la suite, appliquez ces conseils supplémentaires pour rétablir l'état de santé de votre cluster :

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

Exemple d’API permettant d’augmenter le nombre de tentatives :

PUT <index-name>/_settings{
 "index.allocation.max_retries" : <value>
}

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

Défaillance de nœud

En cas de défaillance de nœud dans votre cluster, les partitions allouées à un nœud ne sont plus attribuées. Lorsqu’aucune partition de réplication n’est disponible pour un index donné, la défaillance d’un seul nœud peut entraîner le passage au rouge de l’état d’intégrité. Pour protéger votre cluster contre les pertes de données dues à des pannes matérielles, utilisez deux partitions de réplication et un déploiement multi-AZ.

Si tous vos index comportent une partition de réplication, la défaillance d’un seul nœud peut entraîner l’affichage temporaire de l’état d’intégrité votre cluster en jaune. Si l’état d’intégrité de votre cluster s’affiche temporairement en jaune, OpenSearch Service se rétablira automatiquement dès que le nœud retrouvera son état d’intégrité. Autrement, OpenSearch Service se rétablira lors de l’attribution des partitions à un nouveau nœud.

Pour rechercher des nœuds défaillants, consultez les statistiques Amazon CloudWatch. Pour plus d’informations sur l’identification d’un nœud défaillant, consultez la section Nœuds de cluster défaillants.

Remarque : Il est également recommandé d’attribuer une partition de réplication à chaque index ou d’utiliser des nœuds primaires dédiés et d’activer la prise en compte des zones. Pour plus d'informations, consultez la section : Faire face à un échec, sur le site Web d'Elasticsearch.

Dépassement du seuil maximal de tentatives

Dans OpenSearch Service, le cluster ne doit pas dépasser la limite de temps maximale (5 000 ms) ni le nombre de tentatives d’attribution de partitions (5). Si le cluster atteint les seuils maximaux, vous devez déclencher manuellement une attribution de partitions. Pour ce faire, désactivez et réactivez les partitions de réplication de vos index.

Une modification apportée à la configuration de votre cluster peut également déclencher l’attribution de partitions. Pour plus d’informations sur l’attribution de partitions, consultez la section Chaque partition mérite une place sur le site Web d’Elasticsearch.

Remarque : Il n’est pas recommandé de déclencher manuellement l’attribution de partitions si votre cluster est soumis à une charge de travail volumineuse. Si vous supprimez toutes les réplications d’un index, celui-ci doit se baser uniquement sur les partitions principales. Lorsqu’un nœud est défaillant, l’état du cluster passe alors au rouge, car les partitions principales ne sont pas attribuées.

Pour désactiver une partition de réplication, mettez à jour la valeur du nombre \ _of _replicas à « 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 « false ». Lorsque l’état de votre cluster repasse au vert, vous pouvez redéfinir le paramètre index.number_of_replicas à la valeur souhaitée afin de déclencher l’attribution de partitions de réplication. Si l’attribution de partitions réussit, l’état d’intégrité de votre cluster repassera au vert.

Bonnes pratiques pour maintenir l’intégrité des clusters

Pour résoudre le problème de l'état de votre cluster jaune ou rouge, appliquez les bonnes pratiques suivantes :

  • Définissez une alarme Amazon CloudWatch pour AutomatedSnapshotFailure. Grâce à l’alarme, vous avez la certitude de disposer d’un instantané pour restaurer vos index si votre cluster passe au rouge.
  • Si votre cluster est constamment soumis à une charge de travail volumineuse, mettez-le à l’échelle. Pour plus d’informations sur la mise à l’échelle de votre cluster, consultez la section Comment puis-je augmenter verticalement un domaine OpenSearch Service ?
  • Surveillez l’utilisation du disque, la sollicitation de la mémoire JVM, ainsi que l’utilisation du processeur afin de vérifier que les seuils définis ne sont ne pas définis. Pour plus d’informations, consultez la section Alarmes CloudWatch recommandées et ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/managedomains-cloudwatchmetrics.html#managedomains-cloudwatchmetrics-cluster-metrics)Métriques de cluster[.
  • Assurez-vous que toutes les partitions principales disposent de réplications pour vous protéger contre les défaillances des nœuds.

Pour plus d'informations, consultez la section : Meilleures pratiques opérationnelles pour le service Amazon OpenSearch.