リソースタイプ登録 (RTR) ファイルには、リソースタイプの内容を記述します。リソースタイプは、Resource Group Manager (RGM) クラスタの制御下で動作するスケーラブルまたは高可用性サービスを表します。このファイルは、リソースタイプ実装の一部であり、クラスタ構成にリソースタイプを登録するための clresourcetype コマンドの入力ファイルとして使用されます。特定の型のリソースをクラスタ内で運用するには、事前に該当するリソースタイプを登録しておく必要があります。通常、RTR ファイルは /opt/cluster/lib/rgm/rtreg ディレクトリに存在します。
RTR ファイルに宣言する内容は、リソースタイプのリソースタイププロパティーおよびリソースプロパティーです。ファイルは、リソースタイププロパティーの宣言およびリソースプロパティーの宣言の 2 つのパートに分かれています。プロパティー名では、大文字と小文字が区別されません。
リソースタイププロパティーの宣言では、リソースタイプの実装情 (報該当する型のリソースを制御するため RGM が呼び出すコールバックメソッドのパスなど) を登録します。こうしたリソースタイププロパティーの大部分は、rt_reg ファイルに固定値として設定されます。これらのプロパティーは、該当する型のすべてのリソースで継承されます。
リソースタイプを実装する際には、リソースプロパティーに対する管理範囲を拡張するよう、カスタマイズすることも可能です。rt_reg ファイルの 2 番目のパートにエントリを記載するリリースプロパティーには、システム定義プロパティーと拡張プロパティーの 2 種類があります。
システム定義のリソースプロパティーは、型と意味が事前に定義されています。rt_reg ファイルを使うことで、システム定義のリソースプロパティーのデフォルト値、最大値、最小値などの属性を設定できます。rt_reg ファイルは、リソースタイプの実装によって完全に定義される拡張プロパティーを宣言するためにも使用できます。拡張プロパティーは、クラスタシステムが管理維持するリソースの構成データに追加する情報のリソースタイプを提供します。
rt_reg ファイルはリソースプロパティーのデフォルト値を設定しますが、実際に用いる値は個々のリソースごとに設定します。rt_reg ファイルのプロパティーに変数を使用する場合は、クラスタ管理者がその値を設定します。
リソースタイププロパティーの宣言では、多数のプロパティー値を指定します。
PROPERTY_NAME = "Value";
rt_reg ファイルで宣言可能なリソースタイププロパティーのリストについては、rt_properties(7) のマニュアルページを参照してください。ほとんどのプロパティーはデフォルト値を持っているか、またはオプションであるため、RTR ファイル内で不可欠な宣言は、タイプ名、START および STOP コールバックメソッドへのパス、RT_version だけです。
ファイル内に記載するプロパティーには、Resource_type プロパティーを最初に設定する必要があります。
リソースタイプ名の形式は vendor-id.RT-name:version です。
リソースタイプ名の 3 つのコンポーネントは、RTR ファイルで vendor-id、resource-type、および RT-version として指定されているプロパティーです。scrgadm コマンドでは、区切り文字としてピリオドとコロンを使用します。vendor-id 接頭辞はオプションですが、異なるベンダーの登録ファイル名が重複する場合は、ファイル名を区別するために使用することをお勧めします。vendor-id が確実に一意であるようにするには、そのリソースタイプを作成している企業の銘柄記号を使用します。
リソースプロパティーの宣言は多数のエントリから構成されます。個々のエントリは、列挙した属性値を括弧で囲みます。エントリ内に記載する属性については、リソースプロパティー名を最初に設定する必要があります。
システム定義プロパティーには、事前に定義されたタイプ属性と記述属性が含まれているため、これらの属性を rt_reg ファイルで宣言し直すことはできません。管理者が値を設定するときの範囲の制限、デフォルト値、および制約事項をシステム定義プロパティーで宣言できます。
システム定義プロパティーに設定できる属性は、property_attributes(7) のマニュアルページに一覧表示されています。システム定義プロパティーに指定できない属性については、表中にその旨記載されています。
rt_reg ファイルにエントリがあるシステム定義プロパティーは、r_properties(7) のマニュアルページに一覧表示されています。次のサンプルエントリでは、システム定義のリソースプロパティーである RETRY_COUNT を宣言しています。
{
PROPERTY = RETRY_COUNT;
MIN=0;
MAX=10;
DEFAULT=2;
TUNABLE = ANYTIME;
}
拡張プロパティーのエントリには、プロパティーの型を指定する必要があります。拡張プロパティーに設定できる属性は、property_attributes(7) のマニュアルページに一覧表示されています。
次のサンプルエントリでは、文字列型の拡張プロパティーである「ConfigDir」を宣言しています。TUNABLE 属性では、リソースの作成時にクラスタ管理者がプロパティー値を設定できることを示します。
{
PROPERTY = ConfigDir;
EXTENSION;
STRING;
DEFAULT="/";
TUNABLE = AT_CREATION;
}
rt_reg ファイルは、ASCII テキストファイルです。この中にはファイルの内容に関するコメントを記入しておくことができます。先に述べたように、このファイル内容は、リソースタイププロパティーの一覧記述とそのあとのリソースプロパティーの宣言という2 つのパートに分かれます。
空白には、半角スペース、タブ、改行、およびコメントが該当します。こうした空白は、トークンの前後に記入できます。ただし、引用符で囲まれたトークン内部にある半角スペースおよび記号 (#) については、空白とはみなされません。空白はトークン間の区切り記号の役割を果たし、それ以外は無視されます。
# 記号から直後の改行までの記述は、すべてコメントと見なされます。
#$ 記号から直後の改行までの記述は、すべて指令 とみなされます。指令は、RTR ファイルのリソースタイププロパティーの宣言セクションとリソースプロパティーの宣言セクションの間に記入する必要があります。指令を RTR ファイルのどこか別の場所に挿入すると、パーサーエラーが発生します。有効な指令は #$upgrade および #$upgrade_from のみです。これ以外の指令を記載した場合、構文解析の際にエラーとなります。
トークンを構成するものは、プロパティー名、プロパティー値および次の記号類です。
パラメータテーブルプロパティーを囲みます。
プロパティーおよび属性の終端を示します。
プロパティー名とプロパティー値、または属性名と属性値を区切ります。
値リストの値を区切ります。
ファイル内のプロパティー名キーワードは、大文字と小文字が区別されません。
プロパティーおよび属性の記述は、次の 3 つのいずれかの形式を取ります。
上記の表記形式で、角括弧 [ ] で囲まれている部分はオプションの項目です。つまり、プロパティー値は 1 つの property-value か、またはコンマで区切られた 2 つ以上の property-value のリストにできます。
プロパティーリストの最初のプロパティーには、リソースタイプの名前のみを記述する必要があります。
ブール型のプロパティーおよび属性は、次の構文で記述します。
最初の形式と 2 番目の形式は、どちらも boolean-property-name を TRUE に設定します。
リソースタイププロパティー名は、rt_properties(7) のマニュアルページに一覧表示されています。システム定義のプロパティーは、r_properties(7) のマニュアルページに一覧表示されています。
リソース宣言では任意の数のエントリを指定できます。個々のエントリは、列挙したリソースプロパティーの属性を括弧で囲みます。
{attribute-value-list}
各属性値リストは 1 つのリソースプロパティーに対する属性値で構成されます。その書式はプロパティー値の場合と同じですが、さらに型と属性を組み合わせた 2 つの形式が追加されます。
type-attribute-value の構文は、拡張プロパティーのデータ型を、値 type-attribute-value を持つように宣言します。これは、boolean-property-name によって指定されたプロパティーが TRUE の値を持つように定義する最初の形式の boolean-property-name とは異なります。
たとえば TUNABLE 属性の場合、次のいずれかの値をとることができます。FALSE または NONE、AT_CREATION、TRUE または ANYTIME、およびWHEN_DISABLED。TUNABLE 属性は、下記のように記述することもできます。
TUNABLE;
この場合の値は ANYTIME となります。
次は、BNF 文法に準拠した rt_reg ファイルの構文解説です。実際の 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(7) を参照してください。
|
attributes(7)、property_attributes(7)、r_properties(7)、rt_properties(7)