Comment résoudre l'exception « failed to obtain in-memory shard lock » dans Amazon OpenSearch Service ?

Lecture de 5 minute(s)
0

Mon cluster Amazon OpenSearch Service est passé au jaune avec le message d'erreur « failed to obtain in-memory shard lock » pour les index de nœuds chauds et tièdes.

Brève description

Si votre partition n'obtient pas de verrou en mémoire dans les seuils définis pour l'allocation de partitions dans OpenSearch Service, vous recevez l'erreur suivante :

"failed_allocation_attempts" : 5,

     "details" : "failed shard on node []: failed to create shard, failure IOException[failed to obtain in-memory shard lock]; nested: ShardLockObtainFailedException[[][5]: obtaining shard lock timed out after 5000ms]; ",

.

.

"explanation" : "shard has exceeded the maximum number of retries [5] on failed allocation attempts - manually call [/_cluster/reroute?retry_failed=true] to retry, [unassigned_info[[reason=ALLOCATION_FAILED], at[], failed_attempts[5], delayed=false, details[failed shard on node [lga-THKoSXykhSDbghN57A]: failed to create shard, failure IOException[failed to obtain in-memory shard lock]; nested: ShardLockObtainFailedException[[evelog-zdn-2020.04.28][5]: obtaining shard lock timed out after 5000ms]; ], allocation_status[no_attempt]]]"

In OpenSearch Service, your cluster can't exceed the time limit (5000ms) and the max number of retries (5) for shard allocation. Pour résoudre le message d'erreur, appliquez les méthode de dépannage suivantes pour les index des nœuds chauds.

Remarque : Il n'est pas recommandé de mettre à jour le nombre de réplicas pour les clusters OpenSearch Service avec des charges de travail lourdes.

Résolution

Résoudre les problèmes liés à l'état jaune du cluster

Un cluster Opensearch Service peut passer au jaune en raison d'une panne de nœud ou de réseau. Si les nœuds de votre cluster tombent en panne en raison d'un problème matériel interne, les nœuds existants sont remplacés par de nouveaux nœuds. Le remplacement est automatiquement détecté par OpenSearch Service. Toutefois, les partitions de réplica présentes dans les nœuds défectueux ne sont pas attribuées si les ressources précédemment utilisées ne sont pas libérées. Pendant ce temps, le nœud principal effectue cinq tentatives pour allouer les partitions de réplica. Si les cinq tentatives d'allocation des partitions de réplica échouent, l'état de votre cluster passe au rouge ou au jaune.

Remarque : Il est recommandé d'exécuter l'API d’explication de l'allocation de cluster (sur le site Web d'Elasticsearch) pour diagnostiquer les partitions non attribuées. Pour identifier les index à l'origine de l’état jaune de votre cluster, exécutez la requête suivante :

GET /_cat/indices?v&health=yellow

Puis utilisez la requête suivante pour identifier la cause racine des partitions non attribuées de votre cluster :

GET _cluster/allocation/explain

**Remarque :**L' API de reroutage du cluster n'est pas reconnue par OpenSearch Service. Pour plus d'informations sur les opérations d'API prises en charge, consultez la rubrique Différences d’API notables.

Augmenter le nombre maximum de tentatives

Pour que votre cluster OpenSearch Service repasse au vert, augmentez le nombre maximum de nouvelles tentatives pour chaque index jaune :

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

Lorsque vous exécutez cet appel d'API, le nœud principal réessaie d'attribuer les partitions pour un index spécifié sur votre cluster.

Remarque : Lorsque vous augmentez le nombre maximum de tentatives, les partitions ne sont pas toujours attribuées automatiquement. Il se peut que vous deviez attribuer les partitions manuellement.

Mettre à jour le nombre de réplicas

Important : N'utilisez pas cette méthode si la charge de votre cluster OpenSearch Service est élevée. Si vous supprimez toutes vos réplicas d'un index, celui-ci doit se baser uniquement sur les partitions principales. Si un nœud tombe en panne, votre cluster risque de passer à l’état de cluster rouge car les partitions principales ne sont pas attribuées.

Pour modifier le nombre de réplicas, effectuez les opérations suivantes :

1.    Supprimez toutes les réplicas afin que le nombre d'index concernés passe à 0 :

\PUT /<yellow-index-name>/_settings
{
     "index": {
          "number_of_replicas": 0
     }
}

2.    Remplacez le nombre de réplicas par le nombre souhaité :

PUT /<yellow-index-name>/_settings
{
     "index": {
          "number_of_replicas": 1
     }
}

Si vos index se trouvent dans des nœuds tièdes, suivez les étapes de dépannage suivantes.

Attendez que l'index tiède automatiquement attribué repasse au vert

L'état du cluster jaune pour les index situés dans les nœuds tièdes repasse automatiquement au vert lorsque le domaine dispose de suffisamment de ressources. Les données des index tièdes sont soutenues par Amazon Simple Storage Service (Amazon S3). Il n'y a donc aucun risque de perte de données lorsqu'un index tiède est en jaune ou en rouge.

Dans les scénarios suivants, contactez AWS Support pour rediriger manuellement les index tièdes non attribués :

  • L'état jaune du cluster ne repasse pas au vert après plusieurs heures.
  • L'erreur « shard fails to obtain an in-memory lock error for warm indices » s'affiche et l'état jaune du cluster ne repasse pas au vert après plusieurs heures.

Informations connexes

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

Pourquoi mon nœud Amazon OpenSearch Service tombe-t-il en panne ?

Comment résoudre les problèmes de pression élevée de la mémoire JVM sur mon cluster Amazon OpenSearch Service ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois