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

第 1 章 資源管理簡介

本書提供建立軟體應用程式 (例如,Oracle®、Sun JavaTM System Web Server [之前稱為 Sun ONE Web Server] 或 DNS) 的資源類型之指南。因此,本書主要針對資源類型的開發人員。

本章提供您需要瞭解以開發資料服務的概念之簡介。本章涵蓋下列主題:


備註 –

本書中的術語資源類型資料服務可以交換使用。儘管專有名詞代理程式極少在本書中使用,但其等同於資源類型資料服務


Sun Cluster 應用程式環境

Sun Cluster 系統可使應用程式作為高可用性和可延伸性資源執行並管理。Resource Group Manager (RGM) 提供用於高可用性和可延伸性的機制。以下元素形成此功能的程式設計介面︰

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

圖 1–1 Sun Cluster 應用程式環境的程式設計架構

顯示回呼方法、RMAPI、程序管理工具 (PMF) 與 DSDL 之間的相互關係的圖表

SunPlex Agent Builder,(在第 9 章, SunPlex Agent Builder中說明),是 Sun Cluster 套裝軟體中的工具,用於將建立資料服務的程序進行自動化。Agent Builder 以 C (透過使用 DSDL 函數寫入回呼方法) 或 Korn (ksh) Shell 指令語言 (透過使用低層級 API 指令寫入回呼方法) 產生資料服務。

RGM 在每個叢集節點上作為常駐程式執行,並依據預先配置策略在所選節點上自動啟動和停止資源。在節點發生故障或重新啟動的情況下,透過停止受影響節點上的資源,並在其他節點上啟動該資源,RGM 使資源具有高可用性。RGM 也將自動啟動和停止資源特定的監視器。這些監視器偵測資源故障,並將故障的資源遷移至其他節點上,或監視資源效能的其他方面。

RGM 支援容錯移轉和可延伸資源,前者僅可一次在一個節點上處於線上狀態,而後者可同時在多個節點上處於線上狀態。

Resource Group Manager 模型

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

RGM 處理相互關係的三種主要物件︰ 資源類型、資源以及資源群組。介紹這些物件的一種方法是使用範例,如下所示︰

您實作資源類型 ha-oracle,其可使現有的 Oracle DBMS 應用程式具有高可用性。一般使用者可以定義不同的銷售資料庫、工程資料庫和財務資料庫,每一個均為 ha-oracle 類型的資源。叢集管理員將這些資源置於不同的資源群組中,以便它們可以在不同的節點上執行並獨立地容錯轉移。您可建立第二個資源類型 ha-calendar,以實作高可用性的行事曆伺服器,該伺服器需要 Oracle 資料庫。叢集管理員將金融日曆的資源放入與金融資料庫資源相同的資源群組,以便這兩種資源在同一節點上執行並共同進行故障轉移。

資源類型

資源類型由以下內容組成︰

RGM 使用資源類型特性來管理特定類型的資源。


備註 –

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


您可為資源類型指定特性,並在資源類型註冊 (RTR) 檔案中設定特性值。RTR 檔案遵循設定資源特性和資源類型特性rt_reg(4) 線上手冊中說明的格式。另請參閱定義資源類型註冊檔案,以取得 RTR 檔案範例的說明。

資源類型特性提供資源類型特性清單。

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

資源

資源繼承其資源類型的特性與值。此外,您可以在 RTR 檔案中宣告資源特性。資源特性包含資源特性清單。

依據特性在 RTR 檔案中的指定方式,叢集管理員可以變更特定特性的值。例如,特性定義可以指定允許值的範圍。特性定義也可指定特性為可調的時間︰永遠不、隨時、建立時 (當資源增加至叢集時),或停用資源時。在這些規格中,叢集管理員可透過使用管理指令變更特性。

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

資源群組

每種資源均必須在資源群組中進行配置。RGM 使群組中的所有資源在同一節點上一同上線與離線。當 RGM 使資源群組處於線上狀態或離線狀態時,該資源群組將在群組中個別資源上執行回呼方法。

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

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

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

資源群組特性包含資源群組特性清單。

資源群組管理員

Resource Group Manager (RGM) 實作為常駐程式 rgmd,在叢集的每個成員節點上執行。所有 rgmd 程序相互進行通訊,並作為單一的全叢集功能執行。

RGM 支援以下功能:

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

回呼方法

Sun Cluster 架構使用回呼機制以提供資料服務與 RGM 之間的通訊。架構定義回呼方法集合,包含它們的引數和傳回值,以及 RGM 在其下呼叫每個方法的情況。

您透過編碼個別回呼方法集合與將每個方法實作為 RGM 可以呼叫的控制程式,來建立資料服務。即,資料服務不是由單一可執行程式檔組成,而是由數個可執行程序檔 (ksh) 或二進位檔 (C) 組成,RGM 可以直接呼叫其中的每一個。

透過 RTR 檔案使用 RGM 註冊回呼方法。在 RTR 檔案中,您可以識別已經為資料服務實作的每種方法的程式。當叢集管理員在叢集上註冊資料服務時,RGM 將讀取 RTR 檔案,該檔案可提供對回呼程式的識別和其他資訊。

資源類型唯一要求的回呼方法為啟動方法 (StartPrenet_start) 和停止方法 (StopPostnet_stop)。

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

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

程式設計介面

對於寫入資料服務程式碼,資源管理架構將提供一個低層級或基底 API,建立在基底 API 頂層的較高層級程式庫,以及 SunPlex Agent Builder (自動從您提供的基本輸入中產生資料服務的工具)。

Resource Management API (資源管理 API)

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

資料服務開發程式庫

資料服務開發程式庫 (DSDL) 建立在 RMAPI 的頂層,在保留 RGM 的基礎方法回呼模型的同時,提供較高層級的整合架構。libdsdev.so 程式庫包含 DSDL 函數。DSDL 為資料服務開發提供多種工具,包括︰

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

請參閱 第 6 章, 資料服務開發程式庫scha_calls(3HA) 線上手冊,以取得有關 DSDL 的更多資訊。

SunPlex Agent Builder

Agent Builder 是一種自動化建立資料服務的工具。輸入有關目標應用程式與要建立之資料服務的基本資訊。Agent Builder 產生資料服務,其包含原始碼和可執行程式碼 (C 或 Korn Shell)、自訂 RTR 檔案以及 Solaris 套裝軟體。

對於大多數應用程式來說,您可以使用 Agent Builder 來產生完整的資料服務,僅需您進行次要的手動變更即可。具有較複雜要求的應用程式 (例如對其他特性新增驗證檢查) 可能需要 Agent Builder 所無法完成的工作。然而,即使在這些情況下,您也可以使用 Agent Builder 產生程式碼的主體,並手動編碼其餘的程式碼。最低限度,您可以使用 Agent Builder 產生 Solaris 套裝軟體。

資源群組管理員管理介面

Sun Cluster 提供圖形化使用者介面 (GUI) 和用於管理叢集的指令集。

SunPlex Manager

SunPlex Manager 是基於 web 的工具,可讓您執行以下作業︰

請參閱「Sun Cluster 軟體安裝指南(適用於 Solaris 作業系統)」,以取得有關安裝 SunPlex Manager 和如何使用 SunPlex Manager 安裝叢集軟體的說明。SunPlex Mnager 提供大多數唯一管理作業的線上說明。

scsetup 公用程式

您可以使用 scsetup(1M) 公用程式互動執行多數 Sun Cluster 管理作業。

您可以使用 scsetup 公用程式管理以下 Sun Cluster 元素︰

您也可使用 scsetup 公用程式執行以下作業︰

管理指令

用於管理 RGM 物件的 Sun Cluster 指令為 scrgadmscswitchscstat -g

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

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

scstat -g 指令顯示目前所有資源群組與資源的動態狀態。請參閱 scstat(1M) 線上手冊,以取得有關該指令可執行的管理作業的詳細資訊。