汎用データサービス (GDS: Generic Data Service) は、単純なネットワーク認識型およびネットワーク非認識型アプリケーションを Oracle Solaris Cluster Resource Group Manager (RGM) フレームワークにプラグインすることにより、これらのアプリケーションの可用性またはスケーラビリティーを向上できるようにするためのメカニズムです。
GDS には、コールバックメソッド (rt_callbacks(1HA)) やリソースタイプ登録 (RTR) ファイル (rt_reg(4)) を備えた、フル機能の Oracle Solaris Cluster リソースタイプが含まれています。
リソースが正常に開始または停止できなかった場合、またはリソースモニターが正常ではないリソースを検出し、その結果再起動またはフェイルオーバーを要求する場合に RGM が取る回復アクションを変更します。
Failover_mode プロパティーの詳細は、r_properties(5) のマニュアルページを参照してください。
任意
SOFT
すべての時間
このリソースが依存関係を持っている論理ホスト名または共有アドレスネットワーク資源のリスト。このリストには、プロパティー Resource_dependencies、Resource_dependencies_weak、Resource_dependencies_restart、または Resource_dependencies_offline_restart にあるすべてのネットワークアドレスリソースが含まれます。
このプロパティーは、リソース依存関係プロパティーの設定に基づいて、RGM により自動的に更新されます。このプロパティーを直接設定することはありません。その代わりに、Resource_dependencies プロパティーを使用します。
条件付き/任意
空のリスト
無効時
アプリケーションが待機するポート番号をコンマで区切ったリストで指定します。r_properties(5) のマニュアルページを参照してください。
Port_list プロパティーは、Agent Builder が生成する起動スクリプトか、clresource コマンド (Oracle Solaris Cluster 管理コマンドを使用する場合) に指定されていなければなりません。
各ポート番号には、スラッシュ (/) と、Port_list=80/tcp や Port_list=80/tcp6,40/udp6 などのそのポートで使用されるプロトコルが付加されます。
プロトコルには、次の値を指定できます。
tcp (TCP IPv4)
tcp6 (TCP IPv6)
udp (UDP IPv4)
udp6 (UDP IPv6)
条件付き/必須
デフォルトなし
すべての時間
リソースが依存するリソースのリストを指定します。このリストには、リソースが使用するすべての論理ホスト名または共有アドレスネットワーク資源が含まれます。このプロパティーのデフォルト値は null です。Network_aware プロパティーが true に設定されている場合は、このプロパティーの値として、アプリケーションが待機している論理ホスト名または共有アドレスネットワーク資源を設定します。
GDS リソースを作成する前には、LogicalHostname または SharedAddress リソースがすでに構成されている必要があります。
リソース名は 1 つでも複数でも指定できます。各ネットワーク資源には 1 つまたは複数の論理ホスト名を指定できます。詳細は、clreslogicalhostname(1CL ) および clressharedaddress(1CL) のマニュアルページを参照してください。
Resource_dependencies プロパティーの代わりに、Resource_dependencies_weak、Resource_dependencies_restart、または Resource_dependencies_offline_restart プロパティーを使用すると、ほかの種類の依存関係も指定できます。詳細は、r_properties(5) のマニュアルページを参照してください。
任意
空のリスト
すべての時間
起動に失敗したリソースをモニターが再起動する回数です。
Retry_count プロパティーの詳細は、r_properties(5) のマニュアルページを参照してください。
条件付き
2
すべての時間
失敗したリソースの再起動の間、この秒数だけ待機します。
Retry_interval プロパティーの詳細は、r_properties(5) のマニュアルページを参照してください。
条件付き
370 秒
すべての時間
リソースがスケーラブルであるかどうか、つまり、リソースが Data Service for Apache Guide Cluster ソフトウェアのネットワーキング負荷分散機能を使用するかどうかを示します。
Scalable プロパティーが TRUE に設定されている場合は、Load_balancing_policy や Load_balancing_weights などの追加プロパティーを使用して負荷分散動作を構成します。
Scalable、Load_balancing_policy、Load_balancing_weights の各プロパティーの詳細は、r_properties(5) のマニュアルページを参照してください。
任意
FALSE
作成時
起動コマンドのタイムアウト値を秒単位で指定します。
任意
60 秒
300 秒
すべての時間
停止コマンドのタイムアウト値を秒単位で指定します。
任意
60 秒
300 秒
すべての時間
検証コマンドのタイムアウト値を秒単位で指定します。
任意
60 秒
300 秒
すべての時間
プロセスモニター機能 (PMF) によってモニターされるプロセスを制御します。このプロパティーには、フォークされた子プロセスのモニターレベルを指定します。このプロパティーを省略したり、このプロパティーをデフォルト値に設定したりすると、pmfadm(1M) の –C オプションを省略した場合と同じになり、すべての子 (およびその子孫) がモニターされます。
任意
-1
作成時
リソースのフェイルオーバーを許可します。プロパティーの値が False の場合、リソースのフェイルオーバーは無効です。このプロパティーを使用して、アプリケーションリソースによるリソースグループのフェイルオーバーを防ぐことができます。
任意
True
無効時
GDS によってログに記録される診断メッセージのレベル (つまり、種類) を指定します。None、 Info、または Err のいずれかを指定できます。None を指定した場合、GDS によって診断メッセージは記録されません。Info を指定した場合、情報メッセージとエラーメッセージが記録されます。Err を指定した場合、エラーメッセージだけが記録されます。
任意
Info
すべての時間
Monitor_retry_interval プロパティーで指定する時間枠内でプロセスモニター機能 (PMF) が障害モニターを再起動する回数。このプロパティーは、リソースではなく障害モニター自身の再起動を参照します。システム定義のプロパティー Retry_interval および Retry_count は、リソースの再起動を制御します。
任意
整数
4
0 - 2147483647
-1 は、無限の再試行回数を示します。
常時
障害モニターの障害が発生している時間 (分)。障害モニターで障害が発生した回数が、この期間内で拡張プロパティー Monitor_retry_count で指定した値を超過すると、PMF は障害モニターを再起動しません。
任意
整数
2
0 - 2147483647
-1は、無限の再試行間隔を示します。
常時
このプロパティーは、アプリケーションがネットワークを使用するかどうかを指定します。
任意
True
作成時
ネットワーク認識型アプリケーションまたはネットワーク非認識型アプリケーションの健全性を定期的にチェックするコマンドを指定します。アプリケーションを検証するには、シェルに直接渡すことができる完全なコマンドを指定します。アプリケーションが正常に実行されていれば、検証コマンドは終了ステータスとして 0 を返します。
プローブコマンドの終了ステータスは、アプリケーションの障害の重大度を判断するために使用されます。終了ステータス (プローブステータス) は、0 (正常) から 100 (全面的な障害) までの整数になります。検証ステータスの値が 201 で、Failover_enabled の値が False に設定されていなければ、アプリケーションのフェイルオーバーが行われます。
検証ステータスは、GDS 検証アルゴリズム内で使用され、アプリケーションをローカルで再起動するか別のノードにフェイルオーバーするかを決定します。probe コマンドを省略した場合は、GDS 自身が、ネットワーク資源上のアプリケーションに接続する単純な検証手段を提供します。GDS は、接続に成功すると、接続をただちに切り離します。接続と接続の切断が両方とも正常なら、アプリケーションは正常に動作しているものとみなされます。
GDS では、ネットワーク非認識型アプリケーションに対する「デフォルトの」プローブ動作は提供されません。ただし、ネットワーク非認識型アプリケーションは、アプリケーションをモニターし、障害が発生した場合はアプリケーションを再起動する PMF の下で起動されます。詳細は、pmfadm(1M) のマニュアルページを参照してください。
任意
NULL
無効時
プローブコマンドのタイムアウト値を秒単位で指定します。
任意
2 秒
30 秒
すべての時間
アプリケーションを起動するコマンドを指定します。直接シェルに渡すことができる完全なコマンドを指定してください。
起動コマンド、またはそれにフォークされる子プロセスは、デーモンのように長く実行され、クライアントにサービスを実際に提供するプログラムである必要があります。起動コマンドのプロセスツリーはプロセスモニター機能 (PMF) によってモニターされます (Child_mon_level 拡張プロパティーを参照)。このようにモニターされているプロセスが終了すると、これらのプロセスは、リソースプロパティー Retry_count と Retry_interval の設定に従って再起動されます。再試行の回数を超えると、そのリソースグループを異なるノードに再配置することが試みられます。
起動コマンド (または、その子プロセス) が返す終了ステータスは無視されます。
必須
1
デフォルトなし
無効時
アプリケーションを停止するコマンドを指定します。直接シェルに渡すことができる完全なコマンドを指定してください。このプロパティーを指定しない場合、または停止コマンドがゼロ以外で終了した場合は、GDS はシグナルを使用して、このアプリケーションを停止します。
任意
NULL
無効時
アプリケーションを停止するシグナルを指定します。このプロパティーの値は、signal(3HEAD) に定義されているものと同じです。
任意
1
37
15
無効時
アプリケーションを検証するコマンドへの絶対パスを指定します。絶対パスを指定しない場合、アプリケーションは検証されません。
検証コマンドの終了スタータスは、GDS リソースの作成または更新を許可するべきかどうかを決定するのに使用されます。指定された検証コマンドは、リソースを作成または更新する前に、そのリソースを含むリソースグループのノードリストにある各ノードで実行されます。検証コマンドがゼロ以外で終了した場合、要求されたリソースの作成または更新は許可されません。検証コマンドが stdout または stderr に書き込んだ出力は、リソースを作成または更新するための管理コマンドを発行したユーザーに戻されます。このような出力を使用すると、リソースの検証が失敗した理由を説明できます。
検証コマンドは、gds リソースがオンラインになるときに、Start_command 拡張プロパティーを実行する前にも実行されます。検証コマンドがゼロ以外で終了した場合、起動の失敗として扱われます。
検証コマンドはまた、リソースグループを新しいノードに再配置するために scha_control コマンドの GIVEOVER オプションを実行する前にも実行されます。このコマンドがゼロ以外で終了した場合、ギブオーバーはブロックされ、リソースグループは引き続き現在のノードをマスターとします。
任意
NULL
無効時
次では、GDS を使ってapp という名前のアプリケーションを高可用性アプリケーションにする例を紹介します。また、Oracle Solaris Cluster Agent Builder (scdsbuilder(1HA)) を使用して、これらのコマンドを含むスクリプトを作成することもできます。
この例は、SUNW.gds リソースタイプの登録、アプリケーションのリソースグループの作成、論理ホスト hhead のリソース LogicalHostname の作成、ネットワーク認識型アプリケーションリソースの作成、リソースグループの管理、すべてのリソースの有効化、リソースのオンライン化を行う方法を示しています。
この時点で、このアプリケーションは起動し、高可用性になり、GDS により指定された単純な検証プログラムによってモニターされます。これでアプリケーションのステータスをチェックできるようになります。
# clresourcetype register SUNW.gds # clresourcegroup create rg1 # clreslogicalhostname create -g rg1 -h hhead # clresource create -g rg1 -t SUNW.gds \ -p Start_command="/usr/local/app/bin/start" \ -p Port_list="1234/tcp" -p Network_aware=True \ -p Resource_dependencies=hhead app-rs # clresourcegroup online -M rg1 # clresourcegroup status +
この例は、SUNW.gds リソースタイプの登録、アプリケーションのリソースグループの作成、論理ホスト hhead のリソース LogicalHostname の作成、ネットワーク認識型アプリケーションリソースの作成、エラーメッセージのみの記録、リソースグループの管理、すべてのリソースの有効化、リソースのオンライン化を行う方法を示しています。
この時点で、このアプリケーションは起動し、高可用性になり、Probe_command により指定された障害モニターによってモニターされます。これでアプリケーションのステータスをチェックできるようになります。
# clresourcetype register SUNW.gds # clresourcegroup create rg1 # clreslogicalhostname create -g rg1 -h hhead # clresource create -g rg1 -t SUNW.gds \ -p Start_command="/usr/local/app/bin/start" \ -p Stop_command="/usr/local/app/bin/stop" \ -p Validate_command="/usr/local/app/bin/config" \ -p Probe_command="/usr/local/app/bin/probe" \ -p stop_signal=9 -p failover_enabled=FALSE \ -p Start_timeout=120 -p Stop_timeout=180 \ -p Port_list="1234/tcp" -p Probe_timeout=60 \ -p Network_aware=True \ -p Validate_timeout=120 -p Log_level=Err \ -p Resource_dependencies=hhead app-rs # clresourcegroup online -M rg1 # clresourcegroup status +
次の属性については、attributes(5) を参照してください。
|
clreslogicalhostname(1CL ), clresource(1CL), clresourcegroup(1CL), clresourcetype(1CL), clressharedaddress(1CL), rt_callbacks(1HA), scdsbuilder(1HA), scha_control(1HA), scha_resource_get(1HA), hatimerun(1M), pmfadm(1M), signal(3HEAD), rt_reg(4), attributes(5), r_properties(5), scalable_service(5)