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

第 1章 資源管理簡介

本書為 Oracle®、Sun JavaTM System Web Server (以前為 SunTM ONE Web Server)、DNS 等軟體應用程式提供建立資源類型的指導。 因此,本書主要針對資源類型的開發人員。

本章概述了開發資料服務所需要瞭解的概念,包含下列資訊。


註解 –

本書中的術語資源類型資料服務可以交換使用。 雖然術語代理程式在本書中很少用到,但是與資源類型資料服務是對等的。


Sun Cluster 應用程式環境

Sun Cluster 系統可使應用程式作為高度可用資源與可延伸資源被執行與管理。 稱為「資源群組管理員」或者 RGM 的叢集工具提供了高可用性與可延伸性的機制。 形成此工具程式設計介面的元素包括以下幾種。

下圖顯示這些元素之間的相互關係。

圖 1–1 程式設計架構

顯示回呼方法、RMAPI、程序管理工具以及 DSDL 之間相互關係的圖

Sun Cluster 套裝軟體中包含 SunPlexTM Agent Builder,一種使資料服務的建立自動進行的工具 (請參閱第 9章, SunPlex Agent Builder)。 Agent Builder 在 C shell (使用 DSDL 函式寫入回呼方法) 或者 Korn shell (ksh) (使用低層級 API 指令寫入回呼方法) 產生資料服務程式碼。

RGM 在每個叢集節點上作為常駐程式執行,並依照預先配置的策略自動啟動與停止所選節點上的資源。 RGM 在節點發生故障或重新啟動時,透過停止受影響節點上的資源並在另一個節點上啟動資源,使該資源高度可用。 RGM 還自動啟動與停止資源特定的監視器,該監視器可以偵測資源故障,並將發生故障的資源重新配置到另一個節點,或者可以監視資源效能的其他方面。

RGM 支援故障轉移資源 (一次至多可以在一個節點上處於線上狀態) 與可延伸資源 (可以同時在多個節點上處於線上狀態)。

RGM 模型

本節介紹一些基本術語,並詳細說明 RGM 及其關聯的介面。

RGM 處理以下三種主要的相互關聯物件: 資源類型、資源以及資源群組。 引入這些物件的一種方法是使用範例,如下所述。

開發者實施資源類型 ha-oracle,使得現有 Oracle DBMS 應用程式高度可用。 一般使用者為市場營銷、工程與金融定義獨立的資料庫,每個資料庫皆為一種類型為 ha-oracle 的資源。 叢集管理員將這些資源放入獨立的資源群組中,以便這些資源可以在不同的節點上執行並獨立進行故障轉移。 開發者建立第二種資源類型 ha-calendar,以實施需要 Oracle 資料庫的高度可用日曆伺服器。 叢集管理員將金融日曆的資源放入與金融資料庫資源相同的資源群組,以便這兩種資源在同一節點上執行並共同進行故障轉移。

資源類型

資源類型由在叢集上執行的軟體應用程式、作為回呼方法由 RGM 用來管理應用程式 (作為叢集資源) 的控制程式以及構成叢集部分靜態配置的屬性集組成。 RGM 使用資源類型屬性來管理特定類型的資源。


註解 –

除軟體應用程式之外,資源類型可以表示其他系統資源 (例如,網路位址)。


資源類型開發人員指定資源類型的屬性,並在資源類型註冊 (RTR) 檔案中設定這些屬性的值。 RTR 檔案依循明確定義的格式,如設定資源屬性和資源類型屬性rt_reg(4) 線上說明手冊中所述。 亦請參閱定義資源類型註冊檔案,以取得資源類型註冊檔案範例的說明。

表 A–1 提供資源類型屬性的清單。

叢集管理員在叢集上安裝與註冊資源類型實作與基礎應用程式。 註冊程序在叢集配置中輸入資源類型註冊檔案的資訊。 Sun Cluster Data Services Planning and Administration Guide for Solaris OS描述了註冊資料服務的程序。

資源

資源繼承其資源類型的屬性和值。 此外,開發者可以在資源類型註冊檔案中宣告資源屬性。 請參閱表 A–2,以取得資源屬性的清單。

叢集管理員可以依據在資源類型註冊 (RTR) 檔案中指定特定屬性的方法來變更這些屬性的值。 例如,屬性定義可以指定可允許值的範圍,還可指定該屬性何時可調 (例如,建立時、任何時候或者永不)。 在這些規格內,叢集管理員可以使用管理指令對屬性進行變更。

叢集管理員可以建立許多相同類型的資源,每種資源有其自己的名稱與屬性值集,以便基礎應用程式的多個實例可以在叢集上執行。 在叢集內,每個創設均需要唯一的名稱。

資源群組

每種資源均必須在資源群組中進行配置。 RGM 使群組中的所有資源在同一節點上一同上線與離線。 當 RGM 使資源群組上線或離線時,會對群組中的個別資源呼叫回呼方法。

資源群組目前在其上處於線上狀態的節點稱為該資源群組的主節點主要節點。 資源群組由其每個主節點主控。 每個資源群組均具有相關 Nodelist 屬性,該屬性由叢集管理員來設定,可以識別資源群組的所有潛在主節點或主控者

資源群組還具有一個屬性集。 這些屬性包括配置屬性 (可以由叢集管理員來設定) 與動態屬性 (由 RGM 設定,反映資源群組的使用中狀態)。

RGM 定義兩種類型的資源群組,故障轉移資源群組與可延伸資源群組。 故障轉移資源群組在任何時候僅可以在一個節點上連線,而可延伸資源群組可以同時在多個節點上連線。 RGM 提供支援建立每種類型資源群組的屬性集。 請參閱將資料服務傳送至叢集實施回呼方法,以取得有關這些屬性的詳細資訊。

請參閱表 A–3,以取得資源群組屬性的清單。

資源群組管理員

資源群組管理員 (RGM) 是作為在叢集的每個成員節點上執行的常駐程式 rgmd 來實現的。 所有 rgmd 程序互相通訊,並作為單一叢集範圍的工具一起動作。

RGM 支援以下功能:

每當 RGM 啟動配置變更,均會在叢集的所有成員節點之間協調其動作。 這種活動稱為重新配置。 為了在個別資源上使狀態變更生效,RGM 會針對該資源呼叫資源類型特定的回呼方法。

回呼方法

Sun Cluster 框架使用一種回呼機制,提供資料服務與 RGM 之間的通訊。 該框架定義一組回呼方法,包括這些方法的引數與傳回值,以及 RGM 呼叫每種方法所處的環境。

透過編碼一組個別回呼方法,並將每種方法作為可由 RGM 呼叫的控制程式來實施,便可建立資料服務。 也就是說,資料服務不是由單一可執行檔組成,而是由多個可執行程序檔 (ksh) 或者二進位檔 (C) 組成,其中的每個檔案均可由 RGM 直接呼叫。

使用 RGM 透過資源類型註冊 (RTR) 檔案來註冊回呼方法。 在 RTR 檔案中,您要識別針對資料服務已實施的每種方法之程式。 當系統管理員在叢集上註冊資料服務時,RGM 會讀取 RTR 檔案,該檔案提供在其他資訊中對回呼程式的識別。

資源類型必需的回呼方法僅僅包括啟動方法 (StartPrenet_start) 與停止方法 (StopPostnet_stop)。

可以將呼叫方法群組為下列種類:

請參閱第 4章, 資源管理 API 參考rt_callbacks(1HA) 線上說明手冊,以取得有關回呼方法的更多資訊。 另請參閱第 5章, 資料服務範例第 8章, DSDL 資源類型實施範例,以取得資料服務範例中的回呼方法。

程式設計介面

若要寫入資料服務程式碼,資源管理架構會提供低層級 API 或基本 API、建立在基本 API 之上的較高層級程式庫,還會提供從您所提供的基本輸入自動產生資料服務的工具 SunPlex Agent Builder。

RMAPI

RMAPI (資源管理 API) 提供一組低層級常式,這些常式可讓資料服務在系統中存取有關資源、資源類型以及資源群組的資訊,要求本機重新啟動或者故障轉移以及設定資源狀況。 您要透過 libscha.so 程式庫存取這些函式。 RMAPI 以 shell 指令形式與 C 函式形式提供這些回呼方法。 請參閱 scha_calls(3HA)第 4章, 資源管理 API 參考,以取得有關 RMAPI 常式的更多資訊。 亦請參閱第 5章, 資料服務範例,以取得在資料服務回呼方法範例中如何使用這些常式的範例。

資料服務開發程式庫 (DSDL)

建立在 RMAPI 頂層的是 DSDL,它在保留 RGM 的以下回呼方法模型的同時提供了更高階的整合框架。 DSDL 為資料服務開發提供了各種工具,包括:

對於大多數應用程式來說,DSDL 均會提供建立資料服務所需的大部分或者全部功能性。 然而,請注意,DSDL 不會取代低層級 API,而是將其封裝與延伸。 實際上,許多 DSDL 函式呼叫 libscha.so 函式。 同樣,您可以在使用 DSDL 編碼大部分資料服務時直接呼叫 libscha.so 函式。 libdsdev.so 程式庫包含 DSDL 函式。

請參閱第 6章, 資料服務開發程式庫 (DSDL)scha_calls(3HA) 線上援助頁,以取得有關 DSDL 的詳細資訊。

SunPlex Agent Builder

Agent Builder 是一種使資料服務的建立自動進行的工具。 輸入有關目標應用程式與要建立之資料服務的基本資訊。Agent Builder 將產生完整的資料服務,包含源代碼與可執行代碼 (C 或 Korn shell)、自訂 RTR 檔案以及 SolarisTM 套裝軟體。

對於大多數應用程式來說,您可以使用 Agent Builder 來產生完整的資料服務,僅需您進行次要的手動變更即可。 具有較複雜要求的應用程式 (例如對其他屬性新增驗證檢查) 可能需要 Agent Builder 所無法完成的工作。 然而,即使出現這些情況,您仍可以使用 Agent Builder 產生大部分程式碼,而其餘部分透過手動編碼來完成。 至少,還可以使用 Agent Builder 為您產生 Solaris 套件。

資源群組管理員管理介面

Sun Cluster 提供用於管理叢集的圖形使用者介面與指令集。

SunPlex Manager

SunPlex Manager 是一種基於 Web 的工具,使您能夠執行下列作業。

請參閱Sun Cluster 軟體安裝指南 (適用於 Solaris 作業系統),以取得安裝 SunPlex Manager 與使用 SunPlex Manager 來安裝叢集軟體之方法的說明。 SunPlex Mnager 提供大多數唯一管理作業的線上說明。

管理指令

管理 RGM 物件的 Sun Cluster 指令為 scrgadm(1M)scswitch(1M)scstat(1M)- g

scrgadm 指令允許檢視、建立、配置、刪除 RGM 使用的資源類型、資源群組與資源物件。 指令是叢集管理介面的一部分,在同一程式設計環境中不能用來作為應用程式介面,本章的餘下部分有相關說明。 然而,scrgadm 是建構 API 作業所在的叢集配置之工具。 瞭解管理介面可設定瞭解應用程式介面的環境。 請參閱 scrgadm( 1M) 線上說明手冊,以取得有關該指令可以執行之管理作業的詳細資訊。

scswitch 指令在指定的節點上將資源群組切換為線上狀態或離線狀態,以及啟用或停用資源或者其監視器。 請參閱 scswitch(1M) 線上說明手冊,以取得有關該指令可以執行之管理作業的詳細資訊。

scstat -g 指令顯示目前所有資源群組與資源的動態狀態。