Passer au contenu

Pourquoi mon cluster OpenSearch Service apparaît-il en rouge ou en jaune ?

Lecture de 8 minute(s)
0

Mon cluster Amazon OpenSearch Service apparaît en rouge ou en jaune.

Brève description

L'onglet Surveillance de votre console OpenSearch Service indique l'état de l'index le moins sain de votre cluster. Un état rouge apparaît lorsque OpenSearch Service n'a pas alloué une ou plusieurs partitions principales et leurs réplicas. L’état jaune apparaît lorsque OpenSearch Service a alloué toutes les partitions principales mais n’a pas alloué une ou plusieurs partitions de réplica.

Important : Un état de cluster rouge indique une indisponibilité partielle des données. Bien qu'un état jaune n'indique pas une perte de données, l’état jaune signifie que votre cluster n'est pas totalement redondant. Si un nœud est défaillant, vous pouvez subir une perte de données.

Résolution

Important : Pour reconfigurer un domaine, vous devez d'abord résoudre l’état de cluster rouge. Si vous essayez de reconfigurer un domaine à l'état rouge, il se peut qu’il reste bloqué à l'état « Modification ».

Identifier la cause de non-attribution des partitions

Pour identifier et résoudre la cause racine des partitions non attribuées, utilisez le dossier d'exploitation AWSSupport-TroubleshootOpenSearchRedYellowCluster. Pour obtenir des instructions, consultez la section Instructions sur AWSSupport-TroubleshootOpenSearchRedYellowCluster.

Ou, pour identifier manuellement les partitions non attribuées, exécutez la commande suivante :

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

Remarque : Remplacez domain-endpoint par le point de terminaison de votre domaine. Dans la sortie, notez l'ID de la partition.

Puis, exécutez la commande suivante pour obtenir des informations sur les raisons pour lesquelles 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": false
}'

Remarque : Remplacez domain-endpoint par votre point de terminaison de domaine, index-name par votre nom d'index et shardID par l'ID de partition non attribué. S'il s'agit d'une partition principale, remplacez faux par vrai.

Résoudre les problèmes liés à l’état rouge ou jaune

Pour identifier les raisons pour lesquelles l'état du cluster est jaune ou rouge, procédez comme suit :

  • Vérifiez les métriques Amazon CloudWatch, ClusterStatus.yellow, ClusterStatus.red, Shards.unassigned, CPUUtilization et JVMMemoryPressure FreeStorageSpace.

  • Exécutez la requête suivante pour identifier les index concernés :

    GET /_cat/indices?v&health=yellow
    GET /_cat/indices?v&health=red
  • Exécutez la requête suivante pour comprendre pourquoi les partitions ne sont pas attribuées dans tous les index :

    GET /_cluster/allocation/explain

    Remarque : La sortie de cette commande vous donne une vue complète des partitions non attribuées et de leur état d'allocation sur l'ensemble de votre cluster. Vous pouvez utiliser ces informations pour obtenir un aperçu général des problèmes d'allocation.

Pour résoudre l’état d'un cluster rouge, exécutez la commande suivante pour supprimer les index rouges :

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

Remarque : Remplacez domain-endpoint par le point de terminaison de domaine et index-names par le nom de l'index.

Puis, restaurez vos index à partir d'un instantané.

Si l’état de votre cluster jaune ne se résout pas automatiquement, utilisez les informations expliquant pourquoi la partition n'est pas attribuée pour remédier à la cause racine.

Nœuds insuffisants à attribuer aux partitions

Les partitions principales et de réplica doivent résider sur des nœuds différents. Par conséquent, les clusters à nœud unique dotés de partitions de réplica s'initialisent toujours avec un état jaune car OpenSearch Service ne peut pas allouer de partitions de réplica.

Les versions 7.x et ultérieures d'OpenSearch Service ont un quota par défaut de 1000 pour cluster.max_shards_per_node. Il est recommandé d'utiliser la valeur par défaut pour cluster.max_shards_per_node. Pour plus d'informations, consultez la page Paramètres des partitions, des blocs et des tâches au niveau du cluster sur le site Web d’OpenSearch.

Si vous définissez des filtres d'allocation de partition, la partition peut devenir non attribuée car elle ne contient pas suffisamment de nœuds filtrés. Pour plus d'informations sur les filtres d'allocation de partitions, consultez la page Paramètres d'index au niveau de l'index sur le site Web d’OpenSearch.

Pour éviter ce problème, procédez comme suit :

Pour plus d'informations, consultez les sections Dimensionnement des domaines OpenSearch Service et Démystification de l'allocation des partitions OpenSearch Service.

Problèmes d'espace de stockage

Si l’espace disque est insuffisant, l’état d’intégrité de votre cluster peut apparaître en rouge ou en jaune. Votre nœud doit disposer d’un espace disque suffisant pour accueillir les partitions avant qu’elles ne soient distribuées par OpenSearch Service.

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

curl domain-endpoint/_cat/allocation?v

Remarque : Remplacez domain-endpoint par le point de terminaison de votre domaine.

Si vous répartissez les partitions de manière inégale, certains nœuds risquent de manquer d'espace alors que d'autres disposent de capacités. Cela peut entraîner des problèmes lors de la réallocation des partitions, où OpenSearch Service ne peut pas attribuer de nouvelles partitions pendant le processus de rééquilibrage.

Pour vérifier les paramètres de distribution de vos partitions, exécutez la commande suivante :

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

Remarque : Remplacez domain-endpoint par le point de terminaison de votre domaine.

Il est recommandé de surveiller régulièrement l'espace disque et de résoudre de manière proactive les problèmes d'asymétrie des disques pour résoudre l'état d’intégrité du cluster.

Pour plus d'informations, consultez les sections Comment résoudre les problèmes d'espace de stockage insuffisant dans mon domaine OpenSearch Service ?et Comment rééquilibrer la distribution inégale des partitions dans mon cluster OpenSearch Service ?

Forte sollicitation de la mémoire JVM

L'allocation de partitions est un processus gourmand en ressources qui consomme le processeur, l'espace de stockage, le disque et les ressources réseau. Une pression constamment élevée sur la mémoire de machine virtuelle Java (JVM) peut nuire à la réussite de l'opération d’allocation des partitions. Pour résoudre ce problème, résolvez la pression élevée sur la mémoire JVM. Après avoir réduit la pression sur la mémoire de la JVM, effectuez les actions suivantes pour rétablir l'état vert du cluster :

  • Exécutez la commande suivante pour augmenter la valeur de nouvelle tentative de partition par défaut :
    PUT /index-name/_settings
    {
      "index.allocation.max_retries": 10
    }
    
    Remarque : Remplacez index-name par votre nom d'index et 10 par la valeur de votre nouvelle tentative.
  • Modifiez la valeur de nouvelle tentative de partition sur 0 pour désactiver les partitions de réplica. Puis, modifiez-la à une valeur positive pour réactiver les partitions.

Défaillances de nœud

En cas de défaillance d'un nœud, les partitions qui leur ont été allouées deviennent non attribuées. En l'absence de partitions de réplica, même la défaillance d'un seul nœud peut entraîner un état d’intégrité rouge. Toutefois, lorsque vous configurez des index avec des partitions de réplica, la défaillance d'un nœud entraîne généralement un état jaune temporaire. Cet état jaune apparaît lorsque OpenSearch Service se rétablit automatiquement. L’état jaune prend fin lorsque le nœud défaillant retrouve son état d’intégrité ou lorsqu'OpenSearch Service réattribue des partitions à d'autres nœuds.

Pour vous protéger contre les défaillances matérielles, procédez comme suit :

Pour plus d’informations sur la procédure d’identification d’un nœud défaillant, consultez la section Nœuds de cluster défaillants.

État d’intégrité de cluster jaune récurrent

Vos clusters peut fréquemment peuvent se trouver à l’état d’intégrité jaune pour les raisons suivantes :

  • Défaillances ou redémarrages transitoires de nœuds qui se produisent lorsque des nœuds tombent temporairement en panne et que des partitions de réplica deviennent non attribuées.
    Remarque : Le cluster peut se rétablir de lui-même lorsque ce nœud est restauré ou lorsqu'OpenSearch Service rééquilibre les partitions.
  • Vous dépassez le quota d'échecs ou de nouvelles tentatives d'allocation des partitions en raison de contraintes liées aux ressources ou de problèmes de configuration.
  • La maintenance planifiée, les tâches de sauvegarde ou les pics de charge importants se produisent sur les clusters utilisant une grande quantité de ressources, de sorte que les nœuds fluctuent ou rejettent les allocations de partitions.
  • Une mise à niveau récurrente ou un index créé automatiquement a créé de nouveaux réplicas dépassant la capacité du cluster.

Pour prévenir et résoudre les problèmes liés à l'état d’intégrité jaune récurrent, procédez comme suit :

  • Pour les clusters à nœud unique, assurez-vous que tous les index contiennent 0 réplicas.
    Remarque : Pour les clusters à nœud unique, OpenSearch Service gère et configure automatiquement les index système tels que opendistro_security. Vous ne pouvez pas modifier les paramètres des index système.
  • Pour les clusters à nœuds multiples, conservez au moins un nœud de réplication. Pour une meilleure redondance, augmentez le nombre de nœuds et de réplicas.
  • Configurez un domaine multi-AZ pour une haute disponibilité et une tolérance aux pannes.
    Remarque : Si l'allocation des partitions échoue, vérifiez que le nombre de nœuds de votre cluster, les zones de disponibilité et la configuration de veille sont adaptés aux exigences de votre cluster.
  • Si la partition ne parvient pas à obtenir le verrouillage en mémoire, augmentez la valeur de index.allocation.max_retries.
  • Pour éviter l'épuisement des ressources, augmentez verticalement la taille de votre domaine en cas de charge élevée.
  • Pour surveiller de manière proactive l'évolution des besoins en ressources, créez une alarme CloudWatch pour les métriques ClusterStatus.yellow, ClusterStatus.red, JVMMemoryPressure, AutomatedSnapshotFailure et FreeStorageSpace.

Pour plus d'informations, consultez la section Bonnes pratiques opérationnelles pour OpenSearch Service.