選單
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 傻瓜式(
AspNetBoilerplate(ABP) - Authorization 與 Menu 介紹
[C#] Lambda介紹

相關文章

 

評論 4

David Chou (周彥江) 於 2021/05/03, 週一 16:56

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

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

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

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

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

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

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

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

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

Captcha 圖像