Sun Cluster 3.0 U1 データサービス開発ガイド

リソースとリソースタイププロパティの設定

Sun Cluster は、データサービスの静的な構成を定義するためのリソースタイププロパティおよびリソースプロパティのセットを提供します。リソースタイププロパティは、リソースのタイプ、そのバージョン、API のバージョンなどを指定できると同時に、各コールバックメソッドへのパスも指定できます。表 A-1 に、すべてのリソースタイププロパティのリストを示します。

リソースプロパティ (Failover_modeThorough_probe_intervalなど) やメソッドタイムアウトも、リソースの静的な構成を定義します。動的なリソースプロパティ (Resource_stateStatus など) は、管理対象のリソースの活動状況を反映します。リソースプロパティについては、表 A-2 を参照してください。

リソースタイプおよびリソースプロパティは、データサービスの重要な要素であるリソースタイプ登録 (RTR) ファイルで宣言します。RTR ファイルは、クラスタ管理者が Sun Cluster でデータサービスを登録するときの、データサービスの初期構成を定義します。

Agent Builder が宣言するプロパティセットはどのようなデータサービスにとっても有用かつ必須なものであるため、独自のデータサービス用の RTR ファイルを生成するときは、Agent Builder を使用することを推奨します。たとえば、ある種のプロパティ (Resource_type など) が RTR ファイルで宣言されていない場合、データサービスの登録は失敗します。必須ではなくても、その他のプロパティも RTR ファイルで宣言されていなければ、システム管理者はそれらのプロパティを利用することはできません。いくつかのプロパティは RTR ファイルで宣言されていなくても使用することができますが、これは RGM がそのプロパティを定義して、そのデフォルト値を提供しているためです。このような複雑さを回避するためにも、Agent Builder を使用して、適切な RTR ファイルを生成するようにしてください。必要であれば、Agent Builder で生成した後に、RTR ファイルを編集すれば特定の値を変更できます。

以降では、Agent Builder で作成した RTR ファイルの例を示します。

リソースタイププロパティの宣言

クラスタ管理者は、RTR ファイルで宣言されているリソースタイププロパティを構成することはできません。このようなリソースタイププロパティは、リソースタイプの恒久的な構成の一部を形成します。


注 -

Installed_nodes というリソースタイププロパティは、システム管理者が構成できます。事実、Installed_nodes はシステム管理者が構成できる唯一のリソースタイププロパティであり、RTR ファイルでは宣言できません。


次に、リソースタイプ宣言の構文を示します。


property_name = value;

注 -

RGM はプロパティ名の大文字と小文字を区別します。Sun が提供する RTR ファイルのプロパティに対する命名規則では、名前の最初の文字が大文字で、残りが小文字です (ただし、メソッド名は例外です)。メソッド名は (プロパティ属性と同様に) すべて大文字です。


次に、サンプルのデータサービス (smpl) 用の RTR ファイルにおけるリソースタイプ宣言を示します。

# Sun Cluster Data Services Builder テンプレートバージョン 1.0
# smpl 用の登録情報とリソース
#
#注: キーワードには大文字と小文字の区別がある。つまり、
#どのような大文字スタイルを使用してもかまわない。
#
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;

ヒント -

RTR ファイルの最初のエントリには、Resource_type プロパティを宣言する必要があります。宣言しないと、リソースタイプの登録は失敗します。


リソースタイプ宣言の最初のセットは、次のようなリソースタイプについての基本的な情報を提供します。

リソースタイプ宣言の残りのセットは、次のような構成情報を提供します。

リソースプロパティの宣言

リソースタイププロパティと同様に、リソースプロパティも RTR ファイルで宣言します。便宜上、リソースプロパティ宣言は RTR ファイルのリソースタイププロパティ宣言の後に行います。リソース宣言の構文では、一連の属性と値のペアを記述して、全体を中括弧で囲みます。


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

Sun Cluster が提供するリソースプロパティ (つまり、「システム定義プロパティ」) の場合、特定の属性は RTR ファイルで変更できます。たとえば、Sun Cluster はコールバックメソッドごとにメソッドタイムアウトプロパティを定義して、そのデフォルト値を提供します。RTR ファイルを使用すると、異なるデフォルト値を指定できます。

Sun Cluster が提供するプロパティ属性を使用することにより、RTR ファイル内に新しいリソースプロパティ (つまり、「拡張プロパティ」) を定義することもできます。表 A-4 に、リソースプロパティを変更および定義するための属性を示します。拡張プロパティ宣言は RTR ファイルのシステム定義プロパティ宣言の後に行います。

システム定義リソースプロパティの最初のセットでは、コールバックメソッドのタイムアウト値を指定します。

...
# リソースプロパティ宣言は中括弧で囲まれたリストであり、
# リソースタイププロパティ宣言の後で宣言する。
# プロパティ名宣言は、リソースプロパティエントリの左中括弧の
# 直後にある最初の属性でなけれならない。
#
# メソッドタイムアウト用の最小値とデフォルト値を設定する。
{
        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;
}
# ある期限内に再試行する回数。この回数を超えると、
# 当該ノード上ではアプリケーションが起動できないと判断される。
{
        PROPERTY = Retry_Count;
        MAX=10;
        DEFAULT=2;
        TUNABLE = ANYTIME; 
}

# Retry_Interval に 60 の倍数を設定する。
# この値は秒から分に変換され、切り上げられる。
# たとえば、50 秒は 1 分に変換される。このプロパティを使用して、
# 再試行回数 (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) のマニュアルページを参照してください)。

拡張プロパティの宣言

次に、RTR ファイルの最後の例として、拡張プロパティを示します。

# 拡張プロパティ
#
# クラスタ管理者は、このプロパティに値を設定して、アプリケーション
# が使用する構成ファイルが格納されているディレクトリを指定する
# 必要がある。このアプリケーション (smpl) の場合、PXFS 上に
# ある構成ファイル (通常は、named.conf) のパスを指定する。
{
	PROPERTY = Confdir_list;
	EXTENSION;
	STRINGARRAY;
	TUNABLE = AT_CREATION;
	DESCRIPTION = "The Configuration Directory Path(s)";
}

# 次の 2 つのプロパティは、障害モニターの再起動を制御する。
{
        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.";
}
# 検証用のタイムアウト値 (秒)。
{
        PROPERTY = Probe_timeout;
        EXTENSION;
        INT;
        DEFAULT = 30;
        TUNABLE = ANYTIME;
        DESCRIPTION = "Time out value for the probe (seconds)";
}

# PMF 用の子プロセス監視レベル (pmfadm の -C オプション)。
# デフォルトの -1 は、pmfadm の -C オプションを使用しないこと
# を示す。
# 0 より大きな値は、目的の子プロセス監視レベルを示す。
{
        PROPERTY = Child_mon_level;
        EXTENSION;
        INT;
        DEFAULT = -1;
        TUNABLE = ANYTIME;
        DESCRIPTION = "Child monitoring level for PMF";
}
# ユーザー追加コード -- BEGIN VVVVVVVVVVVV
# ユーザー追加コード -- END   ^^^^^^^^^^^^

次に示すように、Ageng Builder はほとんどのデータサービスにとって有用な拡張プロパティをいくつか作成します。

「ユーザー追加コード」というコメント文で囲まれた部分に、追加の拡張プロパティを作成できます。