Sun Cluster Geographic Edition ソフトウェアでは、パートナーシップに参加している個々のクラスタがパートナーサイトにおけるクラスタ障害を検出する手段として、公開ネットワーク上でハートビートを使用します。ハートビートモニターは、プラグインモジュールを使用して、パートナーのハートビート状態を問い合わせます。
この章では、次の内容について説明します。
Sun Cluster Geographic Edition のハートビートは、複数のハートビートプラグインのコンテナになっています。ハートビートには、名前と、調整可能なプロパティー Query_interval が 1 つあります。Query_interval プロパティーは、ハートビート状態要求間の遅延を指定します。
ハートビートプラグインにより、実際の物理的な監視アクティビティーが簡易化されます。プラグインは、必須の照会コマンドまたは照会ライブラリ、オプションの要求エージェントおよび応答エージェント、タイプ、および Plugin_properties 文字列によって定義されます。
Sun Cluster Geographic Edition 製品には、次のデフォルトプラグインが用意されています。
tcp_udp_plugin — クラスタ論理ホスト IP アドレスに対して単純なハートビート検査を実行します。tcp_udp_plugin が UDP ポート 2084 を使用できない場合、このプラグインは TCP ポート 2084 の使用を試みます。
icrm_plugin — 論理ホスト名を使用し、リモートクラスタ上で実行されているクラスタ管理エージェントを呼び出します。
ping_plugin — リモートクラスタ上のクラスタ論理ホスト名に対して ping を実行します。
カスタムハートビートを指定せずに geops create または geops join コマンドを実行すると、そのたびに、デフォルトのハートビートプラグインを使用するデフォルトのハートビートが作成されます。デフォルトのハートビートの名前は、hb_local-cluster-name~remote-cluster-name という形式になります。geops コマンドについては、geops(1M) のマニュアルページを参照してください。
カスタムハートビートプラグインを作成し、このプラグインに、デフォルトのハートビートや新しいカスタムハートビートを関連付けることができます。
カスタムハートビートは特殊な用途向けであり、構成時には注意が必要です。使用中のシステムでカスタムハートビートを使用する必要がある場合は、Sun の技術担当者に問い合わせてください。
この節では、ハートビートの作成手順について説明します。
新しいハートビートを作成するには、次の手順に従います。ハートビートをパートナーシップと併用する予定がある場合は、パートナーシップを作成する前にハートビートを作成する必要があります。カスタムハートビートを作成する前にパートナーシップを作成すると、パートナーシップが使用するデフォルトのハートビートによってカスタムハートビートの作成が阻止されます。
カスタムハートビートが存在すると、パートナーシップを作成している間、デフォルトのハートビートは使用されません。パートナーシップでデフォルトのハートビートを使用するには、geops create コマンドの実行前にカスタムハートビートを削除する必要があります。
クラスタノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
ハートビートを作成します。
# geohb create -r remote-clustername \ [-p property-setting [-p...]] heartbeat-name |
リモートパートナーである二次クラスタの名前を指定します
name=statement ペアによって値が割り当てられるハートビートプロパティーを指定します。複数の文を使用することで、複数のプロパティーを一度に設定できます。
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
ハートビートの識別子を指定します。
同一のパートナーシップに参加している各クラス タ上のカスタムハートビート名には、異なる名前を付ける必要があります。この名前は、ハートビートを一意に識別するものを選択してください。たとえば、クラスタ cluster-paris では paris-to-newyork、クラスタ cluster-newyork では newyork-to-paris のような名前を指定できます。
geohb コマンドについては、geohb(1M) のマニュアルページを参照してください。
この例では、paris-to-newyork というハートビートを作成する方法を示します。
# geohb create -r cluster-newyork paris-to-newyork |
この節では、ハートビートプラグインの作成手順について説明します。
クラスタノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
既存のハートビートにハートビートプラグインを追加します。
# geohb add-plugin heartbeat-name plug-in-name \ [-p property-setting [-p...]] |
ローカルクラスタ上のハートビートに識別子を指定します。
ハートビートプラグインの名前を指定します。
name=statement ペアによって値が割り当てられるハートビートプラグインプロパティーを指定します。複数の文を使用することで、複数のプロパティーを一度に設定できます。
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
geohb コマンドについては、geohb(1M) のマニュアルページを参照してください。
この例では、command1 というハートビートプラグインを作成する方法を示します。
# geohb add-plugin paris-to-newyork command1 -p Query_cmd=/usr/bin/hb/ |
この節では、ハートビートプラグインプロパティーを変更する手順について説明します。プラグインプロパティーを変更すると、その変更はただちに反映されます。
クラスタノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
ハートビートプラグインのプロパティーを変更します。
# geohb modify-plugin -p property-setting \ [-p...] plugin-name heartbeat-name |
ハートビートの識別子を指定します。
ハートビートプラグインの名前を指定します。
name=statement ペアによって値が割り当てられるハートビートプラグインプロパティーを指定します。複数の文を使用することで、複数のプロパティーを一度に設定できます。
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
デフォルトプラグインのプロパティーの中には編集できないものがあります。
Sun Cluster Geographic Edition ソフトウェアでサポートされる名前と値については、付録 B 「Sun Cluster Geographic Edition エンティティーに使用できる名前と値」を参照してください。
geohb コマンドについては、geohb(1M) のマニュアルページを参照してください。
この例では、TCP だけを使用するようにデフォルトの TCP/UDP プラグイン tcp_udp_plugin の設定を変更する方法を示します。
# geohb modify-plugin -p Plugin_properties=paris-cluster/TCP/2084 \ tcp_udp_plugin hb_cluster-paris~cluster-newyork |
この節では、ハートビートとハートビートプラグインの削除手順について説明します。
クラスタノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
ハートビートを削除します。
# geohb delete heartbeat-name |
ハートビート設定の識別子を指定します
geohb コマンドについては、geohb(1M) のマニュアルページを参照してください。
デフォルトハートビート tcp_upd_plugin 、icrm_plugin、ping_plugin は削除しないでください。
この例では、paris-to-newyork というハートビートを削除する方法を示します。
# geohb delete paris-to-newyork |
クラスタノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
ハートビートからプラグインを除去します。
# geohb remove-plugin plugin-name heartbeat-name |
カスタムハートビートプラグインの名前を指定します。
このプラグインが含まれるハートビートの識別子を指定します。
デフォルトのプラグイン icrm_plugin を削除することはできません。
Sun Cluster Geographic Edition ソフトウェアでサポートされる名前と値については、付録 B 「Sun Cluster Geographic Edition エンティティーに使用できる名前と値」を参照してください。
geohb コマンドについては、geohb(1M) のマニュアルページを参照してください。
この例では、ハートビート paris-to-newyork からプラグイン command1 を除去する方法を示します。
# geohb remove-plugin command1 paris-to-newyork |
この節では、ハートビート構成情報を出力する方法について説明します。
クラスタノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
特定のハートビートまたはハートビートサブシステム全体の現在の構成情報を表示します。
# geohb list [heartbeat-name-list] |
ローカルクラスタ上の特定のハートビートの名前を指定して、その構成情報を出力します
ハートビート名のリストを指定しないでこのコマンドを実行すると、構成されているすべてのハートビートの情報が表示されます。
geohb コマンドについては、geohb(1M) のマニュアルページを参照してください。
この例では、paris-to-newyork ハートビートについての情報を表示する方法を示します。
# geohb list paris-to-newyork |
デフォルトのハートビートは、パートナーシップの作成時に作成されます。カスタムハートビートを使用する場合は、パートナーシップを作成する前にカスタムハートビートを作成するべきです。geohb set-prop コマンドを使用すると、デフォルトのハートビートまたはカスタムハートビートのプロパティーを変更できます。このコマンドについては、geohb(1M) のマニュアルページを参照してください。
カスタムハートビートは特殊な用途向けであり、構成時には注意が必要です。使用中のシステムでカスタムハートビートを使用する必要がある場合は、Sun の技術担当者に問い合わせてください。
Query_interval プロパティーのデフォルト値を変更する場合、照会間隔が十分な長さになるようにしてください。間隔が短すぎると、論理ホスト名リソースが利用できる状態になる前にタイムアウトとハートビート喪失イベントが発生します。このようなフェイルオーバーは、ハートビート要求に対して応答がない状態が 2 回を超えない結果となるはずです。query_interval のデフォルト値を 120 秒、heartbeat.retries パラメタのデフォルトを 3 に設定すると、ピアクラスタは障害の誤報告を表示することなく 6 分間 (120 * 3 ) 応答しなくなります。
heartbeat.retries パラメタは、com.sun.cluster.agent.geocontol.xml ファイルで指定されます。
Query_interval プロパティーの遅延設定を調整する場合は、次の条件を満たすように調整するべきです。
Query_interval > worst-case logical-host failover time / 2 |
該当のクラスタの論理ホストフェイルオーバー時間は、経験から判断する必要があります。
障害の誤報告を防ぐには、次の条件を満たす必要があります。
Query_interval > worst-case logical-host failover time / 3 |
通常、heartbeat.retries 値を変更する必要はありません。heartbeat.retries プロパティーのデフォルト値を変更する場合は、ご購入先に問い合わせてください。
クラスタノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
ハートビートのプロパティーを変更します。
# geohb set-prop -p property-setting \ [-p...] heartbeat-name |
ハートビートのデフォルトのプロパティーを設定します
ハートビートプロパティーに値を割り当てるには、name=statement のペアを使用します。複数の文を使用することで、複数のプロパティーを一度に設定できます。
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
ハートビート設定の識別子を指定します
Sun Cluster Geographic Edition ソフトウェアでサポートされる名前と値については、付録 B 「Sun Cluster Geographic Edition エンティティーに使用できる名前と値」を参照してください。
geohb コマンドについては、geohb(1M) のマニュアルページを参照してください。
次に、cluster-paris と cluster-newyork 間のデフォルトのハートビートの設定を変更する例を示します。
# geohb set-prop -p Query_interval=60 hb_cluster-paris~cluster-newyork |
カスタムハートビートプラグインを作成し、このプラグインを使用するように既存のデフォルトのハートビートや新しいカスタムハートビートを構成することができます。
カスタムハートビートは特殊な用途向けであり、構成時には注意が必要です。使用中のシステムでカスタムハートビートを使用する必要がある場合は、Sun の技術担当者に問い合わせてください。
カスタムハートビートを構成するときは、そのカスタムハートビートの名前がパートナークラスタ上のカスタムハートビートの名前と重複しないようにしてください。
カスタムハートビートが存在する場合、パートナーシップを作成している間、デフォルトのハートビートは使用されません。パートナーシップでデフォルトのハートビートを使用するには、geops create コマンドの実行前にカスタムハートビートを削除する必要があります。
ハートビートを作成すると、Sun Cluster Geographic Edition ソフトウェアにより、カスタムハートビートプラグインに次の引数が渡されます。
Query-interval プロパティーの値。ハートビート状態要求に失敗したことが宣言されるまでの時間を秒数で指定します
プラグイン起動時のモード。Normal または Emergency のいずれかです。
ハートビートプラグインに設定されている Plugin-properties プロパティーの値
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
カスタムハートビートプラグインは、二次クラスタ上でハートビートを検査し、次に示す終了値のいずれかを返します。
成功した場合はゼロ。二次クラスタが有効であることを示す
失敗した場合はゼロ以外の値。二次クラスタがハートビート検査に応答しなかったことを示す
主クラスタ内のノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
デフォルトのハートビートにカスタムハートビートプラグインを追加します。
# geohb add-plugin -p property-setting [-p...] \ plugin-name hb_local-cluster-name-remote-cluster-name |
name=statement のペアを使用してハートビートプラグインのプロパティーを設定します
Query_cmd プロパティーを使用して、カスタムハートビートプラグインのパスを指定します。
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
カスタムハートビートプラグインの名前を指定します
カスタムハートビートプラグインを追加するデフォルトのハートビートの名前を指定します
変更が正しく行われたことを確認します。
# geoadm status |
二次クラスタの任意のノード上で、これまでの手順を繰り返します。
次に、カスタムハートビートプラグイン command1 をデフォルトのハートビート hb_cluster-paris~cluster-newyork に追加する例を示します。
# geohb add-plugin -p query_cmd=/usr/bin/hb command1 \ hb_cluster-paris~cluster-newyork # geoadm status |
クラスタノードの 1 つにログインします。
この手順を行うには、Geo Management RBAC 権利プロファイルがユーザーに割り当てられている必要があります。RBAC の詳細は、「Sun Cluster Geographic Edition ソフトウェアと RBAC」を参照してください。
新しいカスタムハートビートを作成します。
# geohb create -r remote-clustername \ [-p property-setting [-p...]] heartbeat-name |
リモートパートナーである二次クラスタの名前を指定します
ハートビートのデフォルトのプロパティーを設定します
ハートビートプロパティーに値を割り当てるには、name=statement のペアを使用します。
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
ハートビート設定の識別子を指定します
同一のパートナーシップに参加している各クラス タ上のカスタムハートビート名には、異なる名前を付ける必要があります。この名前は、ハートビートを一意に識別するものを選択してください。たとえば、クラスタ cluster-paris では paris-to-newyork、クラスタ cluster-newyork では newyork-to-paris のような名前を指定できます。
geohb コマンドについては、geohb(1M) のマニュアルページを参照してください。
ハートビートにカスタムハートビートプラグインを追加します。
# geohb add-plugin -p property-setting [-p...] \ plugin-name heartbeat-name |
name=statement のペアを使用してハートビートプラグインのプロパティーを設定します
Query_cmd プロパティーを使用して、カスタムハートビートプラグインのパスを指定します。
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
カスタムハートビートプラグインの名前を指定します
ハートビート設定の識別子を指定します
前の手順で作成したハートビートを使用するパートナーシップを作成します。
# geops create -c remote-cluster-name -h heartbeat-name \ [-p property-setting [-p...]] partnership-name |
パートナーシップに参加するリモートクラスタの名前を指定します
この名前は、リモートクラスタ上の Sun Cluster Geographic Edition インフラストラクチャーで使用されている論理ホスト名と一致します。
パートナークラスタが使用できる状態か監視するためにパートナーシップ内で使用されるカスタムハートビートを指定します
文字列 name=value のように対をなす文で、パートナーシップのプロパティー値を設定します
設定できるプロパティーについての詳細は、付録 A 「Sun Cluster Geographic Edition の標準プロパティー」を参照してください。
パートナーシップの名前を指定します
パートナーシップにカスタムハートビートを追加すると、icrm_plugin という名前のデフォルトプラグインが作成されます。
geops create コマンドを使用してパートナーシップを作成する方法については、「パートナーシップを作成する方法」を参照してください。
変更が正しく行われたことを確認します。
# geoadm status |
この例では、ハートビート paris-to-newyork を作成する方法を示します。このハートビートは、カスタムハートビートプラグインを使用し、このハートビートを新しいパートナーシップに関連付けます。
# geohb create -r cluster-newyork paris-to-newyork # geohb add-plugin -p query_cmd=/usr/bin/hb/ command1 paris-to-newyork # geops create -c cluster-newyork -h paris-to-newyork paris-newyork-ps # geoadm status |
ハートビートが失われたとき、電子メール通知を送信するか、あるいはアクションスクリプトを実行するように、Sun Cluster Geographic Edition ソフトウェアを構成できます。ハートビート喪失通知は、オプションの Notification_emailaddrs プロパティーと Notification_actioncmd プロパティーを使用して構成します。
ハートビート喪失通知は、ハートビートの Query_interval プロパティーで設定した時間が経過してもハートビート異常が継続する場合に送信されます。ハートビートモニターは、Query_interval に設定された時間間隔で、論理ホスト上の応答側にハートビート要求を送信します。Query_interval に設定された時間内に応答がなかった場合、内部カウントの値が増加します。この値が heartbeat.retries プロパティーに設定された数に達すると、ハートビートが異常な状態になったと見なされます。
たとえば、Query_interval と heartbeat.retries の両方にデフォルト値を設定することができます (120 秒と 3)。この場合、パートナークラスタから最後にハートビート応答があってから 10 分以内にハートビート喪失イベントが送信されます。
120sec (delay since last query) + 3*120sec (wait for normal response) + 120 sec (wait for retry response) |
ハートビート喪失システムイベントが発生してからハートビート喪失通知がトリガーされるまでの間に、遅延がさらに発生する可能性があります。電子メール通知を設定している場合は、さらに電子メールの配信遅延が発生することもあります。
ハートビート喪失イベントが発生しても、必ずしもリモートクラスタがクラッシュしたとは限りません。
これ以降の節では、ハートビート喪失通知プロパティーの設定方法と、ハートビート喪失イベントの発生時に Sun Cluster Geographic Edition ソフトウェアが実行するカスタムアクションスクリプトの作成方法について説明します。
ハートビート喪失通知の設定には、2 つのパートナーシッププロパティー、Notification_emailaddrs と Notification_actioncmd を使用します。これらのプロパティーの設定には、geops コマンドを使用します。
これらのプロパティーは、パートナーシップの作成時にデフォルトのハートビートに対して設定できます。詳細は、「パートナーシップを作成する方法」を参照してください。「ハートビートのプロパティーを変更する方法」に記載されている方法でも、これらのプロパティーを変更できます。
電子メールでハートビート喪失通知を受けるには、Notification_emailaddrs プロパティーを設定します。コンマで区切り、複数の電子メールアドレスを指定できます。電子メール通知を使用する場合は、クラスタノードが電子メールクライアントとして構成されていなければいけません。メールサービスの設定方法については、『Solaris のシステム管理 (ネットワークサービス)』を参照してください。
ハートビート喪失時にコマンドを実行するには、Notification_actioncmd プロパティーを設定します。
既存のパートナーシップ paris-newyork-ps に通知先の電子メールアドレスとカスタム通知スクリプトを指定するには、次のようにします。
phys-paris-1# geops set-prop \ -p Notification_emailaddrs=ops@paris.com,ops@newyork.com \ -p Notification_actioncmd=/opt/hb_action.sh paris-newyork-ps |
ローカルのクラスタがパートナークラスタ側のハートビート喪失を検出したときに実行される、アクションシェルスクリプトを作成できます。このスクリプトはルートアクセス権を使用して実行されるため、ファイルには、ルートユーザーの所有権と実行権を指定する必要があります。
Notification_actioncmd プロパティーを設定している場合は、イベントに関する情報を提供する引数を次のようにコマンド行に指定してアクションコマンドを実行します。
# custom-action-command-path -c local-cluster-name -r remote-cluster-name -e 1 \ -n node-name -t time |
作成したアクションコマンドのパスを指定します
ローカルクラスタの名前を指定します
リモートパートナークラスタの名前を指定します
ハートビート喪失イベントが発生したことを示す HBLOST=1 を指定します
ハートビート喪失イベント通知を送信するクラスタノードの名前を指定します
ハートビート喪失イベントの発生時刻を、1970 年 1 月 1 日 00:00:00 (グリニッジ平均時) からの経過時間 (ミリ秒単位) で指定します
このスクリプトを使用して、二次クラスタへのテイクオーバーを自動化することができます。しかし、このような自動処理には危険もあります。主クラスタと二次クラスタの両方で、すべてのハートビート接続が完全に失われた結果としてハートビート喪失通知が送信された場合、二次クラスタへのテイクオーバーが自動的に行われるように設定していると、主クラスタが 2 つ存在するという状況が発生する可能性があります。
この例は、コマンド行に入力されたイベント情報が通知アクションシェルスクリプトで解析される状況を示しています。
#!/bin/sh set -- `getopt abo: $*` if [ $? != 0] then echo $USAGE exit 2 fi for i in $* do case $i in -p) PARTNER_CLUSTER=$1; shift;; -e) HB_EVENT=$2; shift;; -c) LOCAL_CLUSTER=$3; shift;; -n) EVENT_NODE=$4; shift;; esac done |