IIS 不停機更版設置

遭遇問題

程式需要發佈新版本時,往往需要公告停機時間,並且停機時會影響所有使用者, 為了讓更版程式時對使用者的影響降到最低,因此對不停機更版展開了研究。

必須有的最終結果: A. 可以先將程式更版到【備援站台】作測試 B. 測試完成後將所有使用者導入【備援站台】 C. 更版【正式站台】 D. 恢復啟用【正式站台】將所有使用者導回

解決方法

由於我們的系統大多架設在 IIS 上,因此以下解法為 IIS 的專用, 概念上會將 IIS 站台區分為【正式】與【備援】,以下將開始介紹如何部屬:

  1. 打開 IIS 選擇到要設定為不停機更版的站台

  1. 針對這個站台點選右側清單的繫結

  1. 選取 443 Port 的項目選編輯,在主機名稱內輸入xxx.gss.com.tw後按下確定(子網域請設定你申請到的)

  1. 修改完成後效果如瀏覽網站下文字

到此【正式】站台就設定完成!

  1. 接下來開始設定【備援】站台,請複製正式站台的架構**(不包含繫結設定)**,例如下圖 bb13-2 結構會跟 bb13 一樣。

  1. 在你的本機電腦(你桌上的那台),開啟 Hosts Windows 路徑為 C:\Windows\System32\drivers\etc

新增192.168.xxx.xxx xxx-2.gss.com.tw,這邊的網址可自由設定,就看在做【備援站台】測試時想用哪一組網址,但 IP 需為 IIS 的 IP。

到此已完成所有設定,總結一下目前我們完成的東西: A. 設定好【正式站台】的繫結設定將 xxx.gss.com.tw 指定會對應【正式站台】 B. 設定好【備援站台】並將程式碼複製一份放置【備援站台】,但是這邊不用設定【繫結】 C. 回到我們自己的桌上電腦設定 Hosts 指定對應到【備援站台】,可自訂測試網址

  1. 大功告成,此時可以來做一些測試:

A. 假設【正式站台】網址為xxx.gss.com.tw,則先到瀏覽器輸入網址上測試是否有結果 B. 將【正式站台】點選 IIS 畫面中最右側 -> 管理網站 -> 停止 C. 停止後再次重新整理瀏覽器並且網址為xxx.gss.com.tw,預期網頁內容仍可正常載入,此時會載入【備援站台】 D. 另開一個網頁輸入為xxx-2.gss.com.tw,預期能夠載入【備援站台】 E. 上述幾點為確保能做到最初要完成的效果

  1. 運作原理

A. 當我們在【正式站台】設定下圖時

B. 等同於做出類似於下方的判斷(下方非真實存在,只是以程式碼方式來解釋原理)

C. 當我們在【備援站台】設定下圖時

D. 等同於接續做出類似於下方的判斷(下方非真實存在,只是以程式碼方式來解釋原理)

url = * 代表不指定網址,但網址對應的 IP 需正確才能進入這台電腦的 IIS, 因此需要另外設定 Hosts 192.168.xxx.xxx xxx-2.gss.com.tw。

  1. 其他注意事項

程式開發上 Ajax 的 Url Host 應該讀取瀏覽器上的,而非寫死再程式裡面。

捨棄由環境設定檔決定 Url Host,而是由瀏覽器上的網址來決定是 xxx.gss.com.tw 或是 xxx-2.gss.com.tw,這樣在直接進入【備援站台】做測試時才能保證 Api 打出去是直接打【備援站台】。

  1. 【正式站台】與【備援站台】共用驗證

當設定好後可能會面臨兩個站台需要吃同一組登入驗證,此時可參考 Ryan 的這邊文章。

參考網址

IIS 不停機更版設置

Last updated