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

設定資源屬性和資源類型屬性

Sun Cluster 提供一組資源類型屬性和資源屬性,您可以使用這些屬性定義資料服務的靜態配置。 資源類型屬性指定資源的類型、資源的版本、API 的版本等,同時還指定每個回呼方法的路徑。 表 A–1 列出了全部資源類型屬性。

資源屬性 (如 Failover_modeThorough_probe_interval) 和方法逾時還定義了資源的靜態配置。 動態資源屬性 (如 Resource_stateStatus) 反映受管理資源的作用中狀態。 表 A–2 說明了資源屬性。

您可在資源類型註冊 (RTR) 檔案中宣告資源類型和資源屬性,該檔案是資料服務必不可少的元件。 RTR 檔案在叢集管理員將資料服務註冊到 Sun Cluster 時定義資料服務的初始配置。

因為 Agent Builder 宣告的屬性集對任意資料服務都是有用且必需的,所以建議您使用 Agent Builder 產生資料服務的 RTR 檔案。 例如,必須在 RTR 檔案中宣告某些屬性 (如 Resource_type),否則資料服務的註冊將會失敗。 儘管其他屬性非必需,但除非系統管理員在 RTR 檔案中對其進行宣告,否則將無法使用;然而有些屬性無論您是否對其進行宣告都可用,這是因為 RGM 定義它們並提供預設值。 為了避免此層複雜性,您可簡單地使用 Agent Builder 來保證產生正確的 RTR 檔案。 如果需要,您可以稍後編輯 RTR 檔案來變更特定值。

本小節的其餘部分將為您完整介紹一個 Agent Builder 建立的 RTR 檔案範例。

宣告資源類型屬性

叢集管理員無法配置您在 RTR 檔案中宣告的資源類型屬性。 它們成為該資源類型永久配置的一部分。


註解 –

一種資源類型屬性 Installed_nodes 可由系統管理員配置。 實際上,它僅可由系統管理員配置,您無法在 RTR 檔案中宣告它。


資源類型宣告的語法為:


property_name = value;

註解 –

RGM 處理屬性名稱時不區分大小寫。 在 Sun 提供的 RTR 檔案中,除了方法名稱,用於屬性的慣例是名稱的第一個字母大寫,而其餘的字母小寫。 方法名稱以及屬性性質包含的都是大寫字母。


以下為資料服務範例 (smpl) 的 RTR 檔案中的資源類型宣告:

# Sun Cluster Data Services Builder template version 1.0
# Registration information and resources for smpl
#
#NOTE: Keywords are case insensitive, i.e., you can use
#any capitalization style you prefer.
#
Resource_type = "smpl";
Vendor_id = SUNW;
RT_description = "Sample Service on Sun Cluster";

RT_version ="1.0"; 
API_version = 2;
Failover = TRUE;

Init_nodes = RG_PRIMARIES;

RT_basedir=/opt/SUNWsmpl/bin;

Start           =    smpl_svc_start;
Stop            =    smpl_svc_stop;

Validate        =    smpl_validate;
Update          =    smpl_update;

Monitor_start   =    smpl_monitor_start;
Monitor_stop    =    smpl_monitor_stop;
Monitor_check   =    smpl_monitor_check;

提示 –

您必須宣告 Resource_type 屬性為 RTR 檔案中的第一個項目。 否則,資源類型的註冊將會失敗。


第一組資源類型宣告提供資源類型的基本資訊,如下所示:

Resource_typeVendor_id

提供資源類型的名稱。 您可以單獨使用 Resource_type 屬性來指定 (smpl);或使用 Vendor_id 作為前綴,並用「.」將其 與資源類型分隔 (SUNW.smpl),如範例中所示。 如果您使用 Vendor_id,請將其作為公司定義資源類型的證券符號。 資源類型名稱在叢集中必須唯一。


註解 –

依慣例,資源類型名稱 (Resource_typeVendor_id) 將作為套件名稱。 由於套件名稱被限制為最多使用九個字元,因此儘管 RGM 不執行此限制,將這兩個屬性的字元總數限制為九個或更少也是個好主意。 另一方面,Agent Builder 明確地從資源類型名稱產生套件名稱,因此它確實執行九個字元的限制。


Rt_version

識別資料服務範例的版本。

API_version

識別 API 的版本。 例如,API_version = 2 表示資料服務在 Sun Cluster 版本 3.0 下執行。

Failover = TRUE

指示資料服務無法在可以同時於多個節點上連線的資源群組中執行,即指定故障轉移資料服務。 請參閱將資料服務傳送至叢集,以取得詳細資訊。

StartStopValidate

提供由 RGM 呼叫的各個回呼方法程式的路徑。 這些路徑為 RT_basedir 所指定目錄的相對路徑。

其他資源類型宣告提供配置資訊,如下所示:

Init_nodes = RG_PRIMARIES

指定 RGM 僅在可主控資料服務的節點上呼叫 InitBootFiniValidate 方法。 由 RG_PRIMARIES 指定的節點是安裝了資料服務的所有節點的子集。 將該值設定為 RT_INSTALLED_NODES,以指定 RGM 在安裝資料服務的所有節點呼叫這些方法。

RT_basedir

指向 /opt/SUNWsample/bin 作為完整相對路徑 (如回呼方法路徑) 的目錄路徑。

StartStopValidate

提供由 RGM 呼叫的各個回呼方法程式的路徑。 這些路徑為 RT_basedir 所指定目錄的相對路徑。

宣告資源屬性

就像宣告資源類型屬性一樣,您在 RTR 檔案中宣告資源屬性。 依慣例,在 RTR 檔案中資源屬性宣告緊跟在資源類型宣告之後。 資源宣告的語法為一組由大括弧包含的性質值對:


{
    Attribute = Value;
    Attribute = Value;
             .
             .
             .
    Attribute = Value;
}

對於 Sun Cluster 提供的資源屬性 (所謂的系統定義的屬性),您可在 RTR 檔案中變更特定性質。 例如,Sun Cluster 為每個回呼方法提供方法逾時屬性,並指定預設值。 在 RTR 檔案中,您可以指定不同預設值。

您還可以使用 Sun Cluster 提供的屬性性質集,在 RTR 檔案中定義新的資源屬性,即所謂的延伸屬性。 表 A–4 列出了用於變更和定義資源屬性的性質。 在 RTR 檔案中,延伸屬性宣告緊跟在系統定義屬性宣告之後。

第一組系統定義的資源屬性指定回呼方法的逾時值:

...

# Resource property declarations appear as a list of bracketed
# entries after the resource-type declarations. The property 
# name declaration must be the first attribute after the open
# curly bracket of a resource property entry.
#
# Set minimum and default for method timeouts.
{
        PROPERTY = Start_timeout;
        MIN=60;
        DEFAULT=300;
}

{
        PROPERTY = Stop_timeout;
        MIN=60;
        DEFAULT=300;
}
{
        PROPERTY = Validate_timeout;
        MIN=60;
        DEFAULT=300;
}
{
        PROPERTY = Update_timeout;
        MIN=60;
        DEFAULT=300;
}
{
        PROPERTY = Monitor_Start_timeout;
        MIN=60;
        DEFAULT=300;
}
{
        PROPERTY = Monitor_Stop_timeout;
        MIN=60;
        DEFAULT=300;
{
        PROPERTY = Monitor_Check_timeout;
        MIN=60;
        DEFAULT=300;
}

屬性 (PROPERTY = value) 的名稱必須是每個資源屬性宣告的第一個性質。 在 RTR 檔案中,您可以在屬性性質定義的限制內配置資源屬性。 例如,範例中每個方法逾時的預設值為 300 秒。 管理員可以變更此值;但允許的最小值 (由 MIN 性質指定) 為 60 秒。 請參閱表 A–4,以取得資源屬性性質的完整清單。

下一組資源屬性定義在資料服務中具有特定用途的屬性。

{
        PROPERTY = Failover_mode;
        DEFAULT=SOFT;
        TUNABLE = ANYTIME;
}
{
        PROPERTY = Thorough_Probe_Interval;
        MIN=1;
        MAX=3600;
        DEFAULT=60;
        TUNABLE = ANYTIME;
}

# The number of retries to be done within a certain period before concluding 
# that the application cannot be successfully started on this node.
{
        PROPERTY = Retry_Count;
        MAX=10;
        DEFAULT=2;
        TUNABLE = ANYTIME; 
}

# Set Retry_Interval as a multiple of 60 since it is converted from seconds
# to minutes, rounding up. For example, a value of 50 (seconds)
# is converted to 1 minute. Use this property to time the number of 
# retries (Retry_Count).
{
        PROPERTY = Retry_Interval;
        MAX=3600;
        DEFAULT=300;
        TUNABLE = ANYTIME;
}

{
        PROPERTY = Network_resources_used;
        TUNABLE = WHEN_DISABLED;
        DEFAULT = "";
}
{
        PROPERTY = Scalable;
        DEFAULT = FALSE;
        TUNABLE = AT_CREATION;
}
{
        PROPERTY = Load_balancing_policy;
        DEFAULT = LB_WEIGHTED;
        TUNABLE = AT_CREATION;
}
{
        PROPERTY = Load_balancing_weights;
        DEFAULT = "";
        TUNABLE = ANYTIME;
}
{
        PROPERTY = Port_list;
        TUNABLE = AT_CREATION;
        DEFAULT = ;
}

這些資源屬性宣告新增了 TUNABLE 性質,該性質會限制系統管理員可以變更其值的機會。 AT_CREATION 表示管理員僅能在建立資源時指定值,而以後則無法變更該值。

對於這些屬性中的大多數,您可以接受由 Agent Builder 產生的預設值,除非您需要變更這些值。 以下是有關這些屬性的資訊 (如需其他資訊,請參閱資源屬性r_properties(5) 線上說明手冊):

Failover_mode

指示在 StartStop 方法失敗的情況下,RGM 是應該重新確定資源群組的位置,還是中斷該節點。

Thorough_probe_intervalRetry_countRetry_interval

在故障監視器中使用。 Tunable 等同於 Anytime,因此如果故障監視器沒有以最佳方式運作,系統管理員可對其進行調整。

Network_resources_used

資料服務使用的邏輯主機名稱或共用位址資源的清單。 Agent Builder 宣告此屬性,以便系統管理員可在配置資料服務時指定一系列的資源 (如果有的話)。

Scalable

設定為 FALSE,以指示此資源不使用叢集網路 (共用位址) 工具。 此設定與設定為 TRUE (表示故障轉移服務) 的資源類型 Failover 屬性一致。 請參閱將資料服務傳送至叢集實施回呼方法,以取得有關如何使用此屬性的其他資訊。

Load_balancing_policyLoad_balancing_weights

雖然會自動宣告這些屬性,但在故障轉移資源類型中沒有用。

Port_list

識別伺服器偵聽通訊埠的清單。 Agent Builder 宣告此屬性,以便系統管理員可在配置資料服務時指定一系列的通訊埠。

宣告延伸屬性

範例 RTR 檔案的結尾部分為延伸屬性,如以下清單所示

# Extension Properties
#

# The cluster administrator must set the value of this property to point to the 
# directory that contains the configuration files used by the application. 
# For this application, smpl, specify the path of the configuration file on 
# PXFS (typically named.conf).
{
        PROPERTY = Confdir_list;
        EXTENSION;
        STRINGARRAY;
        TUNABLE = AT_CREATION;
        DESCRIPTION = "The Configuration Directory Path(s)";
}

# The following two properties control restart of the fault monitor.
{
        PROPERTY = Monitor_retry_count;
        EXTENSION;
        INT;
        DEFAULT = 4;
        TUNABLE = ANYTIME;
        DESCRIPTION = "Number of PMF restarts allowed for fault monitor.";
}
{
        PROPERTY = Monitor_retry_interval;
        EXTENSION;
        INT;
        DEFAULT = 2;
        TUNABLE = ANYTIME;
        DESCRIPTION = "Time window (minutes) for fault monitor restarts.";
}
# Time out value in seconds for the probe.
{
        PROPERTY = Probe_timeout;
        EXTENSION;
        INT;
        DEFAULT = 120;
        TUNABLE = ANYTIME;
        DESCRIPTION = "Time out value for the probe (seconds)";
}

# Child process monitoring level for PMF (-C option of pmfadm).
# Default of -1 means to not use the -C option of pmfadm.
# A value of 0 or greater indicates the desired level of child-process.
# monitoring.
{
        PROPERTY = Child_mon_level;
        EXTENSION;
        INT;
        DEFAULT = -1;
        TUNABLE = ANYTIME;
        DESCRIPTION = “Child monitoring level for PMF";
}
# User added code -- BEGIN VVVVVVVVVVVV
# User added code -- END   ^^^^^^^^^^^^

Agent Builder 會建立一些對大多數資料服務都有用的延伸屬性,如下所示。

Confdir_list

指定應用程式配置目錄的路徑,此路徑資訊對許多應用程式均有用。 系統管理員可在配置資料服務時提供此目錄的位置。

Monitor_retry_countMonitor_retry_interval Probe_timeout

控制故障監視器自身而非伺服器常駐程式的重新啟動。

Child_mon_level

設定 PMF 執行的監視層次。 請參閱 pmfadm(1M),以取得詳細資訊。

您可以在使用者加入的程式碼註釋分割的區域內建立其他延伸屬性。