Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)

附錄 E 不支援叢集的應用程式的要求

一般而言,非叢集支援應用程式必須滿足特定的需求,才能成為具有高度可用性 (HA) 的候選應用程式。分析應用程式的適當性一節列出了這些要求。附錄提供了關於該清單中特定項目的附加詳細資訊。

透過將應用程式的資源配置到資源群組,可以使該應用程式具有高可用性。應用程式的資料置於一個具有高可用性的全域檔案系統中,在一個伺服器發生故障時,可以透過尚存的伺服器存取資料。請參閱Sun Cluster 概念指南 (適用於 Solaris 作業系統)中有關叢集檔案系統的資訊。

為了網路上的用戶端進行網路存取,在邏輯主機名稱資源中配置一個邏輯網路 IP 位址,邏輯主機名稱資源與資料服務資源處於相同的資源群組。資料服務資源與網路位址資源一起進行故障轉移,導致資料服務的網路用戶端在其新主機上存取資料服務資源。

多重主機資料

高度可用的全域檔案系統的裝置是多重主機式的,便於實體主機當機時,尚存的主機之一可以存取該裝置。要使應用程式具有高可用性,其資料必須具有高可用性,因而其資料必須常駐於全域 HA 檔案系統中。

全域檔案系統掛載於作為獨立實體建立的裝置群組上。您可以選擇將某些裝置群組作為掛載的全域檔案系統,將其他裝置群組作為原始裝置與資料服務 (例如 HA Oracle) 搭配使用。

應用程式可能具有指令行切換或指向資料檔位置的配置檔案。如果應用程式使用固定連線的路徑名稱,則可將路徑名稱變更為指向全域檔案系統中檔案的符號連結,無需變更應用程式代碼。請參閱使用多重主機資料放置的符號連結以取得關於使用符號連結的更多詳細說明。

在最嚴重的情況下,必須修改應用程式的來源代碼,以提供某種用於指向實際資料位置的機制。您可以透過執行附加的指令行切換來完成此作業。

Sun Cluster 支援使用 UNIX® UFS 檔案系統以及在容體管理程式中配置的 HA 原始裝置。安裝和配置時,系統管理員必須指定哪些磁碟資源用於 UFS 檔案系統,哪些用於原始裝置。通常,僅資料庫伺服器和多媒體伺服器使用原始裝置。

使用多重主機資料放置的符號連結

有時,應用程式會使其資料檔的路徑名稱固定連線,而沒有覆寫固定連線路徑名稱的機制。若要避免修改應用程式代碼,有時您可以使用符號連結。

例如,假定應用程式用固定連線路徑名稱 /etc/mydatafile 命名其資料檔。您可以將此路徑從檔案變更為符號連結,此符號連結的值指向其中一個邏輯主機檔案系統中的某檔案。例如,您可以將它變更為連結至 /global/phys-schost-2/mydatafile 的符號連結。

如果應用程式或其管理程序之一修改資料檔名稱及其內容,則使用符號連結將會出現問題。例如,假定應用程式透過首先建立一個新的暫存檔案 /etc/mydatafile.new 來執行更新。然後,透過使用 rename(2) 系統呼叫 (或 mv(1) 程式) 重新命名此暫存檔案具有實際檔案名稱。透過建立暫存檔案並將其重新命名為實際檔案,資料服務試圖確保其資料檔內容始終保持正確的格式。

但很遺憾,rename(2) 動作破壞了符號連結。名稱 /etc/mydatafile 現在是一個規則檔案,並與/etc 目錄位於相同的檔案系統,不在叢集的全域檔案系統中。由於 /etc 檔案系統對於每個主機都是專用的,因此在故障轉移或切換保護移轉之後資料將不可用。

引起此情形的潛在問題是:現有的應用程式不知道符號連結,並且撰寫時未考慮符號連結。若要使用符號連結將資料存取重新導向邏輯主機的檔案系統,必須以不會刪除符號連結的方式來執行應用程式。因此,符號連結不能完全糾正在叢集全域檔案系統上放置資料的問題。

主機名稱

您必須確定資料服務是否需要知道執行它的伺服器的主機名稱。如果是,則可能需要修改資料服務以使用邏輯主機名稱 (即配置至邏輯主機名稱資源的主機名稱,此邏輯主機名稱資源常駐於與應用程式資源相同的資源群組),而不是實體主機名稱。

有時,在用於資料服務的主從式協定中,伺服器會將其主機名稱作為至用戶端的部分訊息內容傳回至用戶端。對於這樣的協定,用戶端可能會依賴此傳回主機名稱作為聯絡伺服器時使用的主機名稱。對於故障轉移後或切換保護移轉後要使用的傳回主機名稱,主機名稱應該是資源群組的邏輯主機名稱,而不是實體主機的名稱。在這種情況下,必須修改資料服務代碼,以將邏輯主機名稱傳回用戶端。

多重主目錄主機

多重主目錄主機一詞指處於一個以上公用網路上的主機。這樣的主機具有多個主機名稱和 IP 位址。針對每個網路, 它都有一個主機名稱 - IP 位址配對。Sun Cluster 被設計為允許主機出現在任意數目的網路上,包括只出現在一個網路上 (非多重主目錄的的情況)。正如實體主機名稱具有多個主機名稱 - IP 位址配對,每個資源群組也可以具有多個主機名稱 - IP 位址配對,每個公用網路對應一個配對。Sun Cluster 將資源群組從一個實體主機移動至另一個實體主機時,該資源群組的完整主機名稱 - IP 位址配對集也將移動。

資源群組的主機名稱 - IP 位址配對集被配置為包含在資源群組中的邏輯主機名稱資源。建立和配置資源群組時,將由系統管理員指定這些網路位址資源。Sun Cluster 資料服務 API 包含查詢這些主機名稱 - IP 位址配對的工具。

為 Solaris 作業系統撰寫的大多數現成資料服務常駐程式已經能夠正確處理多重主目錄主機。許多資料服務透過連結至 Solaris 萬用字元位址 INADDR_ANY 來進行所有的網路通訊。該連結自動使資料服務處理所有網路介面的全部 IP 位址。INADDR_ANY 有效地連結至機器上目前配置的所有 IP 位址。使用 INADDR_ANY 的資料服務常駐程式一般無須變更,即可處理 Sun Cluster 邏輯網路位址。

連結至 INADDR_ANY 與連結至特定 IP 位址

即使使用非多重主目錄主機,Sun Cluster 邏輯網路位址概念也可使機器具有多個 IP 位址。機器具有一個其實體主機的 IP 位址和目前它所主控的每個網路位址 (邏輯主機名稱) 資源的其他 IP 位址。當機器成為網路位址資源的主控者後,它將動態地取得其他 IP 位址。當機器放棄網路位址資源的主控地位後,它將動態地放棄 IP位址。

連結至 INADDR_ANY 時,某些資料服務無法在 Sun Cluster 環境中正常運作。當資源群組被主控或取消主控時,這些資料服務必須將 IP 位址集動態地變更至其所連結的 IP 位址集。實現重新連結的一個策略是終止這些資料服務的啟動和停止方法,並重新啟動資料服務的常駐程式。

Network_resources_used 資源特性允許一般使用者配置應用程式資源應該連結到的特定網路位址資源集。對需要此功能的資源類型,必須在資源類型的 RTR 檔案中宣告 Network_resources_used 特性。

當 RGM 將資源群組置於線上或離線時,它依照特定的次序探測、取消探測網路位址,並根據它呼叫資料服務資源方法的時間向上或向下配置網路位址。請參閱決定要使用的 StartStop 方法

到資料服務的 Stop 方法返回時,資料服務必須已經停止使用資源群組的網路位址。同樣地,到 Start 方法返回時,資料服務必須已經開始使用網路位址。

如果資料服務連結至 INADDR_ANY 而非個別 IP 位址,則呼叫資料服務資源方法的次序與呼叫網路位址方法的次序無關。

如果資料服務的停止和開始方法透過終止和重新啟動資料服務的常駐程式完成其工作,則資料服務將在適當的時間停止和開始使用網路位址。

用戶端重試

對於網路用戶端,故障轉移和切換保護移轉表現為邏輯主機當機之後快速重新啟動。理想做法為,用戶端應用程式和主從式協定合力進行一定量的重試作業。如果應用程式和協定已經處理了單一伺服器當機和重新啟動的情況,則它們也將處理接管和切換保護移轉資源群組的情況。某些應用程式可能選擇不斷重試。較複雜的應用程式將通知使用者長時間的重試正在進行中,並讓使用者選擇是否繼續。