2010年10月6日

用 VirtualBox 建構開發、測試、服務環境

在建置新的伺服器時,我嘗試用虛擬機器提供對外服務(WEB、FTP、SSH、SVN、MySQL等),而實體機器僅供內部網路存取,這樣做可以建立第一道網路防線,當入侵事件發生時,影響範圍可以被隔離在虛擬機器中。

而虛擬機器的軟體,我選擇不必付費的VirtualBox,對流量不大的網路服務來說,用VirtualBox已經可以提供相當足夠的效能。

伺服器架構:
實體機器 Ubuntu 10.04 Desktop + VirtualBox 3.2.8
虛擬機器(1) Ubuntu 10.04 Server Master
虛擬機器(2) Ubuntu 10.04 Server Slave
虛擬機器(3) Fedora 13
虛擬機器(4) Windows XP

在這新的架構變得很容易維護,當實體機器掛點時,若開機硬碟沒問題,Ubuntu+VirtualBox只要換到新的硬體上就能立即運作;即使開機硬碟也掛點,重灌Ubuntu+VirtualBox並不會需要超過一小時。

對虛擬機器來說,備份的方式有很多選擇,可以從虛擬機器內部系統進行日常備份,也可以定期用實體機器備份整個虛擬機器,或是定時將Master虛擬機器sync到Slave虛擬機器,還可以建立Snapshot等。多了這些方便的措施,也不用擔心伺服器軟體進行全面升級後會發生問題,因為一切都可以先模擬測試一遍。

很多服務並不需要一台獨立的機器,例如SVN、GIT的repository server,只要建立一個記憶體256或512MB的虛擬機器,就足以應付日常需求,以目前新購PC記憶體一條都是2GB起跳的情況,分給四個虛擬機器用都綽綽有餘。

在開發階段使用的工作站,我也同樣以VirtualBox建置可以快速切換不同系統的開發環境,再多的選項組合,例如Windows+Linux+FreeBSD+SQL Sever+Oracle+PostgreSQL+Apache+Tomcat+...等,可以分別建立各專案專屬的虛擬機器,提供開啟後立即可用的開發環境。這樣一來,只需要一台工作站就可以同時在不同開發環境之間切換。

工作站架構:
實體機器 Ubuntu 10.10 Desktop + VirtualBox 3.2.8
虛擬機器 數十種不同組合的開發環境

雖然虛擬機器也要開關機,不過VirtualBox可以不用真的關機就把虛擬機器「關閉」,並且「儲存機器狀態」。其他的虛擬機器軟體也有同樣功能,但是目前用起來VirtualBox給我的感覺最快速,即使虛擬機器設定2G或4G記憶體大小,不管儲存、還原都在滿意的時間內就完成動作,而且還原後可以立即順暢地繼續作業,並不會感到回應遲鈍。在同時需要操作很多個開發環境時,可以把幾個暫時用不到的虛擬機器先關閉,等需要用的時候再還原,因此這功能是否能順暢就很重要。

VirtualBox只需要簡單的設定,將「啟用IO APIC」打勾,就可以直接開啟VMWare的虛擬機器,不僅相容且執行效能也感覺不到差異。將VMWare的虛擬機器轉換給VirtualBox使用很簡單,因此我使用VirtualBox同時管理這兩種異質的虛擬機器。

要建構可以流暢執行多虛擬機器的硬體並不難,因為三個影響效能顯著的零組件:多核心處理器、記憶體、硬碟都已經非常便宜。假設一部四核心、16GB記憶體、8TB硬碟的PC可以同時運作10個虛擬機器,只要購入四部PC就可以打造一個能玩得很開心的實驗環境。

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!