簡體   English   中英

從 NodeJS 關閉系統或停止 AWS EC2 實例

[英]Shutdown system or stop AWS EC2 instance from NodeJS

我有運行 Debian 的 AWS EC2 實例,而 systemd 運行 Node 作為服務。 (以下這些實例稱為“節點服務器”。)

節點服務器由另一個永久運行的實例(以下稱為“管理器實例”)啟動。

當 Node 服務器遇到一些預定義的不活動時間時,我希望它自動關閉。

我正在考慮以下選項:

  1. (在 Node 中檢測到一段時間不活動后)在 Node 中執行一個child_process來運行shutdown now命令。
  2. (在 Node 中檢測到一段時間不活動后)使用實例自己的資源 ID 調用 AWS 開發工具包的stopInstances
  3. 在每個節點服務器上公開一個名為last-request-time的 HTTP GET 端點,該端點由“管理器實例”定期輪詢,然后決定是否/何時調用 AWS SDK 的stopInstances

我不確定要采取哪種方法,並希望得到任何建議。 從運行在同一台機器上的 Node 顯式關閉一台機器感覺有點不合適。 但是選項 3 需要定期進行 HTTP 輪詢,更不用說依賴另一個實例進行自動關閉感覺風險更大。 (如果管理器宕機,所有實例都會繼續運行。)

或者,當特定服務以特定代碼退出時,是否有可能讓 systemd 關閉機器? 如果可能的話,這會是最好的解決方案,因為 Node 進程只需要在不活動的一段時間后使用特定的退出代碼中止自身。

您可以創建一個用作 api 的 lambda 函數並使用 SDK 的 stopInstances 功能。 這也將允許您使其具有“管理器實例”的全部功能,並在實例上節省更多,因為它只會在需要時運行。

或者你可以去掉中間人並將“節點服務器”遷移到 lambda。 拉姆達文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM