Выключение системы или остановка AWS EC2 экземпляра с NodeJS - PullRequest
0 голосов
/ 02 марта 2020

У меня AWS экземпляров EC2, на которых запущен Debian, а systemd работает с Node в качестве службы. (Здесь и далее эти экземпляры называются «серверы узлов».)

Серверы узлов запускаются другим экземпляром (далее именуемым «экземпляр менеджера»), который постоянно включен.

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

Я рассматриваю следующие варианты:

  1. (После определения периода бездействия в узле) выполните команду child_process в узле, который выполняет команду shutdown now.
  2. (После определения периода бездействия в узле) вызовите AWS SDK stopInstances с собственным идентификатором ресурса экземпляра.
  3. Предоставьте конечную точку HTTP GET с именем last-request-time на каждом сервере Node, который периодически опрашивается «экземпляром менеджера», который затем решает, следует ли / когда вызывать AWS SDK stopInstances .

Я не уверен, какой из этих подходов выбрать, и буду признателен за любые советы. Явное отключение компьютера от узла, работающего на той же машине, выглядит как-то неуместным. Но для варианта 3 требуется периодический HTTP-опрос c, не говоря уже о том, что более рискованно полагаться на другой экземпляр для автоматического выключения. (Если менеджер не работает, все экземпляры продолжают работать.)

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

1 Ответ

0 голосов
/ 02 марта 2020

Вы можете создать лямбда-функцию, которая действует как API и использует функцию stopInstances в SDK. Это также позволило бы вам обеспечить его полную функциональность «экземпляра менеджера» и сэкономить еще больше на экземплярах, поскольку он будет работать только при необходимости.

Или вы можете отключить посредника и перенести «Узловые серверы» в лямбду. ( лямбда-документация )

...