2014-11-06 89 views
1

說明Azure的雲服務:IIS之前準備

我得到的是一個網站的雲服務託管Web角色縮放在網站(Web角色)實例臨危請求。 我們使用自定義監控(工作者角色)處理可預測的負載峯值,該負載峯值將根據預測的負載配置文件週期性放大或縮小。 該部分正在工作。

問題

後,網站的新實例由監控安裝,我們只是有其要求達到的新實例之前,新的實例是完全加載用戶的情況。它導致網頁瀏覽器上無法訪問的網站空白頁面。鑑於我們典型的目標客戶,這是非常糟糕的。 這種情況發生在測試人員在進行規模化過程中(大約第一次)連接到網站的情況。

難道我的問題是,有沒有辦法確保Web角色已完全加載IIS7,啓動應用程序並完成所有網站熱身過程,然後再發送任何請求? 或者以更一般的方式,我們可以自己決定哪些實例可用於負載平衡器?我的意思是我假設有一個內置的雲服務負載平衡器,可以自動分配請求。

在此先感謝。

回答

3

請參閱http://blogs.msdn.com/b/kwill/archive/2012/09/19/role-instance-restarts-due-to-os-upgrades.aspx,特別是常見問題#5和相關代碼。

如果您的網站需要幾分鐘的時間預熱(標準 IIS/ASP.NET預編譯和模塊加載,或熱身 高速緩存或其他應用程序特定任務的熱身),那麼你的客戶可能會遇到 斷電或隨機超時。在角色實例重新啓動並且您的OnStart代碼完成後,您的角色實例將被放回 負載平衡器輪轉中,並且將開始接收傳入請求。如果 您的網站仍在熱身,那麼所有這些傳入請求 將排隊並超時。如果您的網絡角色只有2個實例,則IN_0仍處於熱身狀態,但IN_1正在重新啓動客戶操作系統 更新,而IN_0仍將佔用 傳入請求的100%。這可能會導致您的服務完全中斷,直到您的 網站在兩個實例上完成預熱爲止。建議使用 將您的實例保留在OnStart中,這會使其保持在忙碌狀態 ,在此狀態下它不會接收來自負載平衡器的傳入請求,直到 您的預熱完成。您可以使用下面的代碼來完成這個 :

public class WebRole : RoleEntryPoint 
{ 
    public override bool OnStart() 
    { 
     // For information on handling configuration changes 
     // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357. 
     IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName()); 
     string ip = null; 
     foreach (IPAddress ipaddress in ipEntry.AddressList) 
     { 
      if (ipaddress.AddressFamily.ToString() == "InterNetwork") 
      { 
       ip = ipaddress.ToString(); 
      } 
     } 

     string urlToPing = "http://" + ip; 
     HttpWebRequest req = HttpWebRequest.Create(urlToPing) as HttpWebRequest; 
     WebResponse resp = req.GetResponse(); 
     return base.OnStart(); 
    } 
} 
+0

感謝kwill細節上的配置,這正是我一直在尋找。 由於部署策略,我無法儘快進行測試,但當我獲得更多結果時,我會保持此帖爲最新版本。 – Quentin 2014-11-12 09:57:09

+0

我測試過它,它工作。我將這個方法的內容封裝在一個while([boolean])中,以確保它不會因爲TimeOutException而繼續。 – Quentin 2014-11-14 11:27:10

0

遲到了,但云服務背後坐鎮負載平衡器。負載平衡器具有一個探測功能,用於評估應用程序實例是否可以接收請求。您可以配置探測器嚮應用程序實例發出http請求,以檢查應用程序是啓動還是關閉以及其他設置。

- 關於負載均衡

http://azure.microsoft.com/blog/2014/04/08/microsoft-azure-load-balancing-services/

信息 - 在服務防守

https://msdn.microsoft.com/en-us/library/azure/jj151530.aspx

+0

感謝您的信息。 我們不會爲kwill解決方案,但我會看看下一次。 – Quentin 2015-09-10 12:43:32