為甚麼我們應該使用 VPS?
阿恆
從前架設網站幾乎一定是光顧網站寄存服務,透過虛擬網站技術,一台實體機器裏「居住」了數十個甚至數百個網站,雖然每個網站所佔用的資源例如硬碟容量、網絡流量等等都受到限制,但一個惡意製作的網站程式仍然可以瞬間吞噬系統所有記憶體、CPU、Swap 空間等,甚至入侵其他網站盜取資料。隨著硬件的價格越來越便宜,虛擬作業系統越來越成熟,大量平價的 VPS 湧現,IT 人應該認真考慮從寄存服務遷移到 VPS。
甚麼是 VPS?
VPS 直譯就是「虛擬私人伺服器」,它是把一台實體伺服器藉軟件技術分割成多個虛擬伺服器,每一台虛擬伺服器有專用的資源,包括一定數量的 CPU 週期、硬碟空間、記憶體、網絡流量、周邊硬件等等,從功能上看,它與實體伺服器幾乎沒有分別,用戶可以以超級用戶 (root) 的身份登入伺服器,隨他的喜好安裝軟件、配置系統。VPS 的價錢一般比實體伺服器便宜很多,但由於每一台 VPS 需要與同一台實體伺服器中的其他 VPS 競爭資源,效能上肯定比不上實體伺服器,例如當很多 VPS 同時需要讀寫硬碟的時候,檔案存取的速度便會下降。
VPS 一個吸引人的地方是它的彈性,用戶可以用超級用戶的身份登入系統,所以幾乎可以做任何喜歡的事,包括隨意安裝軟件,修改系統,更改設定,即使不幸搞垮了系統,也可以重頭來過,重新安裝操作系統。
VPS 的安全性是它的另一個優點,每一台 VPS 基本上是完全獨立的系統,可以運行不同的操作系統,隨時從新啓動或重灌系統而對其他 VPS 毫無影響,所以不用擔心別人程式裏的臭蟲,或者惡意程式對自己的影響。
VPS 價格高嗎?
以前 VPS 尚未普遍,價格偏高,隨著硬件的價格大幅下降(摩爾定律),VPS 的技術也越來越成熟,不少穩定可靠,而且開源和免費的 VPS 方案可供選擇,例如 OpenVZ 和 KVM 等等,價錢已經與寄存服務不相伯仲,若果你有超過三、四個寄存網站,總價格幾乎肯定超過一個 VPS,但是一台 VPS 卻可以容納無限個網站,無限個帳號,無限個數據庫,甚至有獨立的 IP 地址,容許你自行安裝網絡服務,例如域名伺服器 (DNS),當然,條件是不超越硬件資源的限制。由此可見,使用 VPS 更合符經濟原則。
常見的虛擬化技術
選購 VPS 的時候,一個很重要但很多人忽略的因素,是服務供應商使用甚麼虛擬化技術,最常見的技術包括 OpenVZ、KVM、Xen 和 Virtuozzo。
OpenVZ 藉修改 Linux 內核實現虛擬化,每一台虛擬伺服器的操作系統必定與實體主機的相同,所以它只能提供 Linux 虛擬伺服器,使用 OpenVZ 的服務供應商一般不會有很多操作系統的選擇給顧客。這樣的設計也有好處,就是虛擬化所佔用的額外資源比較少,每一台虛擬主機的效能也較高。OpenVZ 另一個特點是記憶體的分配很具彈性,一台虛擬伺服器的記憶體可以與其他虛擬伺服器共享,或者作為其他虛擬伺服器的緩存。很多服務供應商利用 OpenVZ 這種彈性「超賣」實體主機的資源,這是 OpenVZ 的 VPS 通常比較便宜的原因,但是若果某一個虛擬伺服器突然吞噬大量記憶體,其他虛擬伺服器會即時受到影響。
與 OpenVZ 不同,KVM 的虛擬技術容許每一台虛擬伺服器運行不通的操作系統,KVM 給它們虛擬的硬件設備包括顯示卡、音效卡、網絡卡,甚至虛擬的 BIOS。虛擬伺服器之間完全獨立,不像 OpenVZ 那樣一台不爭氣的伺服器會拖垮所有其他伺服器。
Xen 所用技術與 KVM 類似,它有一項特點,就是可以把整台虛擬伺服器從一台實體主機搬到另一台實體主機,期間虛擬伺服器無須停止運作(嚴格來說中途會有大約半秒停頓,但亦足以令人嘆服,不是嗎?),對於需要從一台低階伺服器「搬家」到一台高階伺服器的用戶,這是在非常方便,所以很多雲端伺服器 (cloud server) 服務供應商都使用 Xen,例如 Amazon EC2 和 Rackspace Cloud。
Virtuozzo 跟上述三種方案最大的不同,是它屬於操作系統層次的虛擬技術(而非內核或硬件層次),所以每一台虛擬伺服器都運行相同的操作系統,相同的內核,相同的硬件,它最常用於網站寄存服務供應商。這種層次的虛擬技術容許整台伺服器「搬家」而無需中斷服務,虛擬技術所佔用的額外資源也十分少。Virtuozzo 另一與別不同的是它並非開源免費軟件,而是 Parallel Inc. 的付費產品(也就是編寫 Plesk Control Panel 那間公司)。
自主管理的和專業管理的 VPS
VPS 服務分為「自主管理」(unmanaged) 和「專業管理」(managed) 兩種,價錢差別甚大,有必要搞清楚兩者的分別。
自主管理的意思就是服務供應商給你一台虛擬伺服器,一個操控界面,其他的事便不管了。你要自行透過控制界面安裝操作系統,設定初始的超級用戶密碼,然後再自行安裝各式各樣的應用程式,執行各種配置和優化的工作。過程中若遇到甚麼問題,除非是關於虛擬伺服器的,否則服務供應商沒有義務提供協助。部份供應商會提供一個預先安裝好的操作系統,內有一般常見的應用程式,並提供一個系統管理控制台,例如 CPanel 或 Plesk Control Panel 等等,讓初學者比較容易上手,但此後增減軟件、系統升級、維護、監控、備份等等工作,都要自行負責。
專業管理剛好相反,整個系統由專業人員安裝和設定好,並定期進行升級和維護,恆常的監控和管理也有專人負責,你遇到甚麼問題也可以向他們請教。如此五星級的服務當然有代價,所以價錢比自主管理的 VPS 貴很多。
該怎樣選擇呢?我估計閱讀這個網站的人跟我一樣都是 IT 人,而且是優秀的 IT 人,優秀的人有一個特點,就是不喜歡事事被人安排妥當:中午十二時吃午飯,下午三時半吃三文治,黃昏六時半吃晚飯,晚上十時上床睡覺,半分出不得差錯。我們喜歡隨自己的心意,做自己喜歡的事,喜歡嘗試新的事物,喜歡涉獵最先進的技術,喜歡弄清楚事情的來龍去脈,享受無中生有的樂趣,撥弄配置檔案從而控制系統的運作,也滿足我們心靈深處的權力慾。最後,沒有人願意跟錢作對吧。所以,我推薦選擇自主管理的 VPS。
應該使用甚麼操作系統?
這個問題不好回答,CentOS、Ubuntu、SuSE、Debian、Slackware 等等各有特色,也各有支持者。不過 VPS 一般是作為伺服器,而非桌面電腦或工作站,所以應該考慮那些以伺服器為應用目標的 Linux 版本,包括 Redhat 系列的 Redhat Enterprise Linux (RHEL) 和 CentOS,Ubuntu Server Edition、Debian 和 SuSE Linux Enterprise Server (SLES)。
我推薦 CentOS,RHEL 是 Redhat 的企業級 Linux 系統,不過是收費軟件,鑒於 Linux 的開放源碼政策,Redhat 必須把 RHEL 的源碼公開,於是 CentOS 把 RHEL 的源碼重新包裝,唯一的改動就是把系統內的 RHEL 品牌改為 CentOS,所以兩者功能上可說毫無分別。RHEL 和 CentOS 最為人詬病的是軟件的更新速度不夠快,官方軟件庫的東西往往落後最新的版本一大截,例如現在最新的 PHP 版本是 5.5.11,但是官方軟件庫的 PHP 只是 5.3.3,即使只看 PHP 5.3,這系列最新的版本已到了 5.3.28,可見官方軟件庫如何落後。不過網絡上有很多第三方軟件庫提供較新版本的軟件,所以問題不算很大。不過 RHEL 和 CentOS 的安全性和穩定性卻是任何伺服器最需要的,穩健的防火牆和 SELinux 從安裝完成那一刻便開始保護伺服器。