Оптимальный способ установки стека ELK на трех серверах

Я хочу настроить стек ELK, и для этого у меня есть три сервера. Хотя я нашел множество документации и руководств о том, как на самом деле установить и настроить elasticsearch, logstash и kibana, я нашел меньше информации о том, как мне настроить программное обеспечение на своих серверах, чтобы максимизировать производительность. Например, было бы лучше настроить elasticsearch, logstash и kibana на всех трех экземплярах или, возможно, установить elasticsearch на двух экземплярах и logstash и kibana на третьем?

В связи с этим вопросом, если в моем кластере несколько серверов elasticsearch, мне понадобится балансировщик нагрузки для распределения запросов к ним, или я могу отправить данные на один сервер, и он будет распределять их соответствующим образом?


person jeromefroe    schedule 12.11.2015    source источник


Ответы (1)


Размер ваших машин также будет иметь значение. Три машины с 8 ГБ ОЗУ сильно отличаются от трех с 64 ГБ и более ...

Кибана требует очень мало ресурсов. Logstash более нагружает процессор. Elasticsearch требует больше оперативной памяти.

В кластере elasticsearch обычно требуется реплика каждого шарда для избыточности. Обычно это делается с двумя серверами. Если у вас есть третий сервер elasticsearch, вы получите увеличение ввода-вывода (запись двух копий данных на три сервера снижает нагрузку). Кроме того, четное количество серверов может запутаться в отношении того, какой из серверов является главным, поэтому три помогут предотвратить проблемы с разделением мозга.

Эти два или три узла будут узлами «данных», поэтому, если вы бросите на них запросы или запросы индексации, им может потребоваться переместить запрос на другой сервер (тот, на котором есть данные и т. Д.). Запрос также имеет фазу «сокращения», когда данные от каждого узла объединяются перед возвратом. В этом помогает меньший «клиентский» узел, на который отправляются запросы и запросы индекса. Конечно, вам понадобятся два, чтобы сделать их лишними.

Logstash лучше всего запускать в многопоточном режиме, поэтому неплохо иметь несколько процессоров, которые вы можете выделить. Также приятно иметь машину logstash с резервированием / балансировкой нагрузки. Кибана тоже могла работать на этих машинах.

Итак, мы быстро до 7 машин. Не то, что вы хотели услышать, правда?

Если вы жестко ограничены тремя машинами, вы захотите запустить elasticsearch на всех трех, как упоминалось выше. Остальное нужно включить.

Логсташ на двоих, кибана на одном? Тогда у вас есть единственная точка отказа для кибаны.

Как насчет logstash на всех трех и kibana на всех трех? Нагрузка будет распределена по всем, так что, надеюсь, это будет небольшое увеличение для каждого сервера. И, если машины достаточно мощные, все должно быть в порядке.

У меня есть машины в одном кластере, на которых работает logstash,

Общая рекомендация - выделить 1/2 системной ОЗУ (до ~ 31 ГБ) для elasticsearch, а остальное оставить операционной системе. Если вы собираетесь запускать logstash и kibana на одних и тех же машинах, вам нужно уменьшить это значение (возможно, до 40%?), Дать logstash немного (15%?), А остальное оставить ОС.

Ясно, что здесь важен размер ваших машин.

person Alain Collins    schedule 12.11.2015
comment
Спасибо, Ален! Это именно та обратная связь, которую я искал! Я ограничен тремя машинами (16 ГБ ОЗУ каждая) для запуска, но, к счастью, объем данных, индексируемых за день, также не должен быть слишком большим в начале. Кажется, установка elasticsearch, logstash и kibana на всех трех - это правильный путь, поэтому после настройки трех машин мне нужно будет добавить балансировщик нагрузки для распределения запросов? Кроме того, независимы ли экземпляры logstash, каждый из которых запускает свои собственные конвейеры, или они обмениваются данными для распределения задач в случае сбоя одного экземпляра? - person jeromefroe; 12.11.2015
comment
Да, вам нужно, чтобы балансировщик нагрузки распределял нагрузку и обрабатывал сбои. Конвейеры logstash различны (так что будьте осторожны с фильтрами, такими как метрики {} или прошедшее {}). - person Alain Collins; 12.11.2015
comment
Поскольку экземпляры logstash независимы, не будет ли это проблемой, если мы будем регулярно выполнять действия для извлечения и индексации данных? Например, если бы мы хотели использовать подключаемый модуль ввода jdbc для регулярного запроса и индексации данных из базы данных в elasticsearch, мы не хотели бы запускать это во всех экземплярах, потому что мы будем индексировать одни и те же данные несколько раз. С другой стороны, если мы запускаем действие только на одном экземпляре, в случае сбоя этого экземпляра другой экземпляр не сможет выполнить задание. - person jeromefroe; 12.11.2015
comment
Как вы описываете, при извлечении данных возникнут сложности. - person Alain Collins; 12.11.2015
comment
Я понимаю, это, наверное, само по себе стоит другого вопроса. Спасибо за помощь! Это было чрезвычайно полезно. - person jeromefroe; 13.11.2015