使用 Hyper-V 架設低成本與完全一致之線上專案環境

專案開發之初時,環境大多都是「先能跑以及執行」即是 OK 的環境。這樣的環境在開發與撰寫測試的過程中當然是非常的 OK,但身為 RD 與 IT 的您一定常常遇到:專案從測試環境轉到線上環境時就是這麼的不順利...

專案開發之初時,環境大多都是「先能跑以及執行」即是 OK 的環境。這樣的環境在開發與撰寫測試的過程中當然是非常的 OK,但身為 RD 與 IT 的您一定常常遇到:專案從測試環境轉到線上環境時就是這麼的不順利。以下列舉幾個常遇到的情況:

  • Web Server 的 DB 連線資訊必須要更改,不然到正式環境會一直 Timeout (因為找不到 DB)
  • DB 的連結伺服器資訊不一樣,正式環境無法用匯出之 T-SQL 快速更改
  • Web Service 呼叫位置不同,上線前需花費時間再度 Review 與修改

環境單純的話修改速度還不致於太慢,無果遇到不一樣的網段要跨,光是修改前的 IP 確認就夠要人命了,且一般的專案環境中 IP List 與 Server List 大多是不被考量在專案文件中的,等到要改的時候電話聲就此起彼落的響個不停。

「專案不都是這樣的嗎?上線前一定要修改一些的啦~」。一次性的專案這樣當然是說得過去,反正東西交出去就算了,也不會有所謂的後續發展。今天如果有簽維護合約,每一次修改都要改這些資訊時久了一定會有出錯的機會,因此 TigerLin 非常重視測試環境與正式環境的一致性,除了讓 RD 人員的程式修改後可直接上線外,IT 在 Trouble shooting 時也不用連到正式機上面東 Try 西 Try,降低風險外也會快速不少。

下圖是一個範例的正式機環境,圖中可以看到一台 WEB 要連接到三台 DB,您可能會:

  • 找四台實體主機,並且依照完整線上環境架設
  • 以 Hyper-V 或 VMWare 建立四台虛擬機器
  • 將 SQL Server 集中成一台 VM,並安裝多個 SQL 執行個體 (Instance)

正式環境架構圖

這樣看來第二或第三個選項似乎是比較好的,不過並不是最好的解法,雖然乍看之下只需要一台實體主機即可架設,但系統資源耗費的成本大了些。以 TigerLin 之前的案例來說,光 DB 就有 9 台之多,加上 WEB 後 8G 的記憶體就所剩無幾了 (這台平常還兼 TigerLin 的工作機啊)。而 TigerLin 的架構解法如下:
 

TigerLin 虛擬化架構圖 

就這樣?是的,就這樣!在這張架構圖主要的重點在於:

  • 設定多張網路卡
  • 兼顧內部管理性
  • 讓 SQL Server 就算在同一個 VM 與同一個 Instance 下也可正常使用連結伺服器


而 Switch 的部分透過 Hyver-V 的網路模擬則可達到,這一部分我們則不需要太過費心。假設我們已經建立好了兩台 Hyper-V 的虛擬機,並且已經完成了基本的組態設定,測試環境中預設是 Class C 的 Subnet,這裡只要進行幾個變更即可完成超低成本的架設 ^^

P.S 對 Hyper-V 的三種網路還有不了解的話,建議先了解後再來實作下列步驟會更知其所以然

  1. Web Server 設定為兩張網路卡
    WEB Server 的設定上較為單純,只要新增一張私人虛擬機器網路類型的網路卡即可

    LAN 1–外部網路,此介面可正常連接 Internet,並可由內部透過 Remote Desktop 進行管理設定
    LAN 2 - 私人虛擬機器網路,為模擬正式環境所新增之網路卡,IP 須手動於 VM 中設定為 172.16.178.5,VLAN 為 2

    WEB 網路設定

     
  2. DB Server 設定為四張網路卡
    DB Server 設定四張網卡最主要的原因是因為要設定連結伺服器,除此之外 SQL Server 的服務只能在網路卡的第一個 IP 有效,其餘的 IP 君連接不到。因此在這裡多設定三張網路卡給三個不同的 SQL Server 連結是最重要的關鍵

    LAN 1 - 外部網路,此介面可正常連接 Internet,並可由內部透過 Remote Desktop 進行管理設定
    LAN 2 - 私人虛擬機器網路,給第一個 DB Server 使用之介面,IP 須手動設定為 172.16.178.11,VLAN 為 2
    LAN 3 - 私人虛擬機器網路,給第二個 DB Server 使用之介面,IP 須手動設定為 172.16.178.12,VLAN 為 2
    LAN 4 - 私人虛擬機器網路,給第三個 DB Server 使用之介面,IP 須手動設定為 172.16.178.13,VLAN 為 2

    設定好之後重新開啟 VM,便可去看看 SQL Server 的 Log,就可以發現在我們設定的網路上已經全部呈現 Listening 的狀態了

    DB 網路設定

     
  3. 開發機或測試機將正式上線之 FQDN 加入本機 Hosts 對應
    最後要測試設置是否完全生效,看網站最準確的啦~只要在本機的 C:\Windows\system32\drivers\etc 下開啟 hosts 檔案,並將要測試的 URL FQDN 設定對應的 IP,馬上就可以得知了。要測試 Hosts 的正確性只要 Ping 一下設定的 FQDN 後看回應的 IP 為何便可驗證其正確性。

    Hosts 設定

    驗證 Hosts 設定
     

後記
TigerLin 在架設測試機的時候一定都會先問清楚網路環境、系統架構、平台...等等的相關資訊,這樣除了可幫助 RD 人員減少上線後的修改時間外,也方便身為 IT 的自己可快速的轉移佈署環境。事前的工作做得越充分,後面的衝擊與麻煩就會越少~不知道各位是否同意呢 :D~

如果覺得這篇文章對你有所幫助,可以透過 Paypal 支持作者唷~