Elasticsearch не принимает данные - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть кластер Elasticsearch setup на kubernetes.Недавно logstash не смог отправить какие-либо данные в кластер, потому что одному из узлов в кластере не хватило места на диске.

Это ошибка в logstash

 [Ruby-0-Thread-13@[main]>worker1: /usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:383] elasticsearch - retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"}) 

es-master пометил узел как доступный только для чтения, поскольку доступное дисковое пространство перешло порог

[WARN ][o.e.c.r.a.DiskThresholdMonitor] [es-master-65ccf55794-pm4xz] flood stage disk watermark [95%] exceeded on [SaRCGuyyTBOxTjNtvjui-g][es-data-1][/data/data/nodes/0] free: 9.1gb[2%], all indices on this node will be marked read-only

СледующийЯ освободил ресурсы на этом узле, и теперь у него достаточно свободного места (почти на 50%).Но logstash по-прежнему не может отправить данные в эластичный поиск и регистрирует ту же ошибку, что и выше.

У меня есть следующие вопросы

  1. Будет ли эластичный поиск восстанавливаться после этого автоматически?
  2. Если нет, перезапустить кластер?Достаточно ли того, чтобы я просто перезапустил узлы данных или мне нужно было перезапустить главный и самый незавершенный узлы?
  3. Есть ли способ пометить индексы для перезаписи снова без перезапуска?

1 Ответ

0 голосов
/ 26 сентября 2018

Вы должны вручную сбросить доступный только для чтения блок в ваших индексах.

Документацию можно найти здесь в блоке cluster.routing.allocation.disk.watermark.flood_stage

Блок индекса должен быть освобожден вручную, как только на диске будет достаточно места для операций индексирования.продолжить.

PUT /<your index name>/_settings
{
  "index.blocks.read_only_allow_delete": null
}
...