Sun Cluster データサービス開発ガイド (Solaris OS 版)

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

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

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

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

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

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

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

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


注 –

リソースタイププロパティー Installed_nodes は、クラスタ管理者のみが構成できます。RTR ファイルでは Installed_nodes を宣言できません。


リソースタイプ宣言の構文は次のようになります。

property-name = value;

注 –

リソースグループ、リソース、およびリソースタイプのプロパティー名は大文字と小文字が区別されません。プロパティー名を指定する際には、大文字と小文字を任意に組み合わせることができます。


次に、サンプルのデータサービス (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;

ヒント –

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


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

Resource_type および Vendor_id

リソースタイプの名前を提供します。リソースタイプ名は Resource_type プロパティー (この例では「smpl」) 単独で指定できます。Vendor_id プロパティーを接頭辞として使用し、リソースタイプ (この例では「SUNW.smpl」) との区切りにピリオド (.) を使用することもできます。Vendor_id を使用する場合、リソースタイプを定義する企業の略号にします。リソースタイプ名はクラスタ内で一意である必要があります。


注 –

便宜上、リソースタイプ名 (vendoridApplicationname) はパッケージ名として使用されます。Solaris 9 OS 以降では、ベンダー ID とアプリケーション名の両方を合わせて 10 文字以上を指定できます。

一方、Agent Builder はどの場合でもリソースタイプ名からパッケージ名を系統だてて生成します。つまり、Agent Builder は 9 文字の制限を適用します。


RT_description

リソースタイプの簡潔な説明です。

RT_version

サンプルデータサービスのバージョンです。

API_version

API のバージョンです。たとえば、API_version = 2 は、データサービスを Sun Cluster 3.0 以降の任意のバージョンの Sun Cluster にインストールできることを示します。API_version = 7 は、データサービスを Sun Cluster 3.2 以降の 任意のバージョンの Sun Cluster にインストールできることを示します。ただし、API_version = 7 は、Sun Cluster 3.2 よりも前にリリースされたどのバージョンの Sun Cluster にもデータサービスをインストールできないことも示します。このプロパティーについては、「資源タイプのプロパティー」API_version の項目で詳しく説明しています。

Failover = TRUE

データサービスが、複数のノードまたはゾーン上で同時にオンラインにできるリソースグループ上では実行できないことを示します。つまり、この宣言はフェイルオーバーデータサービスを指定しています。このプロパティーは、「資源タイプのプロパティー」Failover のエントリでより詳細に説明されています。

StartStop Validate

RGM によって呼び出されるコールバックメソッドプログラムのパスを提供します。これらのパスは、RT_basedir で指定されたディレクトリからの相対パスです。

残りのリソースタイプ宣言は、構成情報を提供します。

Init_nodes = RG_PRIMARIES

データサービスをマスターできるノードまたはゾーン上でのみ、RGM が InitBootFini、および Validate メソッドを呼び出すことを指定します。RG_PRIMARIES で指定されたノードまたはゾーンは、データサービスがインストールされているすべてのノードまたはゾーンのサブセットです。この値に RT_INSTALLED_NODES を設定した場合、データサービスがインストールされているすべてのノードまたはゾーン上で、RGM が上記メソッドを呼び出すことを指定します。

RT_basedir

コールバックメソッドパスのような完全な相対パスとして、/opt/SUNWsample/bin をポイントします。

StartStop Validate

RGM によって呼び出されるコールバックメソッドプログラムのパスを提供します。これらのパスは、RT_basedir で指定されたディレクトリからの相対パスです。

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

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

{
    attribute = value;
    attribute = value;
             .
             .
             .
    attribute = value;
}

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

RGM メソッドコールバックがタイムアウトすると、メソッドのプロセスツリーが、SIGTERM シグナルではなく、SIGABRT シグナルによって消去されます。結果として、プロセスグループのすべてのメンバーが、/var/cluster/core ディレクトリにコアダンプファイルを生成します。このコアダンプファイルは、メソッドがタイムアウトを超過した理由を判定できるように生成されます。


注 –

新しいプロセスグループを作成するデータサービスメソッドを書かないでください。データサービスメソッドで新しいプロセスグループを作成する必要がある場合は、SIGTERM および SIGABRT シグナルのシグナルハンドラを書きます。また、シグナルハンドラは、プロセスを終了する前に、単数または複数の子プロセスグループに SIGTERM または SIGABRT シグナルを転送する必要があります。これらのシグナルのシグナルハンドラを書くと、使用するメソッドによって生成されるすべてのプロセスが、正しく終了される可能性が高まります。


Sun Cluster が提供するプロパティー属性のセットを使用することにより、RTR ファイル内に新しいリソースプロパティー (拡張プロパティー) を定義することもできます。「リソースプロパティーの属性」に、リソースプロパティーを変更および定義するための属性を示します。拡張プロパティー宣言は 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 秒です。「リソースプロパティーの属性」にリソースプロパティー属性のリストを示します。

リソースプロパティーの次のセットは、データサービスにおいて特定の目的に使用されるプロパティーを定義します。

{
        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 = ANYTIME;
        DEFAULT = ;
}

これらのリソースプロパティー宣言には、TUNABLE 属性が含まれています。この属性は、この属性が関連付けられているプロパティーの値をクラスタ管理者が変更できる場合を制限します。たとえば値 AT_CREATION は、クラスタ管理者が値を指定できるのはリソースの作成時だけであり、あとでは値を変更できないことを示します。

上記のプロパティーのほとんどは、特に理由がない限り、Agent Builder が生成するデフォルト値を使用しても問題ありません。こうしたプロパティーのあとには、次のような情報が続きます。詳細は、「リソースのプロパティー」またはr_properties(5)のマニュアルページを参照してください。

Failover_mode

Start または Stop メソッドの失敗時、RGM がリソースグループを再配置するか、ノードまたはゾーンを停止するかを指定します。

Thorough_probe_interval, Retry_count, and Retry_interval

障害モニターで使用します。TunableANYTIME に等しいため、障害モニターが適切に機能していない場合、クラスタ管理者はいつでも調整できます。

Network_resources_used

データサービスで使用される論理ホスト名または共有アドレスリソースのリスト。Agent Builder がこのプロパティーを宣言するため、クラスタ管理者はデータサービスを構成するとき (存在する場合) に、リソースのリストを指定できます。

Scalable

この値を FALSE に設定した場合、このリソースがクラスタネットワーキング (共有アドレス) 機能を使用しないことを示します。このプロパティーを FALSE に設定した場合、リソースタイププロパティー FailoverTRUE に設定して、フェイルオーバーサービスを指定する必要があります。このプロパティーの詳しい使用方法については、「データサービスをクラスタに転送する方法」および「コールバックメソッドの実装」を参照してください。

Load_balancing_policy and Load_balancing_weights

これらのプロパティーを自動的に宣言します。ただし、これらのプロパティーはフェイルオーバーリソースタイプでは使用されません。

Port_list

サーバーが待機するポートのリストです。Agent Builder がこのプロパティーを宣言するため、クラスタ管理者はデータサービスを構成するとき (存在する場合) に、リソースのリストを指定できます。

拡張プロパティーの宣言

拡張プロパティーは、サンプル 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 = 120;
        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   ^^^^^^^^^^^^

Agent Builder は、ほとんどのデータサービスにとって有用な、次の拡張プロパティーを作成します。

Confdir_list

アプリケーション構成ディレクトリへのパスを指定します。このプロパティーは多くのアプリケーションにとって有用な情報です。データサービスを構成するときに、クラスタ管理者はこのディレクトリの場所を指定できます。

Monitor_retry_count, Monitor_retry_interval, and Probe_timeout

サーバーデーモンではなく、障害モニター自体の再起動を制御します。

Child_mon_level

PMF による監視レベルを設定します。詳細は、pmfadm(1M) のマニュアルページを参照してください。

ユーザー追加コード」というコメントで区切られた領域に、追加の拡張プロパティーを作成できます。