Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

设置资源和资源类型特性

Sun Cluster 提供了一组用来定义数据服务静态配置的资源类型特性和资源特性。资源类型特性用来指定资源的类型及其版本、API 的版本等,还可以用来指定指向每个回调方法的路径。资源类型特性中列出了所有的资源类型特性。

资源特性(例如,Failover_modeThorough_probe_interval)和方法超时也定义该资源的静态配置。动态资源特性(例如 Resource_stateStatus)反映被管理资源的活动状态。资源特性中介绍了各种资源特性。

资源类型和资源特性在资源类型注册 (RTR) 文件中声明,该文件是数据服务的基本组件。RTR 文件用来在群集管理员使用 Sun Cluster 注册数据服务时定义数据服务的初始配置。

建议您使用 Agent Builder 生成数据服务的 RTR 文件,因为 Agent Builder 声明了一组对于任何数据服务来说既有用又必需的特性。例如,有些特性(如 Resource_type)必须在 RTR 文件中声明,否则数据服务的注册将失败。其他特性尽管没有此方面的要求,但如果不在 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 文件中定义新的资源特性,即所谓的扩展特性。资源特性属性中列出了用于更改和定义资源特性的属性。在 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 秒。资源特性属性中包含一个资源特性属性的列表。

下一组资源特性用于定义在数据服务中有特定用法的特性。

{
        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_intervalProbe_timeout

用于控制故障监视器本身的重启操作,而不是服务器守护程序的重启操作。

Child_mon_level

用于设置 PMF 要完成的监视操作的级别。有关详细信息,请参见 pmfadm(1M)

您可以在以 User added code 注释分隔的区域内创建其他扩展特性。