2011-05-20 50 views
9

當前,當我們有更新要推出到我們的實時網站時,我們運行一個.bat文件,將整個文件夾結構從我們的開發環境複製到實況服務器。這將替換虛擬目錄指向的文件夾與新更新的新文件夾。這是在服務器和IIS正常運行的情況下完成的,顯然當用戶訪問該網站時。更新在IIS上運行的實時網站的最佳實踐

我們偶爾會發現由更新後立即變爲「鎖定」的文件或文件夾導致的錯誤,通常唯一的選擇是停止IIS或重新啓動服務器。我們猜測這個'鎖定'是由.bat文件在IIS正在使用時試圖覆蓋文件引起的。

有沒有其他人經歷過這個和/或你會推薦什麼樣的方式來最快地更新一個實時網站,並且停機時間最短(即幾乎沒有停機時間)。

謝謝。

+0

如果您不能停機,那麼最好的方法是運行另一個服務器副本,以便在想要更新主服務器時轉移用戶。然後在更新後將用戶轉移回主服務器。您可以使用位於另一臺服務器上的狀態服務器來確保在從一個服務器切換到另一個服務器時保持任何會話狀態。我們目前正在試驗微軟的Web Farm框架,它似乎很適合做這種事情。 – hermiod 2011-05-20 11:27:06

回答

5

轉發爲答案而不是評論,在那裏有一個愚蠢的時刻!

如果您不能停機,那麼最好的方法是運行服務器的另一個副本,以便在您想更新主服務器時轉移用戶。然後在更新後將用戶轉移回主服務器。

您可以使用位於另一臺服務器上的狀態服務器來確保在從一個服務器切換到另一個服務器時保持任何會話狀態。

我們目前正在試驗微軟的Web Farm框架,它似乎很好地做了這種事情。

我們的設置涉及前端服務器,主要和輔助Web服務器以及單獨的狀態服務器。 WFF保持Web應用程序的副本在兩臺機器上同步並且狀態服務器確保如果用戶在請求之間切換服務器(或其當前服務器脫機),則他們不應該注意到更改。

要升級主節點,請將其從負載均衡中移出,以便將其所有請求轉移到輔助服務器。進行升級,重新進行輪換,然後使用第二臺服務器重複此過程。

5

購買第二臺網絡服務器,購買負載平衡器。將1臺服務器脫機,升級,恢復聯機。將服務器2標記爲脫機,升級,恢復聯機。

+2

感謝您的回覆,我們已經有了您描述的設置。但是,服務器運行許多Web應用程序(10+),我們的開發人員每天都會進行很多更新,因此我們希望儘可能簡化和快速地完成更新過程。因此,直到現在,簡單的.bat文件方法運行良好。 – Martyn 2011-05-20 11:49:17

+3

每天有很多對代碼庫的更新?這不好。如果您只是簡單地在aspx頁面中進行html或標記更改,則應該能夠更新服務器而不必使其脫機。如果你正在更新代碼後面的代碼或控制器代碼,經常....... – CheckRaise 2011-05-20 15:44:03