Есть ли способ остановить экземпляры TERMINATE с использованием автоматического масштабирования в AWS?

Я рассматриваю использование автомасштабирования AWS для масштабирования моей инфраструктуры вверх и вниз на основе различных показателей производительности (CPU и т.д.). Я понимаю, как это сделать; однако мне не нравятся, что экземпляры прекращаются, а не останавливаются, когда они уменьшаются. Это означает, что когда я масштабирую резервную копию, я должен начать с нуля с нового экземпляра и переустановить мое программное обеспечение и т.д. Я бы предпочел просто запускать/останавливать мои экземпляры по мере необходимости, а не создавать/завершать. Есть ли способ сделать это?

Ответы

Ответ 1

Нет, невозможно Остановить экземпляр в режиме автоматического масштабирования. Когда политика масштабирования запускает удаление экземпляра, Auto Scaling всегда будет завершать экземпляр.

Однако здесь есть некоторые идеи, чтобы справиться с концепцией Прекращения...

Вариант 1: Использовать предварительно настроенные AMI

Вы можете настроить экземпляр Amazon EC2 с нужным программным обеспечением, данными и настройками. Затем выберите экземпляр EC2 в консоли управления и выберите действие Создать изображение. Это создаст новый образ машины Amazon Machine (AMI). Затем вы можете настроить автоматическое масштабирование для использования этого AMI при запуске нового экземпляра. Каждый новый экземпляр будет содержать точно такое же содержимое диска.

Следует отметить, что EBS очень быстро запускается из AMI. Вместо копирования всего AMI на загрузочный диск он копирует его на "первом доступе". Это означает, что новый экземпляр может запускаться немедленно, а не ждать, пока весь диск будет скопирован.

Вариант 2: используйте запуск (данные пользователя) script

Каждый экземпляр Amazon EC2 имеет поле Пользовательские данные, доступное из экземпляра. A script может быть передано через поле User Data, которое затем выполняется при запуске экземпляра. script можно использовать для установки программного обеспечения, загрузки данных и настройки экземпляра.

script может сделать что-то очень простое, например загрузить конфигурацию script из репозитория исходного кода, а затем выполнить script. Это означает, что конфигурация машины может управляться централизованно и контролироваться версиями. Хотите обновить приложение? Просто запустите новый экземпляр с обновленным script и выбросьте старый экземпляр (что намного проще, чем "обновление" приложения).

Вариант 3. Добавление и удаление экземпляров в группу автоматического масштабирования

Вместо использования политик масштабирования для запуска/завершения экземпляров для группы автоматического масштабирования можно присоединить/отсоединить конкретные экземпляры. Таким образом, вы можете "имитировать" автоматическое масштабирование:

Для этого потребуется собственный код, но он очень прост (в основном два вызова API). Вы будете нести ответственность за отслеживание того, какой экземпляр будет прикреплен/отсоединен.

Ответ 3

На самом деле у вас есть три официальных варианта AWS для перезагрузки или даже остановки экземпляра, принадлежащего группе автоматического масштабирования:

  • Переведите экземпляр в состояние ожидания
  • Отключить экземпляр от группы
  • Приостановить процесс проверки работоспособности

Ref.: https://aws.amazon.com/premiumsupport/knowledge-center/reboot-autoscaling-group-instance/

Ответ 4

Добавьте этот экземпляр в Scale в защите и затем остановите экземпляр, тогда он не удалит ваш экземпляр, так как он имеет шкалу в защите.