Oracle Solaris Cluster リファレンスマニュアル

印刷ビューの終了

更新: 2015 年 9 月
 
 

scds_fm_action (3HA)

名前

scds_fm_action - プローブ完了関数のあとでアクションを実行する

形式

cc [flags…] –I /usr/cluster/include file –L /usr/cluster/lib 
  –l dsdev#include <rgm/libdsdev.h> scha_err_t 
  scds_fm_action(scds_handle_t handle, int probe_status, 
  long elapsed_milliseconds);

説明

scds_fm_action() 関数は、データサービスの probe_status を過去の障害履歴と組み合わせて使用することにより、次のいずれかのアクションを実行します。

  • アプリケーションを再起動します。

  • リソースグループのフェイルオーバーを行います。

  • 何もしません。

引数 probe_status の値で、障害の重要度を表します。たとえば、アプリケーションに接続する処理の失敗を完全な失敗とみなし、アプリケーションとの接続を切断する処理を部分的な失敗とみなすことができます。後者の場合、probe_status に 0 から SCDS_PROBE_COMPLETE_FAILURE までの値を指定します。

DSDL は SCDS_PROBE_COMPLETE_FAILURE100 として定義します。成功または失敗の部分的なプローブには、0 から SCDS_PROBE_COMPLETE_FAILURE までの値を使用します。

DSDL は SCDS_PROBE_IMMEDIATE_FAILOVER201 に定義します。Failover_mode プロパティーが RESTART_ONLY または LOG_ONLY に設定されないかぎり、このプローブステータスはリソースグループの即時フェイルオーバーをトリガーします。最初に再起動を試行することなく即時のフェイルオーバー試行を強制するには、特別な SCDS_PROBE_IMMEDIATE_FAILOVER 値を使用します。Failover_mode プロパティーの詳細は、r_properties(5) を参照してください

その後、scds_fm_action() を呼び出すことにより、probe_status 入力パラメータの値とリソースの Retry_interval プロパティーによって定義された時間間隔が足し合わされ、障害履歴が計算されます。Retry_interval よりも古い障害履歴はメモリーからパージされ、再起動やフェイルオーバーの決定には使用されません。

scds_fm_action() 関数は、次のアルゴリズムを使って、実行するアクションを選択します。

Restart

累積された障害履歴が SCDS_PROBE_COMPLETE_FAILURE に達すると、scds_fm_action() はリソースの STOP メソッドと START メソッドを順番に呼び出し、リソースを再起動します。リソースタイプに定義された PRENET_START メソッドや POSTNET_STOP メソッドは無視します。

リソースのステータスは、そのリソースがすでに設定されている場合を除き、scha_resource_setstatus() 呼び出しによって SCHA_RSSTATUS_DEGRADED に設定されます。

リソースの START または STOP メソッドが失敗したために再起動の試行が失敗した場合は、リソースグループを別のノードにフェイルオーバーするために GIVEOVER オプションを指定した scha_control() が呼び出されます。scha_control() の呼び出しが成功した場合は、そのリソースグループが別のクラスタノードにフェイルオーバーされるため、scds_fm_action() の呼び出しが戻ることはありません。

再起動に成功すると、障害履歴はパージされます。次の再起動は、障害履歴がふたたび SCDS_PROBE_COMPLETE_FAILURE に達するまで試行されません。

Failover

scds_fm_action() の連続した呼び出しによって試行された再起動の回数が、そのリソースに対して定義されている Retry_count 値に達した場合は、GIVEOVER オプションを指定した scha_control() の呼び出しを行うことによってフェイルオーバーが試行されます。

リソースのステータスは、そのリソースがすでに設定されている場合を除き、scha_resource_setstatus() 呼び出しによって SCHA_RSSTATUS_FAULTED に設定されます。

scha_control() 呼び出しに失敗した場合、scds_fm_action() によって管理されている障害履歴全体がクリアされます。

scha_control() 呼び出しに成功した場合、リソースグループは別のクラスタノードにフェイルオーバーされ、scds_fm_action() 呼び出しは値を返しません。

probe_status 値に SCDS_PROBE_IMMEDIATE_FAILOVER を指定することによって、プローブは再起動を行わずに即時フェイルオーバー試行をトリガーできます。

No Action

障害の蓄積された履歴が SCDS_PROBE_COMPLETE_FAILURE の下に残っている場合、アクションは行われません。さらに、サービスのチェックが正常に行われ、probe_status 値が 0 になっている場合も、障害履歴は考慮されず、アクションは実行されません。

リソースのステータスは、そのリソースがすでに設定されている場合を除き、scha_resource_setstatus() 呼び出しによって SCHA_RSSTATUS_OK に設定されます。

パラメータ

次のパラメータがサポートされます。

handle

scds_initialize(3HA) から返されるハンドルです。

probe_status

データサービスのステータスを示す、0 と SCDS_PROBE_COMPLETE_FAILURE または SCDS_PROBE_IMMEDIATE_FAILOVER の間で指定する数値。

  • 0 は、最近のデータサービスの検査が正常に実行されたことを示します。

  • SCDS_PROBE_COMPLETE_FAILURE は、完全な障害を示します。サービスは完全に失敗しました。また、サービスの部分的な障害を示す、0 と SCDS_PROBE_COMPLETE_FAILURE の間の値を指定することもできます。

  • 値が SCDS_PROBE_IMMEDIATE_FAILURE のときは、Failover_mode プロパティーが RESTART_ONLY または LOG_ONLY に設定された場合を除き、再起動を行わずにリソースグループのフェイルオーバーがトリガーされます。Failover_mode プロパティーの詳細は、r_properties(5) を参照してください

elapsed_milliseconds

データサービスの検査を完了するまでの時間 (ミリ秒) です。この値は、将来の拡張のために予約されています。

戻り値

scds_fm_action() 関数の戻り値は次のとおりです。

0

関数の実行に成功。

0 以外

関数の実行に失敗。

エラー

SCHA_ERR_NOERR

アクションは実行されませんでした。または、再起動が正常に試行されました。

SCHA_ERR_FAIL

フェイルオーバーが試行されましたが、正常に実行されませんでした。

SCHA_ERR_NOMEM

システムメモリーが不足しています。

ファイル

/usr/cluster/include/rgm/libdsdev.h

インクルードファイル

/usr/cluster/lib/libdsdev.so

ライブラリ

属性

次の属性については、attributes(5) を参照してください。

属性タイプ
属性値
使用条件
ha-cluster/developer/api
インタフェースの安定性
発展中

関連項目

scds_fm_sleep(3HA), scds_initialize(3HA), scha_calls(3HA), scha_control(3HA), scds_fm_print_probes(3HA), scha_resource_setstatus(3HA), attributes(5)