资源类型注册 (resource type registration, RTR) 文件介绍了资源类型。资源类型表示在资源组管理器 (Resource Group Manager, RGM) 群集设备控制下运行的高可用性或可伸缩服务。该文件是资源类型实现的一部分,用作输入文件以使 scrgadm(1M) 命令在群集配置中注册资源类型。注册资源类型是创建要在群集中运行的此类资源的先决条件。按照约定,RTR 文件驻留在 /opt/cluster/lib/rgm/rtreg 目录下。
RTR 文件声明资源类型的资源类型属性和资源属性。该文件分为两部分,一部分是资源类型属性的声明,另一部分是资源属性的声明。请注意,属性名称的识别不区分大小写。
资源类型属性的声明提供有关资源类型实现的信息,例如,RGM 为控制此类资源所调用的回调方法的路径。大多数资源类型属性在 rt_reg 文件中都具有固定的值集。这些属性由该类型的所有资源继承。
资源类型实现器还可以定制和扩展资源属性的管理视图。可在 rt_reg 文件的第二部分中存在条目的资源属性有两种:系统定义的属性和扩展属性。
系统定义的资源属性具有预定的类型和语义。rt_reg 文件可用于设置特性,例如,系统定义的资源属性的默认值、最小值和最大值。rt_reg 文件还可以用于声明由资源类型实现完全定义的扩展属性。扩展属性为资源类型提供了一种用于向群集系统所维护和管理的资源的配置数据中添加信息的方式。
rt_reg 文件可设置资源属性的默认值,但实际值是在各个资源中设置的。rt_reg 文件中的属性可以是可由群集管理员设置为不同值并能进行调整的变量。
资源类型属性声明包括多个属性值分配。
PROPERTY_NAME = "Value";
有关可在 rt_reg 文件中声明的资源类型属性的列表,请参见 rt_properties(5) 手册页。由于大多数属性均具有默认值或为可选属性,因此 RTR 文件中所必需的声明仅为类型名称、START 和 STOP 回调方法的路径和 RT_version。
请注意,该文件中的第一个属性必须为 Resource_type 属性。
资源类型名称的格式为 vendor-id.RT-name:version。
资源类型名称的三个组成部分是在 RTR 文件中指定为 vendor-id、resource-type 和 RT-version 的属性。scrgadm 命令用于插入句点和冒号分界符。虽然为可选项,但建议使用 vendor-id 前缀区分由不同供应商提供的同一名称的两个注册文件。要确保 vendor-id 唯一,请使用要创建资源类型的公司的股票代码。
资源属性声明包括多个条目,每个条目均为特性值分配情况的括号列表。条目中的第一个特性必须为资源属性名称。
系统定义的属性具有预定的类型和描述特性,因此,不能在 rt_reg 文件中重新声明这些特性。可以为系统定义的属性声明范围限制、默认值以及对管理员何时可设置值的约束。
可为系统定义的属性设置的特性列在 property_attributes(5) 手册页中。在该表中还说明了不适用于系统定义的属性的特性。
可在 rt_reg 文件中具有条目的系统定义的属性列在 r_properties(5) 手册页中。以下是系统定义的 RETRY_COUNT 资源属性的样例条目。
{
PROPERTY = RETRY_COUNT;
MIN=0;
MAX=10;
DEFAULT=2;
TUNABLE = ANYTIME;
}
扩展属性的条目必须指出属性的类型。可为扩展属性设置的特性列在 property_attributes(5) 手册页中。
以下是名为 "ConfigDir "(这是字符串类型)的扩展属性的样例条目。TUNABLE 特性表明群集管理员可在创建资源时设置属性的值。
{
PROPERTY = ConfigDir;
EXTENSION;
STRING;
DEFAULT="/";
TUNABLE = AT_CREATION;
}
rt_reg 文件是一个 ASCII 文本文件。它可包含用于说明文件内容的注释。这些内容是上面介绍的两个部分,即资源类型属性列表,后跟资源属性声明。
空格可以是空白、制表符、换行符或注释。标记前后可以存在空格。在带引号的值标记中发现空白和井号 (#) 时,不会将其视为空格。空格用于分隔标记,否则可以忽略。
注释以 # 开始,以遇到的第一个换行符结束,包括第一个换行符。
指令以 #$ 开始,以遇到的第一个换行符结束,包括第一个换行符。指令必须出现在 RTR 文件中的资源类型属性声明部分和资源属性声明部分之间。在 RTR 文件的任何其他位置插入的指令都将产生解析器错误。有效的指令只有 #$upgrade 和 #$upgrade_from 。任何其他指令都将产生解析器错误。
标记为属性名称、属性值以及以下项:
括住参数表属性
终止属性和特性
分隔属性名称和属性值或特性名称和特性值
分隔值列表中的值
文件中属性名称的关键字的识别不区分大小写。
属性和特性具有以下三种格式之一。
|
在上面的格式中,方括号 [ ] 括的是可选项。即,属性值可以是一个 property-value,也可以是由逗号分隔的两个或多个 property-value 的列表。
属性列表中的第一个属性必须是简单资源类型名称。
布尔值属性和特性具有以下语法:
|
第一种和第二种格式均将 boolean-property-name 设置为 TRUE。
资源类型属性名称列在 rt_properties(5) 手册页中。系统定义的属性列在 r_properties(5) 手册页中。
资源声明包括任意数量的条目,每个条目均为资源属性特性的括号列表。
{attribute-value-list}
每个 attribute-value-list 包括资源属性的特性值,除了两种 type-attribute 格式外,这些特性值均采用供属性值使用的同一语法。
|
type-attribute-value 语法将扩展属性的数据类型声明为具有 type-attribute-value 值。它不同于 boolean-property-name 的第一种格式,后者将名为 boolean-property-name 的属性定义为具有 TRUE 值。
例如,TUNABLE 属性可具有以下值之一:FALSE 或 NONE、 AT_CREATION、TRUE 或 ANYTIME 以及 WHEN_DISABLED。当 TUNABLE 属性采用语法:
TUNABLE;
时,它将获取 ANYTIME 值。
下面介绍了 rt_reg 文件的语法以及类似 BNF 的语法。尽管对 rt_reg 文件中关键字的实际识别不区分大小写,但是非终端关键字是小写的,终端关键字是大写的。在行的开头位于非终端后面的冒号 (:) 表示语法产生式。语法产生式的备用右侧在行中表示为以竖直条 (|) 开头。变量终端标记以尖括号表示,注释括在圆括号内。语法产生式右侧中的其他标点(例如分号 (;)、等号 (=) 和花括号 ({}))均为文本。
注释的格式为:
COMMENT : # anything but NEWLINE NEWLINE
注释可出现在任意标记的后面。注释被视为空格。
rt_reg_file : Resource_type = value ; proplist upgradesect paramtable
proplist : (NONE: empty)
| proplist rtproperty
rtproperty : rtboolean_prop ;
| rtvalue_prop ;
rtboolean_prop : SINGLE_INSTANCE
| FAILOVER | RT_SYSTEM
rtvalue_prop : rtprop = value
| PKGLIST = valuelist
rtprop : RT_BASEDIR
| RT_VERSION
| API_VERSION
| INIT_NODES
| START
| STOP
| VALIDATE
| UPDATE
| INIT
| FINI
| BOOT
| MONITOR_START
| MONITOR_STOP
| MONITOR_CHECK
| PRENET_START
| POSTNET_STOP
| RT_DESCRIPTION
| VENDOR_ID
| rtboolean_prop (booleans may have explicit assignments.)
value : contiguous-non-ws-non-;-characters
| "anything but quote"
| TRUE
| FALSE
| ANYTIME
| WHEN_DISABLED
| AT_CREATION
| RG_PRIMARIES
| RT_INSTALLED_NODES
| (NONE: Empty value)
valuelist : value
| valuelist , value
upgradesect : (empty)
| #$UPGRADE upgradelist
upgradelist : (empty)
| upgradelist #$UPGRADE_FROM rt_version upgtunability
upgtunability : ANYTIME
| AT_CREATION
| WHEN_DISABLED
| WHEN_OFFLINE
| WHEN_UNMANAGED
| WHEN_UNMONITORED
paramtable : (empty)
| paramtable parameter
parameter : { pproplist }
pproplist : PROPERTY = value ; (property name must come first)
| pproplist pproperty
pproperty : pboolean_prop ;
| pvalue_prop ;
| typespec ;
pvalue_prop : tunable_prop
| pprop = value
| pprop = (NONE: no value setting)
| DEFAULT = valuelist
pprop : DESCRIPTION
| MIN
| MAX
| MINLENGTH
| MAXLENGTH
| ARRAY_MINSIZE
| ARRAY_MAXSIZE
| pboolean_prop
tunable_prop : TUNABLE
| TUNABLE = AT_CREATION
| TUNABLE = ANYTIME
| TUNABLE = WHEN_DISABLED
| TUNABLE = TRUE
| TUNABLE = FALSE
| TUNABLE = NONE
typespec : INT
| BOOLEAN
| STRING
| STRINGARRAY
| ENUM { valuelist }
以下是简单示例资源类型的注册文件。
#
# Registration information for example resource type
#
Resource_type = example_RT;
Vendor_id = SUNW;
RT_Version = 2.0
RT_Basedir= /opt/SUNWxxx;
START = bin/example_service_start;
STOP = bin/example_service_stop;
#$upgrade
#$upgrade_from "1.0" when_unmonitored
#
# Set range and defaults for method timeouts and Retry_count.
#
{ Property = START_TIMEOUT; Tunable; MIN=60; DEFAULT=300; }
{ Property = STOP_TIMEOUT; Tunable; MIN=60; DEFAULT=300; }
{ Property = Retry_count; Tunable; MIN=1; MAX=20; DEFAULT=10; }
#
# An extension property that can be set at resource creation
#
{ Property = LogLevel;
Extension;
enum { OFF, TERSE, VERBOSE };
Default = TERSE;
Tunable = AT_CREATION;
Description = "Controls the detail of example_service logging";
}
有关下列属性的说明,请参见 attributes(5):
|
scrgadm(1M)、attributes(5)、rt_properties(5)、r_properties(5)、property_attributes(5)