Я использую экземпляр Logstash, который подключен к кластеру ES за балансировщиком нагрузки.
Балансировщик нагрузки имеет время простоя 5 минут.
Logstash настраивается с помощью URL-адреса ES, соответствующего IP-адресу балансировщика нагрузки.
Обычно все работает нормально, но происходит то, что после периода бездействия запросов следующий запрос, обработанный LS, выходит с ошибкой со следующим:
[2018-10-30T08:15:00,757][WARN ][logstash.outputs.elasticsearch] Marking url as dead. Last error: [LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError] Elasticsearch Unreachable: [http://10.100.24.254:9200/][Manticore::SocketTimeout] Read timed out {:url=>http://10.100.24.254:9200/, :error_message=>"Elasticsearch Unreachable: [http://10.100.24.254:9200/][Manticore::SocketTimeout] Read timed out", :error_class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError"}
[2018-10-30T08:15:00,759][ERROR][logstash.outputs.elasticsearch] Attempted to send a bulk request to elasticsearch' but Elasticsearch appears to be unreachable or down! {:error_message=>"Elasticsearch Unreachable: [http://10.100.24.254:9200/][Manticore::SocketTimeout] Read timed out", :class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError", :will_retry_in_seconds=>2}
[2018-10-30T08:15:02,760][WARN ][logstash.outputs.elasticsearch] UNEXPECTED POOL ERROR {:e=>#<LogStash::Outputs::ElasticSearch::HttpClient::Pool::NoConnectionAvailableError: No Available connections>}
[2018-10-30T08:15:02,760][ERROR][logstash.outputs.elasticsearch] Attempted to send a bulk request to elasticsearch, but no there are no living connections in the connection pool. Perhaps Elasticsearch is unreachable or down? {:error_message=>"No Available connections", :class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::NoConnectionAvailableError", :will_retry_in_seconds=>4}
[2018-10-30T08:15:05,651][INFO ][logstash.outputs.elasticsearch] Running health check to see if an Elasticsearch connection is working {:healthcheck_url=>http://10.100.24.254:9200/, :path=>"/"}
LS в конечном итоге восстанавливается, но это занимает более 1 минуты, и это не приемлемо для нашего SLA.
Я подозреваю, что это происходит из-за того, что распределитель нагрузки закрывает соединения через 5 минут бездействия.
Я пробовал установить:
timeout => 3
что делает вещи лучше. Запрос повторяется через 3 секунды, но этого недостаточно.
Каков наилучший набор параметров конфигурации, который я могу использовать, чтобы убедиться, что соединения всегда исправны и работают до того, как запросы будут выполнены, и поэтому я вообще не испытываю задержек?