Автоматический запуск / остановка AWS экземпляра в случае отсутствия реакции системы - PullRequest
1 голос
/ 05 мая 2020

Иногда я сталкиваюсь с тем, что экземпляр AWS использует 100% ресурсов ЦП - из-за конфликта между аппаратной и программной виртуализацией. Точнее, это процесс под названием «Системные прерывания», который потребляет все ресурсы ЦП. Это просто решается путем остановки экземпляра, подождите некоторое время и затем снова запустите экземпляр (при этом он запустится на другом оборудовании - просто перезапуск не сработает).

Теперь мой вопрос: что проще способ остановить экземпляр AWS и через 1 минуту снова запустить экземпляр автоматически, если система не отвечает? Можно ли это каким-то образом сделать в самой экосистеме AWS?

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

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

Создайте сигнализацию CloudWatch, когда экземпляр достигает определенного процентного значения в ЦП.

Добавьте триггер для AlertState, чтобы запускать лямбда-выражение. Lambda вызовет AWS CLI для запуска метода StopInstance, затем засыпает на 1 минуту, затем запускает метод StartInstance.

Пример функции: https://www.howtoforge.com/aws-lambda-function-to-start-and-stop-ec2-instance/

0 голосов
/ 05 мая 2020

Вы можете создать Amazon CloudWatch Alarm в консоли управления Amazon EC2:

  • Выберите экземпляр EC2
  • Go в Мониторинг вкладка
  • Щелкните Создать тревогу
  • Настроить Take the action: Reboot this instance

Это приведет к попытке постепенного перезапуска операционной системы, но при необходимости принудительно перезапустится.

Вы можете настроить тревогу на срабатывание после заданного периода 100% загрузки ЦП. Только будьте осторожны, чтобы он не сработал, когда экземпляр просто выполняет «настоящую» работу. Возможно, вам придется поэкспериментировать с настройками будильника, чтобы все было правильно.

...