この例で使用するサンプルのリソースタイプ登録 (RTR) ファイルは、DNS リソースタイプの静的な構成を定義します。このタイプのリソースは、RTR ファイルで定義されているプロパティを継承します。
RTR ファイル内の情報は、クラスタ管理者が HA-DNS データサービスを登録したときに RGM によって読み取られます。
RTR ファイルの形式は明確に定義されています。リソースタイププロパティ、システム定義リソースプロパティ、拡張プロパティという順番で並んでいます。詳細は、rt_reg(4) のマニュアルページと 「リソースとリソースタイププロパティの設定」を参照してください。
この節では、サンプルの RTR ファイルの特定のプロパティについて説明します。この節で扱うリストは、サンプルの RTR ファイルの一部だけです。サンプルの RTR ファイルの完全なリストについては、「リソースタイプ登録ファイルのリスト」を参照してください。
次のリストに示すように、サンプルの RTR ファイルはコメントから始まり、その後に、HA-DNS 構成を定義するリソースタイププロパティが続きます。
# # Copyright (c) 1998-2001 by Sun Microsystems, Inc. # All rights reserved. # # Registration information for Domain Name Service (DNS) # #pragma ident "@(#)SUNW.sample 1.1 00/05/24 SMI" RESOURCE_TYPE = "sample"; VENDOR_ID = SUNW; RT_DESCRIPTION = "Domain Name Service on Sun Cluster"; RT_VERSION ="1.0"; API_VERSION = 2; FAILOVER = TRUE; RT_BASEDIR=/opt/SUNWsample/bin; PKGLIST = SUNWsample; START = dns_svc_start; STOP = dns_svc_stop; VALIDATE = dns_validate; UPDATE = dns_update; MONITOR_START = dns_monitor_start; MONITOR_STOP = dns_monitor_stop; MONITOR_CHECK = dns_monitor_check;
RTR ファイルの最初のエントリには、Resource_type プロパティを宣言する必要があります。宣言しないと、リソースタイプの登録は失敗します。
RGM はプロパティ名の大文字と小文字を区別します。Sun が提供する RTR ファイルにおけるプロパティの規約としては、最初の文字は大文字で、残りの文字は小文字にします。ただし、メソッド名は例外で、プロパティ属性と同様に、すべての文字を大文字にします 。
リソースタイプ名は、Resource_type プロパティだけで指定できます (例 : sample)。あるいは、Vendor_id、"."、Resource_type という形式でも指定できます (例 : SUNW.sample)。
Vendor_id を接頭辞として使用する場合、リソースタイプを定義している企業の会社名を使用します。リソースタイプ名はクラスタ内で一意である必要があります。
Rt_version プロパティは、ベンダーによって指定されたサンプルのデータサービスのバージョンを識別します。
API_version プロパティは Sun Cluster のバージョンを識別します。たとえば、「API_version =2」はデータサービスが Sun Cluster バージョン 3.0 の管理下で動作していることを示します。
Failover = TRUE は、同時に複数のノード上でオンラインになることができるリソースグループでは、データサービスが動作できないことを示します。
RT_basedir は相対パス (コールバックメソッドのパスなど) を補完するためのディレクトリパスで、/opt/SUNWsample/bin を指します。
START、STOP、VALIDATE などは、RGM によって呼び出される個々のコールバックメソッドプログラムへのパスを提供します。これらのパスは、RT_basedir に指定されたディレクトリからのパスになります。
Pkglist は、SUNWsample をサンプルのデータサービスのインストールを含むパッケージとして識別します。
この RTR ファイルに指定されていないリソースタイププロパティ (Single_instance、Init_nodes、Installed_nodes など) は、デフォルト値を取得します。リソースタイププロパティの完全なリストとそのデフォルト値については、表 A-1 を参照してください。
クラスタ管理者は、RTR ファイルのリソースタイププロパティに指定されている値を変更できません。
慣習上、RTR ファイルでは、リソースプロパティをリソースタイププロパティの後に宣言します。リソースプロパティには、Sun Cluster が提供するシステム定義プロパティと、データサービス開発者が定義する拡張プロパティが含まれます。どちらのタイプの場合でも、Sun Cluster が提供するプロパティ属性の数 (最小、最大、デフォルト値など) を指定できます。
次のリストは、サンプル RTR ファイルのシステム定義プロパティを示しています。
# リソースタイプ宣言の後に、中括弧に囲まれたリソースプロパティ宣言のリスト # が続く。プロパティ名宣言は、各エントリの左中括弧の直後にある最初 # の属性である必要がある。 # # <method>_timeout プロパティは、RGM がメソッドの呼び出しが失敗 # したという結論を下すまでの時間 (秒) を設定する。 # すべてのメソッドタイムアウトの MIN 値は 60 秒に設定されている。こ # れは、管理者が短すぎる時間を設定することを防ぐためである。短すぎ # る時間を設定すると、スイッチオーバーやフェイルオーバーの性能が上 # がらず、さらには、予期せぬ RGM アクションが発生する可能性がある # (間違ったフェイルオーバー、ノードの再起動、リソースグループの # ERROR_STOP_FAILED 状態への移行、オペレータの介入の必要性など)。 # メソッドタイムアウトに短すぎる時間を設定すると、データサービス全 # 体の可用性を下げることになる。 { 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 = Thorough_Probe_Interval; MIN=1; MAX=3600; DEFAULT=60; TUNABLE = ANYTIME; } # 当該ノード上でアプリケーションを正常に起動できないと結論を下すま # でに、指定された期間内 (Retry_Interval) に行う再試行の回数 { PROPERTY = Retry_Count; MIN=0; MAX=10; DEFAULT=2; TUNABLE = ANYTIME; } # Retry_Interval には 60 の倍数を設定する。これは、秒から分に変換さ # れ、端数が切り上げられるためである。たとえば、60 (秒) という値を指 # 定すると、1 分に変換される。 # このプロパティは再試行回数 (Retry_Count) のタイミングを決定する。 { PROPERTY = Retry_Interval; MIN=60; MAX=3600; DEFAULT=300; TUNABLE = ANYTIME; } { PROPERTY = Network_resources_used; TUNABLE = AT_CREATION; DEFAULT = ""; }
Sun Cluster はシステム定義プロパティを提供しますが、リソースプロパティ属性を使用すると、異なるデフォルト値を設定できます。リソースプロパティに適用するために利用できる属性の完全なリストについては、「リソースプロパティの属性」 を参照してください。
サンプルの RTR ファイル内のシステム定義リソースプロパティについては、次の点に注意してください。
Sun Cluster は、すべてのタイムアウトに最小値 (1 秒) とデフォルト値 (3600 秒) を提供します。サンプルの RTR ファイルは、最小値をそのまま (60 秒) にし、デフォルト値を 300 秒に変更しています。クラスタ管理者は、このデフォルト値を使用することも、タイムアウト値を変更することもできます (たとえば、60秒以上)。Sun Cluster は正当な最大値を持っていません。
Thorough_Probe_Interval、Retry_count、Retry_interval プロパティの TUNABLE 属性は ANYTIME に設定されています。この設定は、データサービスが動作中でも、クラスタ管理者がこれらのプロパティの値を変更できることを意味します。上記のプロパティは、サンプルのデータサービスによって実装される障害モニターによって使用されます。サンプルのデータサービスは、管理アクションによってさまざまなリソースが変更されたときに障害モニターを停止および再起動するように、UPDATE を実装します。「UPDATE メソッド」 を参照してください。
リソースプロパティは次のように分類されます。
必須-クラスタ管理者はリソースを作成するときに必ず値を指定する必要があります。
任意-クラスタ管理者が値を指定しない場合、システムがデフォルト値を提供します。
条件付き-RTR ファイルで宣言されている場合だけ、RGM はプロパティを作成します。
サンプルのデータサービスの障害モニターは、Thorough_probe_interval、 Retry_count、Retry_interval、Network_resources_used という条件付きプロパティを使用しているため、開発者はこれらのプロパティを RTR ファイルで宣言する必要があります。プロパティを分類する方法については、r_properties(5) のマニュアルページまたは 「リソースプロパティ」を参照してください。
次のリストに示すように、サンプルの RTR ファイルの終わりには拡張プロパティがあります。
# 拡張プロパティ # # クラスタ管理者はこのプロパティの値を設定し、アプリケーションが使用 # する構成ファイルが入っているディレクトリを示す必要がある。このアプリ # ケーションの場合、DNS は PXFS (通常は named.conf) 上の DNS # 構成ファイルのパスを指定する。 { PROPERTY = Confdir; EXTENSION; STRING; TUNABLE = AT_CREATION; DESCRIPTION = "The Configuration Directory Path"; } # 検証が失敗したと宣言するまでのタイムアウト値 (秒) { PROPERTY = Probe_timeout; EXTENSION; INT; DEFAULT = 30; TUNABLE = ANYTIME; DESCRIPTION = "Time out value for the probe (seconds)"; }
サンプルの RTR ファイルは 2 つの拡張プロパティ、Confdir と Probe_timeout を定義します。Confdir は、DNS 構成ディレクトリへのパスを指定します。このディレクトリには、DNS が正常に動作するために必要な in.named ファイルが格納されています。サンプルのデータサービスの START と VALIDATE メソッドはこのプロパティを使用し、DNS を起動する前に、構成ディレクトリと in.named ファイルがアクセス可能であるかどうかを確認します。
データサービスが構成されるとき、VALIDATE メソッドは、新しいディレクトリがアクセス可能であるかどうかを確認します。
サンプルのデータサービスの PROBE メソッドは、Sun Cluster コールバックメソッドではなく、ユーザー定義メソッドです。したがって、Sun Cluster は この Probe_timeout プロパティを提供しません。開発者はこの拡張プロパティを RTR ファイルに定義し、クラスタ管理者が Probe_timeout の値を構成できるようにする必要があります。