5

我在AWS自動比例組中運行服務器。正在運行的服務器位於負載平衡器後面。我正在使用ELB來管理自動擴展組健康檢查。當服務器啓動並加入自動擴展組時,它們將立即加入負載平衡器。AWS自動擴展ELB狀態檢查寬限期

需要等待多少時間(即healthcheck寬限期)才能讓他們加入負載均衡器?

它應該只在服務器處於運行狀態之後嗎?

它應該只在服務器通過系統和實例狀態檢查後?

回答

16

有兩種類型的健康檢查可用於自動縮放組:

  • EC2健康檢查:它使用EC2 status check確定實例是否是健康的。它僅在虛擬機管理程序級別運行,並且無法查看在實例上運行的應用程序的運行狀況。
  • Elastic Load Balancer(ELB)運行狀況檢查:這會導致Auto Scaling組將健康狀況檢查委派給Elastic Load Balancer,該Elastic Load Balancer能夠檢查特定的HTTP(S)URL。這意味着它可以檢查應用程序在實例上是否正確運行。

鑑於您的系統正在使用ELB運行狀況檢查,Auto Scaling將在確定每個EC2實例的運行狀況時相信ELB運行狀況檢查的結果。這可能會有點危險,因爲如果實例需要一段時間才能啓動,則運行狀況檢查可能會錯誤地將實例標記爲「不健康」。這反過來會導致Auto Scaling終止實例並啓動替換。

爲了避免這種情況,在Auto Scaling組配置中有一個健康檢查寬限期設置(以秒爲單位)。這表示Auto Scaling應該等到它開始使用ELB運行狀況檢查(多次設置檢查次數和需要多少次檢查才能將實例標記爲健康/不健康)設置多長時間。

因此,如果您的應用程序需要3分鐘才能啓動,請將健康檢查寬限期設置爲最少180秒(3分鐘)。文檔沒有說明時間是從一個實例標記爲「正在運行」開始還是在狀態檢查完成時開始,所以執行一些時間測試以避免任何「反彈」情況。

其實我建議將健康檢查寬限期設置爲顯着更高的值(例如,所需時間的兩倍)。這不會影響系統的運行,因爲一旦ELB運行狀況檢查得到滿足,健康實例就會開始投放流量,這比Auto Scaling寬限期更早。最糟糕的情況是,一個真正不健康的實例會在幾分鐘後終止,但這應該是一種罕見的現象。

+0

ELB健康檢查會與ALB一起工作嗎? – kintuparantu 2018-02-27 05:30:13

+0

@kintuparantu應用程序負載平衡器健康狀況檢查配置爲目標羣體請參閱:[針對您的目標羣體的健康檢查](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html)如果您有任何其他問題,請開始一個新的問題,而不是通過對舊問題發表評論。 – 2018-02-28 15:32:03

1

documentation(now)指出「寬限期在實例通過EC2系統狀態檢查和實例狀態檢查後開始。

因此,至少根據2015年年中的AWS文檔,答案是「在服務器通過系統並檢查實例狀態之後。「這是我們如何設置我們的環境,雖然我沒有做到精確的時間表,但看起來是正確的。