Sun Cluster は、データサービスの静的な構成を定義するためのリソースタイププロパティおよびリソースプロパティのセットを提供します。リソースタイププロパティでは、リソースのタイプ、そのバージョン、API のバージョンと同時に、各コールバックメソッドへのパスも指定できます。表 A–1 に、すべてのリソースタイププロパティのリストを示します。
リソースプロパティ (Failover_mode、Thorough_probe_interval など) やメソッドタイムアウトも、リソースの静的な構成を定義します。動的なリソースプロパティ (Resource_state や Status など) は、管理対象のリソースの動作状況を反映します。リソースプロパティについては、表 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 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 プロパティ (この例では「smpl」) 単独で指定できます。Vendor_id を接頭辞として使用し、リソースタイプ (この例では「SUNW.smpl」) との区切りにドット (.) を入力することもできます。Vendor_id を使用する場合、リソースタイプを定義する企業の略号にします。リソースタイプ名はクラスタ内で一意である必要があります。
便宜上、リソースタイプ名 (Resource_type と Vendor_id) はパッケージ名として使用されます。パッケージ名は 9 文字に制限されているので、これら 2 つのプロパティの文字数の合計も 9 文字以内に制限することをお勧めします。RGM は 9 文字の制限を適用しません。一方、Agent Builder はリソースタイプ名からパッケージ名を系統だてて生成します。つまり、Agent Builder は 9 文字の制限を適用します。
サンプルデータサービスのバージョンです。
API のバージョンです。たとえば、「API_version =2」は、データサービスが Sun Cluster バージョン 3.0 の管理下で動作していることを示します。
このデータサービスが、複数のノード上で同時にオンラインにできるリソースグループ 上では実行できないサービス、すなわちフェイルオーバーデータサービスであることを示します。詳細については、データサービスをクラスタに転送する方法を参照してください。
RGM によって呼び出されるコールバックメソッドプログラムのパスを提供します。これらのパスは、 RT_basedir で指定されたディレクトリからの相対パスです。
リソースタイプ宣言の残りのセットは、次のような構成情報を提供します。
RGM が、データサービスをマスターできるノード上でのみ Init、Boot、Fini、Validate の各メソッドを呼び出すように指定します。RG_PRIMARIES で指定されたノードは、データサービスがインストールされているすべてのノードのサブセットです。この値に RT_INSTALLED_NODES を設定した場合、RGM は、データサービスがインストールされているすべてのノード上で上記メソッドを呼び出します。
コールバックメソッドパスのような完全な相対パスとして、/opt/SUNWsample/bin をポイントします。
RGM によって呼び出されるコールバックメソッドプログラムのパスを提供します。これらのパスは、 RT_basedir で指定されたディレクトリからの相対パスです。
リソースタイププロパティと同様に、リソースプロパティも 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) のマニュアルページを参照してください)。
Start または Stop メソッドの失敗時、RGM がリソースグループを再配置するか、ノードを停止するかを指定します。
障害モニターで使用します。障害モニターが適切に機能していない場合、システム管理者はいつでも調整できます。
データサービスで使用される論理ホスト名または共有アドレスリソースのリスト。このプロパティは、Agent Builder によって宣言されるので、システム管理者はデータサービスを構成するとき必要に応じてリソースのリストを指定できます。
FALSE に設定した場合、このリソースはクラスタネットワーキング (共有アドレス) 機能を使用しません。この設定は、リソースタイプ Failover プロパティに TRUE を設定して、フェイルオーバーサービスを指定するのと同じです。このプロパティの詳しい使用方法については、データサービスをクラスタに転送する方法および コールバックメソッドの実装を参照してください。
これらのプロパティは自動的に宣言されますが、フェイルオーバーリソースタイプでは使用されません。
サーバーが待機するポートのリストです。このプロパティは 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 は、ほとんどのデータサービスにとって有用な拡張プロパティを作成します。
アプリケーション構成ディレクトリへのパスを指定します。このプロパティは多くのアプリケーションにとって有用な情報です。データサービスを構成するときに、システム管理者はこのディレクトリの場所を指定できます。
サーバーデーモンではなく、障害モニター自体の再起動を制御します。
PMF による監視レベルを設定します。詳細については、pmfadm(1M) のマニュアルページを参照してください。
「ユーザー追加コード」というコメント文で囲まれた部分に、追加の拡張プロパティを作成できます。