Клиент Elasticsearch Python не удаляет мертвый узел ⇐ Python

Программы на Python
Anonymous
Клиент Elasticsearch Python не удаляет мертвый узел

Сообщение Anonymous »

У нас есть кластер с 6 экземплярами Elasticsearch (версия 8.13) в Google Cloud (самоуправляемый с помощью Docker Swarm). У нас есть несколько индексов по 2 реплики каждый. Нам пришлось обновить наш кластер (увеличить объем памяти), поэтому планировалось закрыть один экземпляр, увеличить объем памяти, запустить его резервную копию и повторить это для всех остальных экземпляров.
Конфигурация клиента следующая:

Код: Выделить всё

  hosts:
- scheme: http
host: "es8_node"
port: 9200
timeout: 10
sniff_on_start: True
sniff_on_node_failure: True
sniff_timeout: 15
Когда первый экземпляр был восстановлен, работоспособность кластера была быстро восстановлена ​​до 100 %, и все сегменты были назначены, но отклик на некоторые запросы по-прежнему был очень высоким.
Даже спустя час некоторые запросы по-прежнему имели очень большое время ответа, но мне удалось найти эту запись в журналах службы Python:

Код: Выделить всё

Node  has failed for 271 times in a row, putting on 30 second timeout.
Оказалось, что экземпляр, который я перезапустил, получил новый IP-адрес, и даже после стольких неудач он не был удален из списка узлов. Почему? Эти повторные попытки и воскрешения этого узла приводили к увеличению времени отклика.
Разве sniff_on_node_failure не должно решить эту проблему? В списке узлов я получаю от Elasticsearch (

Код: Выделить всё

_cat/nodes
), этот узел больше не отображается в списке. Почему его не удаляют?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -dead-node

Вернуться в «Python»