Pacemaker は、エラーをソフト、ハード、致命的な 3 つのカテゴリに分類し、後者の 2 つは環境または構成の問題に属し、手動介入なしでは自動的に修復できません。サービス プロセスのクラッシュ、ネットワーク障害などの一般的な障害では、戻り値として OCF_ERR_GENERIC が使用されます。OCF_ERR_GENERIC はソフト タイプに属します。
タイプ | 説明 | クラスターによって実行されるアクション |
---|---|---|
ソフト | 一時的なエラーが発生しました | リソースを再起動するか、新しい場所に移動します |
ハード | A非一時的現在のノードに固有のエラーが発生しました | リソースを別の場所に移動し、現在のノードで再試行されないようにします |
致命的 | すべてのクラスターノードに共通する非一時的なエラー(例:不正な構成が指定されました) | リソースを停止し、どのクラスターノードでも開始されないようにします |
表 B.4。 OCF リターン コードとそのリカバリ タイプ
RC | OCF エイリアス | 説明 | RT |
---|---|---|---|
0 | OCF_SUCCESS | 成功。コマンドは正常に完了しました。これは、すべての開始、停止、プロモート、およびデモートのコマンドで予期される結果です。 | soft |
1 | OCF_ERR_GENERIC | 一般的な「問題が発生しました」エラー コード。 | 柔らかい |
2 | OCF_ERR_ARGS | リソースの構成はこのマシンでは有効ではありません。例えば。ノード上に見つからない場所/ツールを指します。 | 難しい |
3 | OCF_ERR_UNIMPLEMENTED | 要求されたアクションは実装されていません。 | hard |
4 | OCF_ERR_PERM | リソース エージェントには、タスクを完了するための十分な権限がありません。 | 難しい |
5 | OCF_ERR_INSTALLED | リソースに必要なツールがこのマシンにインストールされていません。 | hard |
6 | OCF_ERR_CONFIGURED | リソースの構成が無効です。例えば。必要なパラメータがありません。 | 致命的 |
7 | OCF_NOT_RUNNING | リソースは安全に停止されました。クラスターは、いかなるアクションに対してもこれを返すリソースを停止しようとしません。 | 該当なし |
8 | OCF_RUNNING_MASTER | リソースはマスター モードで実行されています。 | soft |
9 | OCF_FAILED_MASTER | リソースはマスター モードですが、失敗しました。リソースは降格され、停止され、その後再び開始 (場合によっては昇格) されます。 | ソフト |
その他 | NA | カスタムエラーコード。 | 柔らかい |
各リソース操作には、エラーの処理方法を制御するための on-fail 属性があります。
http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html-single/Pacemaker_Explained/index.html#_monitoring_resources_for_failure
表5.3. オペレーションのプロパティ
フィールド | 説明 |
---|---|
id | アクションの名前。ユニークでなければなりません。 |
name | 実行するアクション。一般的な値: 監視、開始、停止 |
間隔 | 操作を実行する頻度 (秒単位)。デフォルト値: 0 (決してしないことを意味します)。 |
timeout | アクションが失敗したと宣言するまでの待機時間。 |
on-fail | このアクションが失敗した場合に実行するアクション。許可される値:* ignore - リソースが失敗しなかったふりをします* block - リソースに対してそれ以上の操作を実行しません* stop - リソースを停止し、他の場所で開始しません* restart - リソースを停止しますリソースを再起動して (おそらく別のノードで)* fence - リソースが失敗したノードを STONITH* standby - リソースが失敗したノードから すべての リソースを移動します。停止操作のデフォルトは次のとおりです。 STONITH が有効な場合はフェンスし、それ以外の場合はブロックします。他のすべての操作はデフォルトで停止します。 |
enabled | false の場合、操作は存在しないものとして扱われます。許可される値: true、false |
しかし、実際にテスト検証を行ったところ、on-failをどのように設定しても効果は変わらず、常にデフォルトの動作となることが分かりました。
リソース エージェントの各操作が OCF_ERR_GENERIC を返した場合のリソース マネージャーの処理は次のとおりです。 count= 1000000
restart | ||
---|---|---|
fail-count=1000000を設定 |
リソースのそれ以上の操作を防止すると、リソースは管理外になりますFAILED ステータスは以下の通りです dummy(ocf::heartbeat:Dummy2):Started srdsdevapp69 (unmanaged) FAILED |
block |
monitor |
Setfail-count+=1 このノードで stop、start、monitor を順番に呼び出します。それでもモニターが失敗する場合は、失敗回数が移行しきい値に達するまで停止、開始、モニターを繰り返し、リソースを停止状態に保ちます。 |
restart |
promote |
Setfail-count+=1 このノードでdemote、stop、startを順番に呼び出します。 他のノードでプロモートを呼び出して、マスターへの他のノードのリソースを増やします |
restart |
demote |
fail-count+=1を設定します このノードでstop、start、demoteを順番に呼び出します。それでも降格が失敗する場合は、失敗回数が移行しきい値に達するまで停止、開始、降格を繰り返し、リソースを停止状態に保ちます。 |
再起動 |
通知 | 無視 | 無視 |
注 1: タイムアウトの処理は OCF_ERR_GENERIC と同じです。
注 2: Pacemaker は、停止されたリソースに対して停止通知を呼び出しません。
注 3: テスト環境 Pacemaker 1.1.7-6、CentOS 6.3
2. モニターと開始の判断は一貫している必要があります。つまり、開始が成功した直後にモニターが実行されない状況があってはなりません。ループを引き起こします。