Добрый день. Есть кластер (весь кластер базируется на ОС CentOs 6.9) в составе которого:
Дата нода 1 (на хардварном сервере):
24 CPU X5660 @ 2.80GHz
RAM 96Gb
На ней стоит es со следующими параметрами:
elastic (node.master: true, node.data: true, node.ingest: true, node.ml: false) с heap size -Xms30g -Xmx30g
так же задействованы:
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
Дата нода 2 (на хардварном сервере):
24 CPU X5690 @ 3.47GHz
RAM 96Gb
На ней стоит es со следующими параметрами:
elastic (node.master: true, node.data: true, node.ingest: true, node.ml: false) с heap size -Xms30g -Xmx30g
так же задействованы:
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
Есть хранилка (на 7200 дисках) которая разделена на два луна по 18Тб и каждый лун по файбер ченел презентован каждой из дата нод.
Ingest нода (виртуальная машина):
4 CPU E5-2698 v4 @ 2.20GHz
RAM 10Gb
На ней стоит es со следующими параметрами:
elastic (node.master: false, node.data: false, node.ingest: true, node.ml: false) с heap size -Xms6g -Xmx6g
так же задействованы:
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
Мастер Нода (виртуальная машина):
4 CPU E5-2698 v4 @ 2.20GHz
RAM 20Gb
На ней стоит es со следующими параметрами:
elastic (node.master: true, node.data: false, node.ingest: false, node.ml: false, search.remote.connect: false) с heap size -Xms3g -Xmx3g
так же задействованы:
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
cluster.routing.allocation.same_shard.host: true
cluster.routing.allocation.disk.watermark.low: 97%
cluster.routing.allocation.disk.watermark.high: 98%
cluster.routing.allocation.disk.watermark.flood_stage: 99%
discovery.zen.minimum_master_nodes: 2
кроме elastic на этой машине крутиться так же:
redis (из него логсташ забирает данные)
kibana
nginx (с помощью него, трафик от кибаны балансируется между двумя дата нодами)
Logstash (-Xms4g -Xmx4g)
Логсташ слушает по udp порт и принимает нетфлоу трафик (рейт от 1900 до 2300) , а так же ходит в редис и забирает оттуда данные отличные от нетфлоу ( рейст поступающий в редис от 1000 до 3500 в сек) . ТАк же у логсташа есть множество jdbc инпутов ( общим рейтом около 50 евентов в секунду)
нетфлоу пишится в один индекс. Из редиса данные пишутся в несколько индексов, но самых весомых по рейту только два и иногда с высоким рейтом подаются данные на третий.
С учетом реплик, каждая дата нода имеет по 5Тб данных.
Своп на всех серверах кластера отключен.
Наблюдается проблема с высокой утилизацией железа дата нод в результате чего кластер становиться не стабильным: медленно работает кибана, повышается латенси индексации и поисковых запросов, на фоне повышения латенси снижается рейт индексации. В результате данные по udp теряются, а то что в редисе не успевает разбираться из-за чего объем редиса растет, а после достижения редисом максимального значения происходит так же потеря входящих данных. При этом загруженность ингест ноды в любое время стремиться к нулю. Проблем с мастер нодой тоже не наблюдается, хотя утилизация некоторая имеется, но по большей части за счет логсташа, кибаны и прочей обвязки и в меньшей степени расходует ресурсы мастер эластик. ТАк же заметил что последовательный рестарт эластиков на дата нодах заметно улучшает ситуацию и кластер начинает какое-то время работать лучше, к этой крайности приходиться прибегать когда кластер становиться практически полностью недоступным.
Последнюю волну проблем с кластером удалось задокументировать, ниже приложу описание со скриншотами:
метрики с одного из индексов (один из наиболее активно индексирующися индексов данные которого приходят через редис), при этом кластер в момент снятия скриншота желтый, по причине перезагрузки одной из дата ноды в связи с недоступность кластера
есть еще несколько вариантов этого скрина метрик :
метрики с одной из нод (при этом пробел на графиках это не ребут ноды,)
При этом index.refresh_interval на наиболее активных индексах стоит от 20 до 60 секунд.
При этом в момент большого лоад аверейдж на дата нодах вывод команды
iostat -m -t 1
колонка MB_wrtn/s
скачет в диапазоне от 30 то 300
вот еще метрики за тот же день с одной дата ноды (ту на которой рестартил эластик):
и со со второй там где рестарт не делал:
В 19 часов понизил index.refresh_interval до 2-5 секунд на разных наиболее активных индексов.
Все описанное выше происходило 10 числа. АДльше расскажу что происходило с кластером 11 числа:
дата нода 11 числа:
таже самая дата нода 10 числа:
вторая дата нода 11 числа:
таже самая нода 10 числа:
Кластер overview 11 числа:
Кластер overview 10 числа:
Версии эластика везде 6.1.2
Очень прошу помочь понять в чем моя проблема и посоветовать как можно ее решить.
Так же есть лишняя виртуальная машина
4 CPU E5-2698 v4 @ 2.20GHz
RAM 8Gb
Которая никак не задействована. При этом ресурсы между виртуалками можно перекидывать или например сделать одну из трех. Это я к тому, может виртуалки можно как-то более полезно задействовать чем сейчас.