GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
字體大小: +
6 分鐘閱讀時間 (1157 個字)

IIS 不停機更版設置

unsplash-coding114

遭遇問題

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

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

解決方法

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

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

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

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

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

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

6. 在你的本機電腦(你桌上的那台),開啟 Hosts Windows 路徑為 C:\Windows\System32\drivers\etc
新增192.168.xxx.xxx xxx-2.gss.com.tw,這邊的網址可自由設定,就看在做【備援站台】測試時想用哪一組網址,但 IP 需為 IIS 的 IP。

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

8. 運作原理
    A. 當我們在【正式站台】設定下圖時

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

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

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

9. 其他注意事項
    程式開發上 Ajax 的 Url Host 應該讀取瀏覽器上的,而非寫死再程式裡面。

10. 【正式站台】與【備援站台】共用驗證
    當設定好後可能會面臨兩個站台需要吃同一組登入驗證,此時可參考 Ryan 的這邊文章。

...

[.Net Core Data Protection - 2] 多站台共用驗證 Cookie - 叡揚部落格

前言  .ace_editor { font-size: 16px !important; } 當你需要一個安全的機制來保護你的資料時,不妨可以使用 Net Core 的資料保護(Data Protection)。 他有以下特點: 1. 容易使用、擴展性高 2. 基於非對稱的加密機制 3. 正常情況下,不需要去設定與管理任何密鑰的儲存位置與生命週期 簡單來說你想加解密資料時,可以直接使用 Data Protection 的 API: - Protect - Unprotect 傻瓜式(
×
Stay Informed

When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.

AspNetBoilerplate(ABP) - Authorization 與 Menu 介紹
[C#] Lambda介紹

相關文章

 

評論 4

David Chou (周彥江) 於 2021年5月03日 16:56, 星期一

解決方法 6. 並沒有涵蓋到一般使用者,僅適用於部署人員的測試而已。

解決方法 6. 並沒有涵蓋到一般使用者,僅適用於部署人員的測試而已。
Tony Chang (張瑋) 於 2021年5月03日 17:31, 星期一

一般使用者瀏覽的內容來自【正式站台】或【備援站台】由部屬人員決定,
(關閉【正式站台】可引導所有使用者自動進入【備援站台】)
目標為引導使用者使用最新的網站內容,且使用不中斷,
因此不開放一般使用者操作步驟六。

一般使用者瀏覽的內容來自【正式站台】或【備援站台】由部屬人員決定, (關閉【正式站台】可引導所有使用者自動進入【備援站台】) 目標為引導使用者使用最新的網站內容,且使用不中斷, 因此不開放一般使用者操作步驟六。
Guest - David 於 2021年5月04日 08:00, 星期二

6. 的下一步 7. 就大功告成了,6. 又不開放一般使用者操作,那是不是省略了什麼?DNS 名稱解析要由誰改變呢?

6. 的下一步 7. 就大功告成了,6. 又不開放一般使用者操作,那是不是省略了什麼?DNS 名稱解析要由誰改變呢?
Tony Chang (張瑋) 於 2021年5月04日 10:21, 星期二

這個架構最主要就是讓一般使用者無感的情況下更版,
因此不會有任何操作需要使用者設定。

其實要做到不停機更版這點,是不需要設定 DNS 的,
只是就部屬人員的角度來說,會想要在部屬完成之後做一點測試,
因此才會多設定 DNS 這段,能夠直接進入【備援站台】做測試,
因此 DNS 這段是由部屬人員設定。

這個架構最主要就是讓一般使用者無感的情況下更版, 因此不會有任何操作需要使用者設定。 其實要做到不停機更版這點,是不需要設定 DNS 的, 只是就部屬人員的角度來說,會想要在部屬完成之後做一點測試, 因此才會多設定 DNS 這段,能夠直接進入【備援站台】做測試, 因此 DNS 這段是由部屬人員設定。
已經注冊了? 這裡登入
2025年12月13日, 星期六

Captcha 圖像