應用程式驅動的伺服器虛擬化方案 Oracle VM 第 1 回 (三)

上一節介紹了 Oracle VM 的各種管理功能,今節將介紹Oracle 虛擬化方案的架構。

邏輯架構說明

以下我們將簡單地了解一下 Oracle 虛擬化方案的架構(圖 6),和目前大多數的伺服器虛擬化方案一樣,OVM 的架構基本上包括了兩個部分,即管理端和 Hypervisor。虛擬化管理端 (Oracle VM Manager) 簡稱 OVMM,主要負責整個虛擬化環境的管理和監控,並提供 Web 管理界面。管理端也是一套基於 Linux 系統安裝和運行的程式集,因此需要在 RHEL 5/6 或 Oracle Linux5/6 上安裝。管理端包括了 Oracle Weblogic 伺服器,資料庫伺服器如 Oracle DB 或者 MySQL、應用程式程式開發架構 (ADF)、JAVA 環境以及 Oracle 虛擬化管理端程式本身。不過 Oracle 已經將這些功能都整合好了,所以在安裝過程中基本上只需要執行一個安裝腳本,所有相關內容都會被自動安裝和配置。

圖6:Oracle VM 的基本架構。
圖6:Oracle VM 的基本架構。

OVS 伺服器

虛擬化伺服器 (Oracle VM Server) 簡稱 OVS,是整個虛擬化架構的主體,單台的 OVS 提供了虛擬機器運行所必要環境和資源,並提供所有對物理和虛擬資源進行管理和監控方法。虛擬機器的運行完全依靠單台 OVS 所提供的硬體資源,而多台 OVS 伺服器彙聚起來將形成物理資源池,在 OVM 中將此資源池稱為伺服器池(Server Pool),相當於常見的群集 (Cluster)。虛擬機器可以隨機運行於任意一台 OVS 伺服器上,而且一切遷移類的操作,如高可用、虛擬機器線上遷移、自動負載平衡等都是基於伺服器池實現的。另外虛擬機器對物理資源的使用,也只限定在同一個資源池當中。只有在同一個伺服器池中的多個 OVS 伺服器,才可以構成真正意義上的高可用群集,並實現相關的群集仲裁和切換等操作。

原生虛擬化方案

OVM 是一種原生 (Native) 的虛擬化解決方案,意味著在物理伺服器上,不需要額外安裝任何作業系統,在硬體裸機上直接安裝OVS 伺服器的套裝程式即可。OVS 伺服器的安裝程式,實際上打包了一個羽量級的作業系統核心和其他重要部件,相當於一個經過裁剪的 Linux,大小只有 200MB,包括 Xen Hypervisor、Domain-0 和群集檔案系統,以及 Oracle VM 代理。Xen Hypervisor 即 VMM 虛擬機器監控管理器,處於硬體與虛擬機器之間,啟動時最先被載入到硬體的第一層,一旦載入就可部署虛擬機器。Xen 通過 Hypervisor,為虛擬機器提供基本的對物理 CPU 和記憶體的存取控制能力,並且實現在單獨的電腦上,運行多個各自獨立、彼此隔離的子作業系統。Hypervisor 扮演著類似交通警察的角色,指揮硬體存取和協調,來自各子作業系統的請求。但 Hypervisor 中不包含任何與硬體對話的驅動,也沒有管理員對話界面,因此還需要另外一個重要部分,即 Domain-0。

Domain-0

在 Xen 的體系架構中,所有虛擬機器叫做 Domain。而在所有這些虛擬機器中,Domain-0 身份特殊,具有很高的特權,負責一些專門的工作。當 Hypervisor 啟動的時候,Domain-0 是第一個被啟動的虛擬機器。它和其他虛擬機器 Domain-U 不同,Domain-0 可以控制其他虛擬機器的啟動、停止等行為。同時 Domain-0 具有直接存取物理硬體的能力,所有其他的虛擬機器,都會由 Domain-0 來提供存取 I/O 設備的驅動,而實現對 I/O 設備的存取。於此同時,Domain-0 中還會載入一個 xend 進程,使用者存取、管理和控制其他的虛擬機器,均由用戶空間工具集和 Xend 進行通訊,來實現最終和 Domain-0 的對話。Domain-0 需要借助於 Linux 核心啟動,因此在 OVS 伺服器上,還包含了一個用於啟動 Domain-0 的 Linux 核心,即 Oracle Unbreakable Enterprise Kernel。該核心由 Oracle 基於 Linux 3.0 所開發,並針對 Oracle 環境進行了大量的定制和優化。

OCFSv2 群集檔案系統

OCFSv2 是一款 Oracle 自己開發的群集檔案系統。OCFSv2 在 Oracle 虛擬化中最重要用途,就是為虛擬化環境提供高可用群集能力。OCFS 檔案系統本身是一個比較複雜的體系,包括了在群集環境中,提供網路心跳管理和磁碟心跳管理的功能。簡而言之就是收集所有 OVS 伺服器的狀態資訊,並引入磁碟仲裁機制來使失效的節點被強制重啟,從而觸發虛擬機器遷移來實現高可用。OCFSv2 另外一個用途,是提供 DLM 功能即分散式鎖管理器,從而實現多個機器,同時對共用檔案系統進行有序和合法的存取。另外 OCFSv2 也作為存放虛擬機器資料資訊的儲存倉庫 (Repository),所有虛擬機器的磁碟、映像檔和配置資訊等資料,都以檔案系統的形式存放。OCFSv2 還提供了檔案系統級別的瘦克隆,即 Thin Clone 功能,以支援虛擬機器克隆時的空間動態分配,也提供了 reflink 功能,可實現對線上和離線的虛擬機器,進行快速的克隆和快照。

OVM 代理

Oracle VM 代理 (Oracle VM Agent) 是一個基於 Python 的代理程式,主要通過 XML-RPC 界面,實現 Oracle VM Manager 和每一個 OVS 伺服器之間的通訊。對每一個 OVS 伺服器的管理和狀態抓取,實際上也是通過代理進行的。除此之外,Agent 實際上是多個進程和服務的集合體,主要負責收集並向 OVMM 報告每一台 OVS 伺服器的狀態,記錄 OVS 伺服器運行的日誌資訊。它負責和 OCFS 檔案系統界面溝通,並在本地維護一個輕量的資料庫。因此 Oracle VM Agent 儘管在 OVS 伺服器上表現為一個服務,但實際上是由多個進程組成的(表 1)。

表1:Oracle VM Agent 的內容。
表1:Oracle VM Agent 的內容。

三種角色

另外,運行在同一個伺服器池中的 OVS 伺服器,從功能角度上,可以分為三種不同的角色。第一個角色是 Server Pool Master,即剛才所提到的 Master Server。Master Server 負責代表 Server Pool 和 Manager 進行通訊,並將 Manager 對 Server Pool 的管理命令,下達到所有其他的 OVS 伺服器上,也就是任何從 Manager 上下發的命令,實際上都要透過 Master,傳遞給其他 的 OVS 伺服器。Master Server 在一個 Server Pool 中只有一個,每個 OVS Server 上運行的 remaster 進程,將確保在原來的 Master 出現問題時,有新的 Master 可以接替。第二個角色是 VM Server,實際上可以將其理解為 Xen 加上 Domain-0 的結合,就是可運行虛擬機器的伺服器。預設情況下,一個伺服器池中所有 OVS Server 都是 VM Server。第三個角色是 Utility Server,一些比較大的 I/O 操作,比如說上傳 ISO、範本、裝配集,P2V 等,都是通過 Utility Server 進行的。預設情況下一個伺服器池中,所有 OVS Server 也都是 Utility Server。

下一節將會更深入說明 Oracle VM 的實際架構,緊貼 Linux Pilot 留意!

填妥以下登記表,下載由 Oracle 發表的 Oracle Linux 7: Optimizing Deployment Flexibility and Increasing ROI 研究報告,了解更多 Oracle Linux 的強大功能。

Fields marked with an * are required

One thought on “應用程式驅動的伺服器虛擬化方案 Oracle VM 第 1 回 (三)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。