Pacemaker 1.1 Configuration Explained – (7)アラート
(7)アラート
アラートエージェント
Pacemaker 1.1.15から追加されたアラート機能は、ノード障害やリソースの起動・停止などクラスタイベントが発生した際に外部動作を行うために設定します。
アラート処理には、リソースエージェントと合わせて外部プログラム(アラートエージェント)を使用します。アラートエージェントには環境変数を通じて情報を渡すことができます。
<configuration> <alerts> <alert id="my-alert" path="/path/to/my-script.sh" /> </alerts> </configuration>
上記の例では、my-script.shがイベントの都度に実行されます。
アラートはクラスタノードでのみ呼び出されます。Pacemaker Remoteと関連するイベントでもアラートは実行されますが、リモートのノード上では実行されません。
アラート受信者
アラートは通常受信者に対して送信されます。その受信者を設定するには、recipientを個別に設定します。recipientはアラートエージェントに環境変数として渡されるものであり、実際にはアラートエージェントが解釈できるものであればIPアドレスでもE-mailアドレスでもかまいません。
アラートメタ属性
Pacemakerがどのようにアラートエージェントを実行するかについてメタ属性を使用して設定することができます。
メタ属性 | デフォルト | 説明 |
timestamp-format | %H:%M:%S.%06N | イベント時のタイムスタンプの形式。 |
timeout | 30s | ここで指定した時間内にアラートエージェントが動作を完了しない場合には終了させる。 |
アラートインスタンス属性
リソースエージェント固有の設定値はインスタンス属性として設定することができます。これらはエージェントに追加の環境属性として渡されます。
設定することのできる数値や名前、値などはエージェントごとに異なります。
サンプルのアラートエージェントを使用する
/usr/share/pacemaker/alertsにアラートエージェントのサンプルコードが置かれていますので、環境に合わせて編集して使用することができます。
アラートエージェントの作成
アラートエージェントに渡される環境変数一覧
環境変数 | 説明 |
CRM_alert_kind | アラート種別(node, fencing, resource) |
CRM_alert_version | アラートを送信するPacemakrのバージョン |
CRM_alert_recipient | 設定した受信者 |
CRM_alert_node_sequence | (1つの)イベントが起きるごとに増えていく数。ローカルノード内での数であり、クラスタ全体では共有されないため注意が必要。 |
CRM_alert_timestamp | timestamp-formatで指定したフォーマットでの、エージェントを実行する直前のタイムスタンプ |
CRM_alert_node | 影響するノード |
CRM_alert_desc | ノード詳細。nodeアラートの場合はノードの現在の状態(memberまたはlost)。fencingアラートの場合は実行したフェンシング命令の要約、またもしあればフェンシング元、フェンシング先、エラーコードも含む。resourceアラートの場合はCRM_alert_statusの内容。 |
CRM_alart_nodeid | ステータスが変わったノードのID(nodeアラートの場合のみ) |
CRM_alert_task | 命令されたフェンシングまたはリソース動作(fencingまたはresourceアラートの場合のみ) |
CRMalert_rc | フェンシングまたはリソース操作の数字の返り値(fencingまたはresourceアラートの場合のみ) |
CRM_alert_rsc | 影響のあるリソース(resourceアラートのみ) |
CRM_alert_interval | リソース操作の間隔(resourceアラートのみ) |
CRM_alert_target_rc | リソース操作で期待される返り値(resourceアラートのみ) |
CRM_alert_status | 操作結果を伝えるPacemakerが使用する数字の値(resourceアラートのみ) |
アラートエージェントを使用する際の注意点
- アラートエージェントは受信者を設定していなくても実行される事があるので、このような状況でも問題のないようにしておくことが必要です。(検証環境で動作させてみて、後で受信者の設定をすることが多い)
- 受信者が複数設定されているとき、アラートエージェントは受信者ごとに実行されます。あるエージェントが同時実行できない場合は、受信者は1人である必要があります。
- クラスタイベントが発生した時にはすべてのアラートが別々のプロセスで送信されます。アラートと受信者の数、またアラートエージェントの操作内容によっては、大きなバーストが発生する可能性があります。
- アラートエージェントはhaclusterユーザーとして動作しますが、これは最小の権限です。権限が必要なときにはsudoを使用するよう設定すればよいでしょう。
- アラートリソースはインターフェースとして現在は使用されていないocf:pacemaker:ClusterMonが使用するスクリプトに対して後方互換性を持つように設計されています。この互換性を保つために アラートエージェントに渡される環境変数にはCRM_alertと同様にCRM_notifyが前置されます。互換性を持たないものとしてはアラートエージェントがhaclusterとして実行されるのに対してClusterMonは外部スクリプトをrootとして実行するという点があります。