VMware vSphere / XenServer 和 OpenStack / OpenNebula 到底有什麼差別

最近看了一些 OpenStack Summit 演講的影片,尤其是 Moving From Virtualized Infrastructure to OpenStack ,對於虛擬化和雲端運算又有了更深一層的認識。

影片中提到,vSphere 和 OpenStack 是完全不同的產品。vSphere 是從硬體開始打造雲端,意思是先從硬體、hypervisor 的角度來思考問題,也可以說是從 VM 開始考慮問題,由最基本的 ESXi hypervisor ,往上增加功能到 vCenter (但我只用過 ESXi 沒用過 vCenter ,我只是大概知道 vCenter 有什麼樣的功能),而 XenServer 也是類似的概念。 OpenStack / OpenNebula (這兩個是不同的計劃,但是功能、概念接近)則是從完全不同的出發點來考慮問題,OpenStack 是從應用程式本身(的需求)出發,對於應用程式來說,幾個 VM 、幾個 host 並不是重點,重點是怎麼讓應用程式不中斷的運行。

在 vSphere 的環境中,首先是建置 ESXi ,然後在上面一臺一臺的安裝 VM 、然後設定 VM 的網路、安裝應用程式的環境,這部分就跟沒有虛擬化的情形下買一臺伺服器然後安裝的過程一樣,維護應用程式的方式也是和從前沒兩樣,遠端至 VM 裏面和以前一樣進行升級等等的操作。唯一比以前更方便的地方大概就是 live migration ,單一伺服器的硬體維護或是故障不影響 VM 的運行。 vCenter 就多了一些更高階(意思是更抽象化,就是從比較大規模的觀點來看看可能的問題)的功能,這些功能在小規模的環境當中(<10 VM)很可能用不到,像是 High availability, fault tolerance 等等,小規模的環境中就算沒有這些功能,這些應用程式的可用性對於這樣小規模的組織可能也已經夠用。

有沒有注意到,整個 vSphere 環境考慮的主體是 VM ,而不是 Application ,vSphere 的重點是讓 VM 不中斷的運行,對於更上層的 Application ,它其實不太在乎。這樣的好處是,以往的應用程式 (Legacy Application) 很可能並沒有把雲端技術納入應用程式的設計當中,像是沒有考慮 scaling 問題,scaling 的能力大多依賴伺服器端軟體、作業系統的效能調校和底層硬體 (VM) 的效能(這個概念稱作 Scalue up ,把處理能力向上提升)。因此就算你在雲端的環境當中部署了這樣的 Legacy application ,很多雲端環境所提供的功能也是用不到的,而且在雲端環境上做 legacy application 的維護我覺得 overhead 還蠻大的,雲端環境本身的維護我覺得也需要更多的心力。(我覺得 ESXi 本身的維護比 OpenStack / OpenNebula 還要簡單)。

虛擬化是雲端運算的基礎,但是做到虛擬化並不等於做到雲端。vSphere 這樣的產品應該是定位爲虛擬化基礎架構 (Virtual Infrastructure) 而非雲端基礎架構 (Cloud Infrastructure, Infrastructure as a Service) 。

OpenStack / OpenNebula 是以應用程式爲出發點的解決方案,是從比較高階(遠離硬體層面)、比較大規模的觀點來考慮,所以建 VM 的方式不是像 ESXi 這樣一次新增一個 VM 慢慢調硬體參數(當然 vCenter 也有 template 的功能),而是必須使用固定的硬體樣板 (template, OpenStack 稱作 flavor) ,這樣一來對於小規模的環境反而是造成了不便,因爲每個 Application 可能就只有一臺 VM 而已,若是每個應用程式的需求不同,每個 VM 要使用不同的樣板,那這樣也失去樣板的意義了。但是在大規模的環境中這樣就會很方便,當要一次部署10, 20臺一模一樣的 VM 時,樣板就會派上用場了。在部署 VM 的時候每臺 VM 應該要不同的參數也可以由雲端環境插入,像是 IP 、 MAC 、hostname ,雲端環境也會記錄這些資訊,比起 vSphere ,OpenStack 更瞭解 VM 的狀況。

OpenStack 以應用程式爲出發點,但是它考慮的主要是雲端應用程式 (Cloud application) 或是說 cloud-aware application (在這邊 PaaS 或是 SaaS 應該也都可以算是 cloud application),這些應用程式比較瞭解他們所運行的雲端環境,可以跟環境做溝通(透過環境提供的 API ),並且瞭解自身的運作狀況(負載),雲端應用程式的架構上也比較分散,這樣要進行應用程式 capacity (可負載量)會比較方便。雲端應用程式要做 scaling 也很容易,負載量提升時,只要呼叫基礎架構 API 多部署幾臺後端伺服器,整個服務的 capacity 就提升了。呼叫基礎架構 API 的工作可以由其他偵測程式偵測這個應用程式的需求並呼叫來達成,或是,在最佳狀況中,由應用程式本身進行呼叫。ESXi (或 vCenter)的 API 似乎是比較弱的(若有錯請更正我),應用程式要進行呼叫也比較不方便。至於 legacy application 在這樣的環境當中如同前面所提到,就沒有這麼大的好處。

雲端基礎架構的另一個好處是由於近乎統一的 API ,雲和雲之間便可以有連結。像是當你的 application 負載已經超過你整個設施所能負載的量時,應用程式可以透過(幾乎)一樣的 API 對其他提供公開服務的雲端基礎架構設施(公共雲)進行呼叫,把一部分的負載量轉移到公共雲或是你自己的另一朵私有雲。(當然這個過程也有很多問題要考慮)

所以,在一般中小企業、學校當中大多使用的還是 vSphere 這一點,其實也頗爲合理,畢竟規模小,運行的應用程式也是以 legacy application 爲多(因爲要重新開發功能一樣的雲端應用程式成本太高吧)。

至於一個我長久以來的問題:有沒有完全 opensource 的解決方案可以取代 vSphere ? 我目前找到最好的是 Proxmox VE

若是有任何錯誤歡迎在下面留言討論。

參考:http://www.mirantis.com/blog/cloud-prizefight-vmware-vs-openstack/

One thought on “VMware vSphere / XenServer 和 OpenStack / OpenNebula 到底有什麼差別

  1. 「虛擬化是雲端運算的基礎」
    雲端運算不一定要用到虛擬化,如果本機不使用虛擬化,資源就已經使用了七、八成,其實也就沒有虛擬化的必要.
    可以上Youtube找 “翟本喬" 博士有關於 雲端運算演講的影片來了解.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s