Как использовать точечный экземпляр с амазонкой?

У меня есть одна инфраструктура, которая использует Amazon Beanstalk для развертывания моего приложения. Мне нужно масштабировать мое приложение, добавляя некоторые точечные экземпляры, которые EB не поддерживает.

Поэтому я создаю второе автомасштабирование из конфигурации запуска с точечными экземплярами. Для автоматического масштабирования используется тот же балансировщик нагрузки, который создан beanstalk.

Чтобы скопировать экземпляры с последней версией моего приложения, я копирую пользовательские данные из исходной конфигурации запуска (созданной с помощью beanstalk) в конфигурацию запуска с точечными экземплярами (созданными мной).

Это прекрасно работает, но:

  1. как обновить точечные экземпляры, которые возникли после второго автомасштабирования, когда управляемые им экземпляры beanstalk обновляются новой версией приложения?

  2. Есть ли другой способ, настолько простой и элегантный, чтобы использовать точечные экземпляры и пользоваться преимуществами бобового стебля?

2 ответа

Я спрашивал об этом сам и нашел встроенное решение в эластичном бобовом стебле. Это было описано здесь следующим образом:

  • Добавьте файл в папку.ebextensions, для нашей настройки мы назвали этот файл spot_instance.config (расширение.config важно), вставьте содержимое, доступное ниже, в файл https://gist.github.com/rahulmamgain/93f2ad23c9934a5da5bc878f49c91d64
  • Значение для EC2_SPOT_PRICE может быть установлено через конфигурацию среды эластичного бобового стебля. Чтобы отключить использование точечных экземпляров, просто удалите переменную из настроек среды.
  • Если среда уже существует и указанные выше настройки являются обновлениями, более старая группа автоматического масштабирования будет уничтожена и будет создана новая.
  • Затем среда отправляет запрос на точечные экземпляры, которые можно увидеть на вкладке "Точечные экземпляры" на панели мониторинга EC2.
  • Как только запрос будет выполнен, экземпляр будет добавлен в новый кластер и группу автоматического масштабирования.
  • Вы можете использовать инструмент Spot Advisor, чтобы определить лучшую цену для используемых экземпляров.
  • Цена в 30% от первоначальной цены выглядит как достойный уровень.

Лично я бы просто использовал цену по требованию для данного типа экземпляра, учитывая, что эта цена является верхней границей того, что вы готовы заплатить. Это снижает вероятность того, что вас обесценит, и, следовательно, прекращение ваших экземпляров.

Это может быть не лучшим подходом для производственных систем, поскольку невозможно разделить количество экземпляров по требованию и дополнительное количество экземпляров спот, и может быть небольшая вероятность того, что экземпляры спот не будут доступны, как кто-либо другой. покупка всего рынка с высокими ставками.

Для производственных случаев я бы посмотрел на https://github.com/cristim/autospotting, который активно управляет всеми вашими автоматически масштабируемыми группами и пытается соблюсти баланс между самыми низкими ценами и настраиваемым числом или процентом экземпляров по запросу.,

С 25 ноября 2019 г. AWS изначально поддерживает использование спотовых инстансов с Beanstalk.

Спотовые инстансы можно включить в консоли, перейдя в нужную среду Elastic Beanstalk, затем выбрав Конфигурация > Емкость и изменив состав группы на "Спотовый инстанс включен".

Там вы также можете установить такие параметры, как процентное соотношение по запросу и спотовому серверу и типы используемых экземпляров.

Дополнительную информацию можно найти на странице поддержки Beanstalk Auto Scaling Group.

Здесь, в Spotinst, мы имели дело именно с этой дилеммой для наших клиентов.

Поскольку Elastic Beanstalk создает целый стек сервисов (балансировщиков нагрузки, ASG, точки доступа Route 53 и т. Д.), Которые связаны друг с другом, управлять спотами внутри него непросто.

После долгих исследований мы выяснили, что удаление ASG всегда будет подвержено ошибкам, так как сохранение неповрежденной конфигурации становится сложным. Вместо этого мы просто реплицируем ASG и позволяем нашей Elastigroup и ASG работать бок о бок со всеми политиками масштабирования, которые влияют только на Elastigroup и обновления конфигурации ASG, которые также подаются туда.

С экземплярами, работающими внутри Elastigroup, вы получаете управляемые экземпляры Spot с полным SLA.

Вот некоторые из преимуществ запуска ваших экземпляров Spot в Elastigroup:

1) Наш алгоритм делает выбор в реальном времени для лучших спотовых рынков с точки зрения цены и доступности, когда появляются новые экземпляры.

2) Когда происходит прерывание, мы прогнозируем его примерно за 15 минут и принимаем все необходимые меры для обеспечения (и обеспечения) возможностей вашей группы.

3) В крайнем случае, когда ни на одном из рынков нет доступности Spot, мы просто возвращаемся к экземпляру по запросу.

Поскольку AWS четко заявляет, что Beanstalk не поддерживает спотовые инстансы прямо из коробки, вам нужно немного повозиться с этим. Мой клиент хотел смешанную среду (по требованию + спот) и полную спот. Для своего клиента я создал следующее (у меня был доступ только к графическому интерфейсу):

  1. Для смешанного env:

    • запустить env с помощью обычного экземпляра;
    • скопируйте соответствующую конфигурацию запуска и выберите в процессе спотовые экземпляры;
    • отредактируйте Auto Scaling Group и выберите lc, который вы только что редактировали + не забудьте изменить Termination Policy на NewestInstance. Такая настройка позволит вам иметь базовый парк по требованию (без терминации) + несколько дополнительных точек, если это необходимо, например, трафик с более высоким, чем обычно, трафиком. Помните, что если вы закроете среду и воссоздадите ее, все ваши правки будут удалены.
  2. Для полного пятна env:

    • аналогичные шаги, как и раньше, с одним отличием - завершите работающий экземпляр и дождитесь, пока ASG запустит новый. Если вы хотите, чтобы он обошелся без простоев, просто дайте дополнительный экземпляр для Желаемого номера, дождитесь его запуска и затем завершите работу по требованию.
Другие вопросы по тегам