Назад | Перейти на главную страницу

Возможно ли автоматическое масштабирование для elasticsearch в AWS при пиковой нагрузке?

Я новичок в ElasticSearch, но уже использую ElasticSearch на своем рабочем сайте.

Я установил ElasticSearch в один экземпляр EC2. После использования ElasticSearch в течение нескольких месяцев, в настоящее время ЦП экземпляра уже достигает 100% в пиковое время, и запросы становятся такими медленными. Но в непиковое время загрузка ЦП составляет всего 10%.

Я знаю, что могу использовать автомасштабирование для создания нового экземпляра при условии, что экземпляр загружен с определенной высокой загрузкой ЦП. Я использовал это на своем веб-сервере с помощью автомасштабирования AWS и Elastic Load Balancer. Но могу ли я сделать это с помощью ElasticSearch? С чего мне начать?

Это было довольно хорошо ответил на StackOverflow

Полный ответ стоит прочитать, но вот ключевые моменты:

  1. Перемещение и перераспределение шардов требует значительных ресурсов. Таким образом, добавление или удаление сервера «на лету» может вызвать нагрузку на систему.
  2. У вас уже должно быть 2 узла для ElasticSearch. Так он работает лучше и сохраняет данные в большей безопасности.
  3. Вы не можете регулировать количество сегментов вверх и вниз при удалении или добавлении серверов. Это означает, что когда вы переходите с 2 серверов на 1, у вас внезапно будет много нераспределенных шардов.

Тем не менее, у меня на самом деле есть мои ES-серверы за Auto-Scale. Но у меня он настроен так, чтобы всегда поддерживать одинаковое количество серверов; он нужен только для того, чтобы всегда иметь под рукой два сервера, а не увеличивать или уменьшать масштаб.

Моя рекомендация? Настройте два сервера t2.small или t2.micro в качестве своих серверов, а не только один сервер. Пусть оба работают постоянно. Затем, когда вы знаете, что трафик будет высоким в течение определенного периода времени (скажем, недели или около того), остановите один сервер, увеличьте его тип экземпляра (вы можете сделать это, не изменяя никаких других аспектов сервера), а затем снова запустить сервер. Если вы сделаете это последовательно и убедитесь, что кластер вернется в зеленое состояние, вы можете увеличить размер второго сервера, и ваши пользователи не будут иметь прерывания обслуживания.

TL; DR: автоматическое масштабирование на основе нагрузки не рекомендую для серверов ElasticSearch. Перейдите к паре крошечных экземпляров (за балансировщиком нагрузки) и, если вы можете предвидеть нагрузку, увеличьте размер каждого сервера индивидуально по мере необходимости.