215 votes

Erreur Elasticsearch: cluster_block_exception [FORBIDDEN / 12 / index en lecture seule / autoriser la suppression (api)], dépassement du filigrane du disque de l'étape d'inondation

Lorsque j'essaie de publier des documents sur Elasticsearch comme d'habitude, j'obtiens cette erreur:

 cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)];
 

Je vois également ce message sur les journaux Elasticsearch:

 flood stage disk watermark [95%] exceeded ... all indices on this node will marked read-only
 

353voto

Sean Hammond Points 4716

Cela se produit lorsque Elasticsearch pense que le disque est en cours d'exécution faible sur l'espace, donc il se met automatiquement en mode lecture seule.

Par défaut Elasticsearch la décision est fondée sur le pourcentage d'espace disque libre, donc sur les gros disques cela peut se produire même si vous disposez de plusieurs giga-octets d'espace libre.

L'étape de l'inondation filigrane est de 95%, par défaut, de sorte que sur un disque de 1 to vous avez besoin d'au moins 50 go d'espace libre ou Elasticsearch se met en mode lecture seule.

Pour les docs sur l'étape de l'inondation filigrane voir https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html.

La solution dépend du contexte - par exemple un environnement de production par rapport à un environnement de développement.

Solution 1: libérer de l'espace disque

De libérer suffisamment d'espace disque, de sorte que plus de 5% du disque est libre permettra de résoudre ce problème. Elasticsearch ne prenez automatiquement à partir du mode lecture seule une fois que suffisamment de disque est libre, vous aurez à faire quelque chose comme cela pour déverrouiller les indices:

$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

Solution 2: modification de l'étape de l'inondation filigrane réglage

Modifier l' "cluster.routing.allocation.disk.watermark.flood_stage" réglage à autre chose. Il peut être fixée à un pourcentage inférieur ou à une valeur absolue. Voici un exemple de la façon de modifier le réglage de la documentation:

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.disk.watermark.low": "100gb",
    "cluster.routing.allocation.disk.watermark.high": "50gb",
    "cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
    "cluster.info.update.interval": "1m"
  }
}

Encore une fois, après avoir fait cela, vous devrez utiliser la commande curl ci-dessus pour déverrouiller les indices, mais après ils ne devraient pas aller en mode lecture seule de nouveau.

159voto

Payam Khaninejad Points 651

Par défaut, Elasticsearch installé passe en mode lecture seule lorsque vous avez moins de 5% d'espace disque libre. Si vous voyez des erreurs de ce type:

Elasticsearch: Transports:Transports:: Erreurs::Interdit: [403] {"error":{"root_cause":[{"type":"cluster_block_exception","raison":"bloqué par: [INTERDIT/12/index lecture seule / autoriser la suppression de la (api)];"}],"type":"cluster_block_exception","raison":"bloqué par: [INTERDITE/12/index lecture seule / permet de supprimer (api)];"},"statut":403}

Ou dans /usr/local/var/log/elasticsearch.journal , vous pouvez voir les journaux de ce type:

étape de l'inondation de disque filigrane [ic 95%] dépassé sur [nCxquc7PTxKvs6hLkfonvg][nCxquc7][/usr/local/var/lib/elasticsearch/nœuds/0] gratuit: 15.3 go[4.1%], tous les indices sur ce nœud sera marqué en lecture seule

Ensuite, vous pouvez résoudre le problème en exécutant les commandes suivantes:

curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_cluster/settings -d '{ "transient": { "cluster.routing.allocation.disk.threshold_enabled": false } }'
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

41voto

zaibatsu Points 21
 curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
 

DE

https://techoverflow.net/2019/04/17/how-to-fix-elasticsearch-forbidden-12-index-read-only-allow-delete-api/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X