應用程式驅動的伺服器虛擬化方案 Oracle VM 第 5 回
提到 Linux 下的虛擬化方案,VMware、VirtualBox、Xen 和 KVM 都是比較多人認識的,但其實 Oracle 也有一個在一定條件下免費使用的 Oracle VM,一連五篇的連載將全面介紹 Oracle VM(OVM) 伺服器虛擬化的安裝與配置、基本功能與管理、容災方案、平台升級、以及不可或缺的故障處理和架構恢復,本篇是本連載的最終回,我們將介紹 Oracle VM 平台的故障處理和架構恢復。
上篇我們介紹過 Oracle VM 伺服器虛擬化方案的基本功能與管理,在最後一回我們會介紹 Oracle VM 的容災方案。Oracle VM 的高可用方案,能夠實現在同一個伺服器池中,虛擬機器和 OVS 伺服器之間的高可用功能。不過在有條件的情況下。OVM 的容災方案可在一整套 OVM 徹底崩潰時,由另外一套用於容災的 OVM 快速接管。由原來的整體架構並,支撐所有虛擬機器運行。
實現的前提
當然,實現的前提是集中式儲存上的資料是完好的,而且儲存中的資料可以基本上保持在兩套 OVM 之間互相同步,並且兩套 OVM 基本上採用形同的網路架構。對於 OVM 的容災方案,Oracle 提供了白皮書,詳情請參考以下網址。
http://www.oracle.com/technetwork/server-storage/vm/ovm3-disaster-recovery-1872591.pdf
OVM 容災方案
OVM 容災方案簡單來講,需要構建兩個網站,即主服務站點和容災網站。每個網站都是一套完整的 OVM 環境, 包括了 Manager 和 OVS 伺服器。如果主網站包含了一個或者多個伺服器池,那麼對應的容災網站也應該規劃出部署對應伺服器池的能力。下圖是一個主備模式的 OVM 容災架構圖(圖 1),主網站和容災網站各有一個伺服器池,而且都擁有自己的共用儲存。實現的關鍵,是主網站的儲存,能夠有能力和容災網站保持大概的即時同步。因此理論上,容災網站的儲存,基本上和主網站內容保持一致。

從實施角度來講,可以先按照之前的正常步驟,安裝和部署 OVM 的主網站。而主網站和容災網站之間的儲存同步,通常是依靠儲存和底層架構的功能來實現的,這個需要儲存有遠端同步能力,而且儲存之間擁有快速的光纖通道,很少靠上層軟體方案來做。我們只是假設容災網站的儲存,已經擁有了和主網站完全相同的內容。在這種情況下來部署容災網站,當安裝完主網站的 OVM Manager 後,用所產生的 UUID,來安裝容災網站的 OVM Manager。 該 UUID 一般存放在每個 OVM 的 /u01/app/oracle/ovm-manager-3/.config 檔中,使用該 UUID 安裝的時候,執行命令如下。
./runInstaller.sh –uuid <UUID> [Enter]
接下來按照正常的步驟,安裝容災網站的 OVS 伺服器。在容災網站上,對所有屬於該網站的 OVS 伺服器,執行 Discover 操作。如果一個伺服器池有多個 OVS 伺服器的話,實際上先只需要 Discover 其中的一台就可以。一般主網站和容災網站的網路架構,設計是相同的,所以在容災網站上,可按照和主網站相同架構,去配置網路,包括網路卡綁定、VLAN 界面以及虛擬機器網路等。在容災網站上建立伺服器池,這個過程中需要在對應存放裝置上建立伺服器池檔案系統。所有工作完成之後,關閉容災網站的 OVM Manager 服務。
/etc/init.d/ovmm stop [Enter]
到此為止,容災網站的配置工作便告完成。
切換到容災網站
—當主網站出現問題,如何切換到容災網站?假設主網站,包括 OVM Manager,OVM Server 以及共用儲存都已經崩潰,由於主網站和容災網站的共用儲存,一直保持同步狀態,所以在容災網站的共用儲存上,擁有和主網站完全相同的內容。因此在容災網站上,啟動 OVM Manager 的主服務。
/etc/init.d/ovmm start [Enter]
確認至少有一台 OVS 伺服器,已經被正確地 Discover 出來, 且網路架構和主網站完全一致,我們要確保伺服器池已經建立和正常啟用。最關鍵的一步來了,此時應該在容災網站上將儲存的資料倉庫 Repository, 掛載到伺服器池上。但是由於容災網站的伺服器池是新建的,其群集資訊與主網站不一致,所以在掛載資料倉庫的時候,一定會報錯。解決的方法是在容災網站的 OVM Server 上, 直接修改資料倉庫中檔案系統中繼資料資訊,來配合容災網站的伺服器池資訊,具體使用一條命令就可以搞定。
tunfs.ocfs2–update-cluster-stack/<LUN for Repository [Enter]
執行後在 OVS 伺服器上,可以直接嘗試掛載資料倉庫所在的OCFS 檔案系統。如果能掛載成功,則證明修改成功。在管理端上,右鍵點擊 OVM Server,執行 Rediscover OVM Server,並 Rescan Physical Disk。如果之前的步驟都沒有問題,在 Repositories 標籤中,應該可以看到刷新出來的倉庫,然後將該倉庫 Present,給容災網站的 OVS,並執行以下刷新操作,這樣在 Servers and VMs 標籤中,也就可以看到所有的虛擬機器了。將其他的 OVS 伺服器陸續加入進伺服器池,並將資料倉庫 Present 給他們,之後所有的虛擬機器就可以啟動了。
中繼資料的處理
這時容災網站就徹底接管了主網站的架構, 如果有一天主網站恢復了,在容災網站上,可以關閉所有虛擬機器,在 OVM Manager 界面的 Repository 標籤中的 Unpresent 是資料倉庫,可將資料倉庫和伺服器池進行剝離。此時就可以再主網站上再次執行命令,更新資料倉庫中 OCFS 檔案系統的中繼資料,使之和主網站伺服器池一致。
tunfs.ocfs2 –update-cluster-stack [Enter]
通過上述步驟,我們不難看出整個方案的核心,實際上就是將 Repository 所在的 OCFS 檔案系統,在不同的伺服器池之間來回切換和掛載。只不過掛載之前,需要更新 OCFS 檔案系統中繼資料,並配合當前的伺服器池資訊。所以根據此原理,甚至可以設計出 Active/Active 的容災架構,即主網站和容災網站,同時作為主網站運行部分,虛擬機器而同時又互相為備份。在這種情況下,一個 OVM Manager 至少會同時管理兩個或以上的伺服器池。