IIS 不停機更版設置
Last updated
Last updated
程式需要發佈新版本時,往往需要公告停機時間,並且停機時會影響所有使用者, 為了讓更版程式時對使用者的影響降到最低,因此對不停機更版展開了研究。
必須有的最終結果: A. 可以先將程式更版到【備援站台】作測試 B. 測試完成後將所有使用者導入【備援站台】 C. 更版【正式站台】 D. 恢復啟用【正式站台】將所有使用者導回
由於我們的系統大多架設在 IIS 上,因此以下解法為 IIS 的專用, 概念上會將 IIS 站台區分為【正式】與【備援】,以下將開始介紹如何部屬:
打開 IIS 選擇到要設定為不停機更版的站台
針對這個站台點選右側清單的繫結
選取 443 Port 的項目選編輯,在主機名稱內輸入xxx.gss.com.tw
後按下確定(子網域請設定你申請到的)
修改完成後效果如瀏覽網站下文字
到此【正式】站台就設定完成!
接下來開始設定【備援】站台,請複製正式站台的架構**(不包含繫結設定)**,例如下圖 bb13-2 結構會跟 bb13 一樣。
在你的本機電腦(你桌上的那台),開啟 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 指定對應到【備援站台】,可自訂測試網址
大功告成,此時可以來做一些測試:
A. 假設【正式站台】網址為xxx.gss.com.tw
,則先到瀏覽器輸入網址上測試是否有結果 B. 將【正式站台】點選 IIS 畫面中最右側 -> 管理網站 -> 停止 C. 停止後再次重新整理瀏覽器並且網址為xxx.gss.com.tw
,預期網頁內容仍可正常載入,此時會載入【備援站台】 D. 另開一個網頁輸入為xxx-2.gss.com.tw
,預期能夠載入【備援站台】 E. 上述幾點為確保能做到最初要完成的效果
運作原理
A. 當我們在【正式站台】設定下圖時
B. 等同於做出類似於下方的判斷(下方非真實存在,只是以程式碼方式來解釋原理)
C. 當我們在【備援站台】設定下圖時
D. 等同於接續做出類似於下方的判斷(下方非真實存在,只是以程式碼方式來解釋原理)
url = * 代表不指定網址,但網址對應的 IP 需正確才能進入這台電腦的 IIS, 因此需要另外設定 Hosts 192.168.xxx.xxx xxx-2.gss.com.tw。
其他注意事項
程式開發上 Ajax 的 Url Host 應該讀取瀏覽器上的,而非寫死再程式裡面。
捨棄由環境設定檔決定 Url Host,而是由瀏覽器上的網址來決定是 xxx.gss.com.tw 或是 xxx-2.gss.com.tw,這樣在直接進入【備援站台】做測試時才能保證 Api 打出去是直接打【備援站台】。
【正式站台】與【備援站台】共用驗證
當設定好後可能會面臨兩個站台需要吃同一組登入驗證,此時可參考 Ryan 的這邊文章。