Solución:
Esto sucede cuando Elasticsearch cree que el disco se está quedando sin espacio, por lo que se coloca en modo de solo lectura.
Por defecto, la decisión de Elasticsearch se basa en la porcentaje de espacio libre en disco, por lo que en discos grandes esto puede suceder incluso si tiene muchos gigabytes de espacio libre.
La marca de agua de la etapa de inundación es del 95% de forma predeterminada, por lo que en una unidad de 1 TB necesita al menos 50 GB de espacio libre o Elasticsearch se pondrá en modo de solo lectura.
Para obtener documentos sobre la marca de agua de la etapa de inundación, consulte https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html.
La solución adecuada depende del contexto, por ejemplo, un entorno de producción frente a un entorno de desarrollo.
Solución 1: libere espacio en disco
Liberar suficiente espacio en disco para que más del 5% del disco esté libre resolverá este problema. Elasticsearch no saldrá automáticamente del modo de solo lectura una vez que haya suficiente disco libre, sin embargo, tendrá que hacer algo como esto para desbloquear los índices:
$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
Solución 2: cambie la configuración de la marca de agua de la etapa de inundación
Cambiar el "cluster.routing.allocation.disk.watermark.flood_stage"
ajuste a otra cosa. Puede establecerse en un porcentaje más bajo o en un valor absoluto. A continuación, se muestra un ejemplo de cómo cambiar la configuración de los documentos:
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"
}
}
Nuevamente, después de hacer esto, tendrá que usar el comando curl anterior para desbloquear los índices, pero después de eso, no deberían volver a entrar en modo de solo lectura.
De forma predeterminada, Elasticsearch instalado entra en modo de solo lectura cuando tiene menos del 5% de espacio libre en disco. Si ve errores similares a este:
Elasticsearch :: Transporte :: Transporte :: Errores :: Prohibido: [403]
{“error”: {“root_cause”:[{“type”:”cluster_block_exception”,”reason”:”blocked
by: [FORBIDDEN/12/index read-only / allow delete
(api)]; “}],” tipo “:” cluster_block_exception “,” motivo “:” bloqueado por:
[FORBIDDEN/12/index read-only / allow delete (api)]; “},” estado “: 403}
O en /usr/local/var/log/elasticsearch.log puede ver registros similares a:
marca de agua de disco de etapa de inundación [95%] excedido en
[nCxquc7PTxKvs6hLkfonvg][nCxquc7][/usr/local/var/lib/elasticsearch/nodes/0]gratis: 15.3gb[4.1%], todos los índices de este nodo se marcarán como de solo lectura
Luego, puede solucionarlo ejecutando los siguientes comandos:
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}'
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/