2014-03-13 79 views
1

我們管理的是兩個AWS託管的機器一個.net MVC應用程序。 AWS負載平衡器管理每臺機器的流量。 Load Balancer配置爲每30秒對每臺機器執行一次運行狀況檢查。爲此,它會用TCP請求端口80確定AWS負載平衡器TCP健康檢查請求

應用期望每個請求的背後是人,所以健康檢查引起的副作用,例如不必要的寫入數據庫和臃腫的日誌文件。健康檢查請求的跡象表明HttpContext.Request.ServerVariables屬性中只有一個鍵值對:「主機:mysite.com」

應用程序應該如何最好地識別此健康檢查請求,以便它可以以不會產生副作用的方式迴應?我想ActionFilter但是否有比隔離檢查缺乏服務器變量的其他請求更準確的方法是什麼?

回答

3

在我的應用程序,我只是切換到AWS HTTP檢查並設定了一個指數作用的「心跳」控制器;沒有任何邏輯,但當AWS命中/ Heartbeat時它返回了200。您的IIS日誌默認會捕獲此請求;您的問題中沒有概述您的應用程序基礎架構,但在我的案例中,行動中缺乏任何邏輯就足夠了。

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/gs-ec2classic.html#ConfigureHealthCheck

然而,實現自己的IHttpModule這裏是另一種選擇。你在這裏處於原始的HttpApplication級別,所以你現在不需要進入MVC管道。我已經使用它(除其他外),通過查找「X-Forwarded-Proto」頭來強制在AWS託管的應用程序中進行https重定向。

+0

沒有要改變的健康檢查配置,這樣就爲HTTP模塊選項。謝謝! – Nick