Elasticsearchで書き込みができなくなった時の対応方法
目次
概要
Elasticsearchを使っていて、ある時次のようなメッセージが表示されて Elasticsearchへのデータの書き込みができなくなっていました。
blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];: [cluster_block_exception] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];
この問題を解決する方法を紹介します。
環境
- Elasticsearch 6.2
原因
私の環境では、この問題が発生したのは、ストレージの枯渇が原因のようでした。
デフォルトでは、ストレージの使用率が95%以上になった時、異常を起こさないために自動で書き込み禁止になるようです。
そのため、Elasticsearchを動かしている環境へのストレージ割り当てを増やして問題の解決をしようとしました。
しかし、そのままでは書き込みができなくなったままなので、書き込み禁止の解除をする必要があります。
解決方法
書き込みの解除はAPIを介して行います。
次のコマンドは、Elasticsearchが動いているサーバにログインして、curlを使い書き込み禁止を解除するコマンドです。
もし、別のサーバからアクセスする場合はURLを変える必要があります。
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
さいごに
解決にかなりの時間がかかりました。
誰かの参考になれば幸いです。