簡體   English   中英

在EC2 Auto Scaling組中安排任務

[英]Schedule a task in EC2 Auto Scaling Group

我在一個自動伸縮組上有多個EC2。 它們都運行相同的Java應用程序。 在應用程序中,我想每月觸發一次功能。 因此,我有一個使用Spring Schedule並每月運行的函數。 但是,該功能在自動縮放組中的每個單個EC2實例上運行,而只能運行一次。 我應該如何處理這個問題? 我正在考慮使用Amazon SQS之類的服務,但它們會有同樣的問題。

為了更具體地說明我所嘗試的內容,在一次嘗試中,該函數在所有ec2實例之間共享了一個數據庫,該記錄具有本月唯一的鍵。 如果該月的記錄已經存在,則放置請求將被忽略。 現在問題轉移到閱讀部分了嗎? 我有一個讀取數據庫並完成工作的功能。 但是該功能由每個ec2實例運行。

有趣! 您可以在其中一台服務器上進行配置以觸發每月活動,但是應將Auto Scaling組中的單個實例視為相同的脆弱系統,可以在一個月內更換。 因此,不能保證此特定服務器將在一個月之內出現。

我建議您退后一步,將月度活動看成是服務器外部觸發的事件。

我將假設服務器集群正在運行Web應用程序,並且在實例前面有一個負載均衡器,用於在實例之間分配流量。 如果是這樣,“某物”應該向負載均衡器發送一個請求,並且它將像任何普通請求一樣轉發給實例之一進行處理。

該特定請求將針對專門用於觸發每月處理的URL。

這留下了什么是發送此特定請求的“內容”的問題。 為此,有很多選擇。 一個簡單的例子是:

  • 配置Amazon CloudWatch Events以根據計划觸發Lambda功能
  • AWS Lambda函數會將HTTP請求發送到負載均衡器

暫無
暫無

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

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