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 テンプレート バージョン 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 プロパティを宣言する必要があります。宣言しないと、リソースタイプの登録は失敗します。
リソースタイプ宣言の最初のセットは、次のようなリソースタイプについての基本的な情報を提供します。
Resource_type と Vendor_id - リソースタイプ名を提供します。リソースタイプ名を指定するには、Resource_type プロパティを単独で使用するか (この例では、「smpl」)、Vendor_id を接頭辞として使用し、ドット (.) でリソースタイプと区切ります (この例では、「SUNW.smpl」)。Vendor_id を使用する場合、リソースタイプを定義する企業の略号にします。リソースタイプ名はクラスタ内で一意である必要があります。
便宜上、リソースタイプ名 (Resource_type と Vendor_id) はパッケージ名として使用されます。パッケージ名は 9 文字に制限されているので、これら 2 つのプロパティの文字数の合計も 9 文字以内に制限するのがいいでしょう (ただし、RGM にはこの制限はありません)。一方、Agent Builder はリソースタイプ名からパッケージ名を明示的に生成しますので、それ自体には 9 文字の制限はありません。
Rt_version-サンプルのデータサービスのバージョンを指定します。
API_version-API のバージョンを指定します。 「API_version = 2」は、データサービスが Sun Cluster バージョン 3.0 の下で動作することを示します。
Failover = TRUE-同時に複数のノード上でオンラインになることができるリソースグループでは、データサービスが動作できないことを示します。つまり、フェイルオーバーデータサービスを指定します。詳細については、「フェイルオーバーリソースの実装」を参照してください。
START、STOP、VALIDATE など-RGM が呼び出す各コールバックメソッドプログラムへのパスを提供します。これらのパスは、RT_basedir で指定されたディレクトリからの相対パスです。
リソースタイプ宣言の残りのセットは、次のような構成情報を提供します。
Init_nodes = RG_PRIMARIES-データサービスをマスターできるノード上だけで、RGM が INIT、BOOT、FINI、および VALIDATE のメソッドを呼び出すことを指定します。RG_PRIMARIES で指定されたノードは、データサービスがインストールされているすべてのノードのサブセットです。この値に RT_INSTALLED_NODES を設定した場合、データサービスがインストールされているすべてのノード上で、RGM が上記メソッドを呼び出すことを指定します。
RT_basedir-コールバックメソッドパスのように、ディレクトリパスに /opt/SUNWsample/bin を付加して、相対パスを補います。
START、STOP、VALIDATE など-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) のマニュアルページを参照してください)。
Failover_mode-START または STOP メソッドが失敗した場合、RGM がリソースグループを再配置するか、ノードを停止するかを示します。
Thorough_probe_interval、Retry_count、Retry_interval- 障害モニターによって使用されます。障害モニターが適切に機能していない場合、システム管理者はいつでも調整できます。
Network_resources_used- データサービスで使用される論理ホスト名または共有アドレスリソースのリスト。このプロパティは、Agent Builder によって宣言されるので、システム管理者はデータサービスを構成するときに、必要に応じてリソースのリストを指定できます。
Scalable- この値を FALSE に設定した場合、このリソースがクラスタネットワーキング (共有アドレス) 機能を使用しないことを示します。この設定は、リソースタイプ Failover プロパティに TRUE を設定して、フェイルオーバーサービスを指定するのと同じです。このプロパティの使用方法については、「フェイルオーバーリソースの実装」と「スケーラブルリソースの実装」を参照してください。
Load_balancing_policy、Load_balancing_weights- これらのプロパティは Agent Builder によって自動的に宣言されますが、フェイルオーバーリソースタイプでは使用されません。
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 = 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 ^^^^^^^^^^^^
次に示すように、Agent Builder はほとんどのデータサービスにとって有用な拡張プロパティをいくつか作成します。
Confdir_list- アプリケーション構成ディレクトリへのパスを指定します。このプロパティは多くのアプリケーションにとって有用な情報です。データサービスを構成するときに、システム管理者はこのディレクトリの場所を指定できます。
Monitor_retry_count、Monitor_retry_interval、Probe_timeout- サーバーデーモンではなく、障害モニター自身の再起動を制御します。
Child_mon_level- PMF が行う監視レベルを設定します。詳細については、pmfadm(1M) のマニュアルページを参照してください。
「ユーザー追加コード」というコメント文で囲まれた部分に、追加の拡張プロパティを作成できます。