2017-10-19 47 views
1

因此,有一天我們遇到了應用程序負載平衡器後面的一個實例失敗實例狀態檢查和系統檢查的問題。我們的ELB花費了大約10秒(我們能夠獲得的最低限度)來檢測這種情況並將實例標記爲「不健康」,但是由於ELB保持將流量路由到不健康的實例,因此我們在10秒內丟失了一些流量。是否有解決方案,我們可以避免任何停機時間或者我是不是太不切實際?定製/構建AWS ELB以實現零停機時間

+1

10秒是AWS允許我們在健康檢查中設置的最小時間。無法進一步下降根據AWS支持。 – vishwa0077

回答

0

我確定這不是您想要聽到的答案,但爲了最大限度地減少系統上的流量損失(如果10秒是不可容忍的),您需要實施您自己的健康檢查/負載平衡解決方案。我的組織有丟包的系統也是不可接受的,這就是我們需要做的。

該解決方案是雙重的。

  1. 您需要實現自己的負載平衡基礎結構。我們選擇使用Route53加權記錄集(TTL爲1s,我們將回到此處),每臺服務器的權重相同
  2. 爲每個負載平衡的EC2實例啓動一個ECS容器實例,其唯一目的是進行健康檢查。它運行DNS和IP運行狀況檢查(python中的請求庫),並會在發現問題時實時添加/刪除Route53加權記錄。

然而,在我們的測試中,我們發現儘管Route53的上游DNS服務器在刪除DNS記錄時承諾1秒TTL,但他們將該記錄(FQDN + IP組合)「黑名單」再次長達10分鐘(我們得到的解析時間從1米到10米不等)。因此,您可以快速進行故障轉移,但是您必須考慮到要重新添加記錄需要10分鐘才能兌現。