本章討論修改資源類型所需瞭解的問題。還包含有關可讓叢集管理員升級資源之方式的資訊。
本章涵蓋下列主題:
安裝與註冊現有資源類型的新版本
允許註冊預設資源類型的多個版本
將現有資源升級至資源類型的新版本,而無須刪除和重建資源
您想要升級的資源類型稱為支援升級的資源類型。您可能變更的現有資源類型的元素如下所示︰
資源類型特性的屬性
已宣告的資源特性集,包含標準特性和延伸特性
已宣告的方法集
方法或監視器的實作
修改應用程式程式碼時,您無須修改資源類型。
您需要瞭解提供叢集管理員升級資源類型所需工具的需求。本章將說明設置這些工具所需瞭解的內容。
資源類型名稱的三個元件是在 RTR 檔案中指定為 vendor-id、resource-type 和 rt-version 的特性。scrgadm 指令會插入句點和冒號分割符以建立資源類型名稱︰
vendor-id.resource-type:rt-version
vendor-id 前綴用來辨別不同公司提供的具有同一名稱的兩個註冊檔案。若要確保 vendor-id 唯一,請在建立資源類型時使用公司的股票代號。rt-version 用來辨別同一基本資源類型的多個註冊版本 (升級)。
# scha_resource_get -O Type -R resource-name -G resource-group-name |
在 Sun Cluster 3.1 之前的註冊資源類型名稱將繼續使用以下語法︰
vendor-id.resource-type
資源類型名稱的格式說明資源類型名稱的格式。
若要確保您正在修改的資源類型為支援升級的資源類型,請將 #$upgrade 指令納入資源類型的 RTR 檔案。對於您要支援的資源類型的每個舊版本,請在 #$upgrade 指令後面增加零個或多個 #$upgrade_from 指令。
#$upgrade 和 #$upgrade_from 指令必須顯示於 RTR 檔案中的資源類型特性宣告區段和資源宣告區段之間。請參閱 rt_reg(4) 線上手冊。
#$upgrade_from "1.1" WHEN_OFFLINE #$upgrade_from "1.2" WHEN_OFFLINE #$upgrade_from "1.3" WHEN_OFFLINE #$upgrade_from "2.0" WHEN_UNMONITORED #$upgrade_from "2.1" ANYTIME #$upgrade_from "" WHEN_UNMANAGED
#$upgrade_from 指令的格式如下所示︰
#$upgrade_from version tunability
RT_version。如果所有資源類型均沒有版本,或其版本並非您先前在 RTR 檔案中定義的版本,請指定空字串 (“”)。
叢集管理員可以升級指定的 RT_version 的條件和時間。
當對於叢集管理員升級資源的時間無限制時使用。升級期間該資源可完全處於線上狀態。
當新資源類型版本的方法如下時使用︰
Update、Stop、Monitor_check 和 Postnet_stop 方法與舊的資源類型版本的啟動方法 (Prenet_stop 和 Start) 相容
Fini 方法與舊版本的 Init 方法相容
升級之前,叢集管理員必須僅停止資源監視器程式。
當新資源類型版本的 Update、Stop、Monitor_check 或 Postnet_stop 方法符合以下情況時使用︰
與舊版本的 Init 方法相容
與舊的資源類型版本的啟動方法 (Prenet_stop 和 Start) 不相容
升級之前,叢集管理員必須先將資源離線。
類似於 WHEN_OFFLINE。然而升級之前,叢集管理員必須停用資源。
當新的資源類型版本的 Fini 方法與舊版本的 Init 方法不相容時使用。升級之前,叢集管理員必須將現有資源群組切換為未管理狀態。
如果資源類型的某一版本沒有顯示在 #$upgrade_from 指令的清單中,則依預設,RGM 會將 WHEN_UNMANAGED 的可調性強加至該版本。
用於防止現有資源升級為資源類型的新版本。叢集管理員必須刪除然後重建資源。
當 RTR 檔案的內容變更時,您僅需變更 RTR 檔案中的 RT_version 特性。為該特性選擇一個值,使其可以清晰表示此資源類型版本為最新版本。
請勿將 RT_version 字串中以下字元納入 RTR 檔案,否則,資源類型限制將失敗︰
空格鍵
Tab 鍵
斜線 (/)
反斜線 (\)
星號 (*)
問號 (?)
逗號 (,)
分號 (;)
左方括號 ([)
右方括號 (])
RT_version 特性在 Sun Cluster 3.0 中為可選擇特性,在 Sun Cluster 3.1 中則強制啟動。
Sun Cluster 3.0 中的資源類型名稱不含有版本字尾,如下所示︰
vendor-id.resource-type
即使在叢集管理員將叢集軟體升級至 Sun Cluster 3.1 或更高版本後,最初在 Sun Cluster 3.0 中註冊的資源類型將繼續具有一個遵循該語法的名稱。同樣地,如果 RTR 檔案是在執行於 Sun Cluster 3.1 及以上版本的叢集上註冊的,則其 RTR 檔案缺少 #$upgrade 指令的資源類型將獲得一個 Sun Cluster 3.0 格式名稱 (不具有版本字尾)。
叢集管理員可以透過使用 Sun Cluster 3.0 中的 #$upgrade 指令或 #$upgrade_from 指令註冊 RTR 檔案。然而,不支援將現有資源升級為 Sun Cluster 3.0 中新的資源類型。
以下說明了叢集管理員升級資源類型時必須做的工作或升級時的情況︰
如果現有的資源特性屬性無法滿足資源類型新版本的驗證條件,叢集管理員必須提供有效值。在以下情況中,叢集管理員必須進行此項作業︰
如果資源類型的新版本沒有預設值,並使用未在舊版本中進行宣告的預設值。
如果現有的資源使用某特性,此特性值未在新版本中進行宣告或其值無效。宣告的特性未在資源類型的新版本中進行宣告,但已從資源中刪除。
嘗試從不支援的資源類型版本進行升級失敗。
升級之後,資源從資源類型的新版本中繼承所有特性的資源特性屬性。
如果您變更 RTR 檔案中的資源類型預設值,現有資源將繼承新的預設值。即使該特性宣告僅 AT_CREATION 或 WHEN_DISABLED 可調,仍會繼承新的預設值。叢集管理員建立的同一類型的特性也會繼承此預設值。然而,如果叢集管理員為特性指定新的預設值,則新的預設值將置換在 RTR 檔案中指定的預設值。
當在 Sun Cluster 3.0 中建立的資源升級為 Sun Cluster 的更高版本時,這些資源將不會從資源類型繼承新的預設資源特性屬性。此限制僅套用至從 Sun Cluster 3.0 叢集升級至 Sun Cluster 3.1 的叢集。叢集管理員可以透過指定特性的值並置換預設值,從而克服此限制。
叢集管理員可以註冊 Sun Cluster 3.0 中支援升級的資源類型。但是,Sun Cluster 將記錄不具有版本字尾的資源類型名稱。若要在 Sun Cluster 3.0 和 Sun Cluster 3.1 中正確執行,此資源類型的監視器程式碼必須能夠處理二者的命名慣例︰
vendor-id.resource-type:rt-version vendor-id.resource-type
資源類型名稱的格式說明資源類型名稱的格式。
叢集管理員無法以兩個不同的名稱對資源類型的同一版本註冊兩次。若要啟用監視器程式碼確定正確的名稱,請呼叫監視器程式碼中的以下指令︰
scha_resourcetype_get -O RT_VERSION -T VEND.myrt scha_resourcetype_get -O RT_VERSION -T VEND.myrt:vers
然後,將輸出值與 vers 進行比較。對於 vers 的特定的值,這些指令中僅有一個指令會成功。
確定資源類型套裝軟體的安裝需求和封裝時,請牢記以下兩個需求︰
新資源類型註冊後,其 RTR 檔案必須可在磁碟上存取。
新類型的資源建立後,新類型之所有已宣告的方法路徑名稱和監視器程式必須位於磁碟中並且可執行。只要資源處於使用中狀態,則舊方法與監視器程式都必須保留在適當位置。
若要確定要使用的正確封裝,請考量以下問題︰
RTR 檔案是否變更?
特性的預設值或可調性是否變更?
特性的 min 或 max 值是否變更?
升級是否會新增或刪除特性?
監視器程式碼是否變更?
方法程式碼是否變更?
新方法或監視器程式碼,或二者是否與先前版本相容?
這些問題的答案有助於確定新資源類型要使用的正確封裝。
修改資源類型時,您無須建立新方法或監視器程式碼。例如,您可能僅變更資源特性的預設值或可調性。在此實例中,由於您不變更方法程式碼,您僅需要可讀 RTR 檔案之新的有效路徑名稱。
如果您無須重新註冊舊的資源類型,則新的 RTR 檔案可以覆寫先前的版本。否則,請將新的 RTR 檔案放入新路徑。
如果升級會變更特性的預設值或可調性,請使用資源類型新版本的 Validate 方法以驗證現有的特性屬性對於新資源類型有效。如果現有特性屬性對於新資源類型無效,則叢集管理員可以將現有資源的特性變更為正確的值。如果升級會變更特性的 min、max 或 type 屬性,則當叢集管理員升級資源類型時,scrgadm 指令將自動驗證這些限制。
如果升級會增加新特性或刪除舊特性,您可能需要變更回呼方法或監視器程式碼。
如果您僅變更資源類型的監視器程式碼,則安裝套裝軟體時可能覆寫監視器二進位程式碼。
如果在資源類型中僅變更方法程式碼,您必須確定新的方法程式碼是否與舊的方法程式碼相容。此問題的答案將確定新方法程式碼是必須儲存於新路徑還是可以覆寫舊方法。
如果您可以將新的 Stop、Postnet_stop 和 Fini 方法 (如果已宣告) 套用至已初始化的資源或由舊版本的 Start、Prenet_stop 或 Init 方法啟動的資源,則可以使用新方法覆寫舊方法。
如果將新的預設值套用至特性會導致 Stop、Postnet_stop 或 Fini 等方法失敗,叢集管理員必須在資源類型升級後,相應地限制資源狀態。
資源類型升級之後,您可以讓叢集管理員透過限制 Type_version 特性的可調性來限制資源狀態。
一種封裝方法是將仍支援的資源類型所有舊版本納入套裝軟體中。此方法允許套裝軟體的新版本替代套裝軟體的舊版本,而不會覆寫或刪除方法的舊路徑。您必須決定要支援的舊版本的數量。
下表概述了要用於新的資源類型之封裝方案。
表 4–1 確定要使用的封裝方案
變更類型 |
可調性值 |
封裝方案 |
---|---|---|
僅在 RTR 檔案中進行特性變更。 |
ANYTIME |
僅傳送新的 RTR 檔案。 |
更新方法。 |
ANYTIME |
將更新的方法放入與舊方法不同的路徑。 |
安裝新的監視器程式。 |
WHEN_UNMONITORED |
僅覆寫監視器的舊版本。 |
更新方法。 新的 Update 和 Stop 方法與舊的 Start 方法不相容。 |
WHEN_OFFLINE |
將更新的方法放入與舊方法不同的路徑。 |
更新方法,並將新特性增加到 RTR 檔案。新方法需要新特性。 目標是如果資源群組在某節點上從離線狀態轉為線上狀態,則允許所在資源群組保持線上狀態,但阻止資源處於線上狀態。 |
WHEN_DISABLED |
覆寫舊版方法。 |
更新方法,並將新特性增加到 RTR 檔案。新方法不需要新特性。 |
ANYTIME |
覆寫舊版方法。 |
更新方法。新的 Fini 方法與舊的 Init 方法不相容。 |
WHEN_UNMANAGED |
將更新的方法放入與舊方法不同的路徑。 |
更新方法。未對 RTR 檔案進行任何變更。 |
不適用。未對 RTR 檔案進行任何變更。 |
覆寫舊版方法。由於您未對 RTR 檔案進行變更,資源無需註冊或升級。 |
「Sun Cluster Data Services Planning and Administration Guide for Solaris OS」中的「Upgrading a Resource Type」提供了叢集管理員如何升級資源類型的說明。若要讓叢集管理員升級修改的資源類型,請將這些說明以及本節說明的附加資訊結合起來。
通常,建立新的資源類型時,您需要提供包含以下內容的文件︰
叢集管理員在節點上安裝升級套裝軟體前必須進行的準備工作,如下所示︰
如果升級套裝軟體覆寫現有的方法,請指示叢集管理員在非叢集模式下重新啟動節點。
如果升級套裝軟體僅更新監視器程式碼而未變更方法程式碼,請告知叢集管理員保持節點在叢集模式下執行。還要告知叢集管理員關閉所有資源類型的監視功能。
如果升級套裝軟體僅更新 RTR 檔案,而未變更方法程式碼和監視器程式碼,請告知叢集管理員保持節點在叢集模式下執行。還要告知叢集管理員開啟所有資源類型的監視功能。
對叢集管理員解釋何時可以將資源升級至資源類型的新版本。叢集管理員在何種條件下可以升級資源類型,將視 RTR 檔案中資源各個版本的 #$upgrade_from 指令之可調性而定,如下所示︰
任何時候 (ANYTIME)
僅當資源未被監視時 (WHEN_UNMONITORED)
僅當資源離線時 (WHEN_OFFLINE)
僅當資源停用時 (WHEN_DISABLED)
僅當資源群組未被管理時 (WHEN_UNMANAGED)
此範例將顯示 #$upgrade_from 指令的可調性如何影響叢集管理員可以將資源升級為資源類型之新版本的條件。
#$upgrade_from "1.1" WHEN_OFFLINE #$upgrade_from "1.2" WHEN_OFFLINE #$upgrade_from "1.3" WHEN_OFFLINE #$upgrade_from "2.0" WHEN_UNMONITORED #$upgrade_from "2.1" ANYTIME #$upgrade_from "" WHEN_UNMANAGED
版本 |
叢集管理員何時可以升級資源 |
---|---|
1.1、1.2 或 1.3 |
僅當資源離線時 |
2.0 |
僅當資源未被監視時 |
2.1 |
任何時候 |
所有其他版本 |
僅當資源群組未被管理時 |
說明對升級時要求叢集管理員修改現有的資源特性之資源類型所做的任何變更。您可能需要進行的變更包含以下各項︰
您已變更的現有的資源類型特性之預設設定
您已介紹的資源類型之新的延伸特性
您已撤消的資源類型之現有特性
您已為資源類型宣告的標準特性集之變更
您已變更的資源特性 (如 min、max、arraymin、arraymax、default 以及 tunability) 的屬性
您已宣告的方法集之變更
您已變更的方法或故障監視器之實作