最近將 IIS7 的 URL Rewrite Module 1.1 升級到 URL Rewrite Module 2.0,而在啟用「共用設定」的情況下在更新 IIS 模組時必須特別小心,因為很有可能一不小心就讓所有 Web farm 網站伺服器全部中斷服務,越方便的設定可以替你帶來方便性,卻也可能替你帶來災難。
我們的 Windows IT 基礎架構有實做 NLB 負載平衡機制,也因為導入了 NLB 負載平衡機制可以讓我們的網站能夠在完全不中斷網站服務的情況下順利將主機升級,以下是更新伺服器的標準作業流程(SOP)。
1. 開啟 [網路負載平衡管理員],並將要先升級的網站伺服器 (Web1) 從 NLB 叢集中停止服務 [ 備註:使用清空停止才不會讓使用者看到有網頁無法連線的畫面 ]
以下圖為例,這時所有還在 WEB1 的用戶就會全部移至 WEB2 主機,改由 WEB2 主機提供服務。
2. 將 Web farm 所有網站伺服器取消共用設定,取消時需將共用設定複製回本機!
註1: 將共用設定複製回本機的目的是為了讓網站能夠繼續提供服務!
註2: 將所有主機都取消共用設定是為了避免後續步驟因為共用設定檔被更新可能會導致網站掛掉。
因為通常在新增IIS模組後會修改 applicationHost.config 設定檔,不相容的設定會導致 IIS 無法啟用。
3. 使用伺服器管理員在目前已停用的 WEB1 網站伺服器安裝 URL Rewrite Module 2.0 或其他模組 (角色服務)
4. 這時 WEB1 網站伺服器已經成功升級,在 [網路負載平衡管理員] 啟用 WEB1 之前,還必須先測試一下網站是否能正常提供服務,否則如果升級後發生問題就貿然提供外部連線可能會對網站使用者造成不小的影響。
5. 設定 [網路負載平衡管理員] 讓 WEB1 開始提供服務
6. 設定 [網路負載平衡管理員] 讓 WEB2 停止服務 ( 建議使用清空停止功能來停止服務 )
7. 在 WEB2 網站伺服器使用伺服器管理員在目前已停用的 WEB2 網站伺服器安裝 URL Rewrite Module 2.0 或其他模組 (角色服務)
8. 測試 WEB2 網站是否正常運作
9. 在安裝完成的 WEB1 或 WEB2 網站伺服器 (二選一即可) 匯出新的設定到共用設定儲存目錄 ( 將新的設定重新部署 )
由於 IIS 本身並沒有「寫入」共用設定儲存目錄的權限,所以必須設定認證指派有寫入權限的帳戶
10. 接著將 WEB2 網站伺服器重新啟用共用設定
11. 接著將 WEB1 網站伺服器重新啟用共用設定
12. 設定 [網路負載平衡管理員] 讓 WEB2 開始提供服務
大功告成!