Самый быстрый способ завершить экземпляр EC2
У меня есть требование, чтобы иметь возможность завершить экземпляры EC2 менее чем за минуту.
Текущий процесс занимает чуть менее 2 минут на экземпляр, потому что процесс выключения ОС занимает 60 секунд. Я хочу значительно ускорить завершение, если это возможно.
Кто-нибудь знает способ ускорить terminate()
функция в EC2? Есть ли способ "отключить" без процесса выключения, как это делают другие решения для виртуализации?
Фон:
В Бото я называю terminate()
функция с wait_until_terminated()
Функция перед обработкой удаления подсети или других последующих задач.
Но я запускаю boto из стороннего API, который отключается, если процессы (например, завершения) занимают больше минуты. Это означает, что каждый раз, когда я завершаю работу, API возвращает ошибки.
Я пытался работать с третьей стороной, чтобы увеличить время ожидания, но такие вещи, как прекращение, не соответствуют ожидаемым сценариям использования, и на данный момент решения от третьей стороны не существует.
Я попробовал stop(Force=True)
и это немного быстрее, но все же больше минуты.
Я попытался принудительно удалить том EBS, но сначала нужно отключить экземпляр, что приводит к превышению 1 минуты.
Я пытался SSH'ing для запуска различных shutdown
а также halt
аргументы команды, но я не могу найти команду ОС, которая выполняется быстрее, чем 60 секунд. Количество запущенных служб уже минимально, и я не могу ускорить завершение работы ОС.
Я надеюсь найти способ "отключить" через AWS. Или какой-то другой способ быстро прекратить. Похоже, что для завершения требуется отключение ОС, что немного странно для меня, когда я все равно хочу сжечь экземпляр.
1 ответ
Хотя я согласен, что это проблема XY, и вы должны решить эту проблему по-другому, есть гораздо более быстрые способы завершения работы ОС, чем при использовании shutdown
, Нет причин ждать, пока Linux вызовет сценарии инициализации и выдаст ошибку TERM
а также KILL
ко всем процессам.
Исторически я верю killall -9 init
или волшебный ключ SysRq был самым быстрым способом. Тем не мение, systemd
перечисляет много способов (man systemd
), например:
SIGRTMIN+13
Immediately halts the machine.
SIGRTMIN+14
Immediately powers off the machine.
Вероятно, вам придется протестировать несколько вариантов, прежде чем найти тот, на который AWS реагирует быстрее всего, но переход от 60 секунд к выключению ОС до 1-5 секунд должен быть достаточно простым.