メイン SSP からスペア SSP への自動フェイルオーバーは、以下のように行われます。
フェイルオーバーの監視
フェイルオーバーの監視は、fod デーモンによって行われます。このデーモンは、デュアル SSP 構成のコンポーネントが障害状態であるかどうかを連続して監視します。フェイルオーバー状態が検出されると、fod デーモンが ssp_startup デーモンとともに、メイン SSP からスペア SSP へのフェイルオーバーを実際に開始します。
fod デーモン、およびこのデーモンが検出するさまざまな障害状態については、第 11 章「SSP の内部構造」を参照してください。
データの同期
フェイルオーバーのためには、メイン SSP 上のデータがスペア SSP 上のデータと同期している必要があります。データ同期デーモンによって、すべての SSP 構成ファイルと指定のユーザー作成ファイル (データ伝播リストで特定された) がメイン SSP からスペア SSP にコピーされ、障害発生時に両方の SSP の同期がとられます。「データ同期の管理」で説明するように、このデータ同期プロセスの制御には setdatasync(1M) コマンドを使用します。
datasyncd デーモンの詳細は、第 11 章「SSP の内部構造」を参照してください。
コマンドの同期
自動フェイルオーバーによって中断されたユーザー定義コマンドの回復を「コマンドの同期」と呼びます。同期コマンドを使用して、フェイルオーバーの後に新しいメイン SSP 上でこれらのユーザーコマンドを再実行する方法を指定します。コマンド同期制御についての詳細は、「コマンド同期の実行」を参照してください。
浮動 IP アドレス
動作中のメイン SSP の特定には、SSP 3.4 のインストールまたはアップグレード中に割り当てた浮動 IP アドレスを使用します。この浮動 IP アドレスは、論理インタフェースです。このインタフェースによって、特定の SSP ホスト名がなくても Sun Enterprise 10000 ドメインとメイン SSP の間の通信が可能になります。フェイルオーバーが発生すると、浮動 IP アドレスによって新しいメイン SSP が特定されます。このアドレスによって、外部監視ソフトウェアと動作中のメイン SSP の間の通信が可能になります。
以下の節では、SSP フェイルオーバーの基本的な状況と自動フェイルオーバーを制御するさまざまな方法について概説します。
デュアル SSP 構成の障害によってメイン SSP の適正な動作が影響を受けたときに自動フェイルオーバーが起動します。障害の原因として、以下が考えられます。
障害の発生したネットワーク接続
SSP システム障害の原因
システムパニック
完全な電源故障
一定期間持続する OpenBoot PROM (OBP) の機能低下
リソースの減少
リソースの減少とは、SSP の動作に必要なディスク容量と仮想記憶が不足することです。このようにリソースが一定のしきい値を下回る場合は、fodデーモンがフェイルオーバーを開始します。これらのリソースはssp_resource(4) ファイルに格納されており、setfailover コマンドで変更することができます。詳細は、「ssp_resource ファイルのメモリーまたはディスク容量のしきい値を変更する」を参照してください。
ただし、オペレータの要求によってフェイルオーバーが使用不可になっている場合、または障害状態によってフェイルオーバーを防止している場合はフェイルオーバーが発生しないので注意してください。さまざまな障害状態とその結果生じるフェイルオーバー処理は、第 11 章「SSP の内部構造」にまとめてあります。第 11 章では、フェイルオーバープロセスによって検出される障害を障害箇所ごとに説明しています。
SSP フェイルオーバー機能は、SSP のインストールまたはアップグレード時に自動的に使用可能になります。フェイルオーバー状態の制御には、setfailover(1M) コマンドを使用します。このコマンドで可能な処理は、以下のとおりです。
SSP フェイルオーバーを使用不可、使用可能にしたり、強制する。
ssp_resource ファイルのメモリーまたはディスク容量のしきい値を表示または設定する。
ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。
ssp% setfailover off |
SSP フェイルオーバーは、ユーザーが使用可能にするまで使用不可のままです。フェイルオーバーが使用不可になっているかどうかを確認するには、「フェイルオーバー状態情報の取得」で説明するように、showfailover(1M) コマンドを使用してフェイルオーバー状態を調べます。
使用不可のフェイルオーバーを setfailover(1M) コマンドを使用して使用可能にする場合は、その前に接続状態をチェックします。フェイルオーバーを使用可能にする前に、すべての接続リンクが正しく機能している必要があります。障害のある接続が1つでもあると、フェイルオーバーは使用不可になります。
ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。
ssp% setfailover on |
制御ボード接続がすべて動作している場合に、SSP フェイルオーバーが有効になります。フェイルオーバーが使用可能になっているかどうかを確認するには、「フェイルオーバー状態情報の取得」で説明するように、showfailover(1M) コマンドを使用してフェイルオーバー状態と接続状態を調べます。
setfailover コマンドが制御ボード接続をチェックしている間数分待ってから、フェイルオーバー状態を確認してください。
SSP フェイルオーバーを強制する前に、メインとスペアの両方の SSP が同期していることを確認します。setdatasync(1M) コマンドを使用してメイン SSP とスペア SSP の間で SSP 構成ファイルの同期をとります。
ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。
ssp% setfailover force |
強制フェイルオーバーが発生したかどうかを確認するには、showfailover(1M) コマンドを使用してフェイルオーバー状態と接続状態を調べます。詳細は、「フェイルオーバー状態情報の取得」を参照してください。
メモリーまたはディスク容量のリソースが一定のしきい値を下回っていると、フェイルオーバーが発生します。ただし、setfailover(1M) コマンドを使用すれば、これらのリソースのしきい値 (ssp_resource(4) ファイルに格納されています) を変更することができます。
ユーザー名 ssp でメイン SSP にログインし、以下のいずれかの処理を行います。
メモリーのしきい値を変更する場合は、以下のように入力します。
ssp% setfailover -m memory_threshold |
ここで、memory_threshold は更新後の仮想メモリーの値 (KB) です。
ディスク容量のしきい値を変更する場合は、次のように入力します。
ssp% setfailover -d disk_space_threshold |
ここで、disk_space_threshold は更新後のディスク容量の値 (KB) です。
setfailover(1M) コマンドで -m または -d オプションだけを指定すれば、更新後のしきい値を確認することができます。
メイン SSP 上で showfailover(1M) コマンドを使用すれば、フェイルオーバー状態の情報を表示できます。たとえば、以下のようなフェイルオーバー情報が表示されます。
ssp% showfailover Failover State: SSP Failover: Disabled CB Failover: Active Failover Connection Map: Main SSP to Spare SSP thru Main Hub: FAILED Main SSP to Spare SSP thru Spare Hub: FAILED Main SSP to Primary Control Board: GOOD Main SSP to Spare Control Board: GOOD Spare SSP to Main SSP thru Main Hub: FAILED Spare SSP to Main SSP thru Spare Hub: FAILED Spare SSP to Primary Control Board: FAILED Spare SSP to Spare Control Board: FAILED SSP/CB Host Information Main SSP: xf12-ssp Spare SSP: xf12-ssp2 Primary Control Board (JTAG source): xf12-cb1 Spare Control Board: xf12-cb0 System Clock source: xf12-cb1 |
フェイルオーバー状態の情報は、以下のとおりです。
フェイルオーバー状況 (Failover State)
フェイルオーバー状況は、以下のいずれかです。
有効 (Active) ― 自動フェイルオーバーが使用可能で正常に機能しています。
使用不可 (Disabled) ― オペレータの要求、またはフェイルオーバーを発生できない障害状態によって自動フェイルオーバーが使用不可になっています。
障害発生 (Failed) ― フェイルオーバーが発生しています。
フェイルオーバーの後は、setfailover(1M) コマンドを使用してフェイルオーバーを再び使用可能にするまでフェイルオーバー状態は「障害発生 (Failed)」です。すべての接続を修正しフェイルオーバー接続マップで「GOOD」と示された場合でも、フェイルオーバーを手作業で再び使用可能にする必要があります (以下を参照)。
フェイルオーバー接続マップ
接続マップには、フェイルオーバープロセスによって監視された制御ボードの接続リンク状態が示されます。接続リンクの状態は、「GOOD」(接続が正しく機能していることを示します) または「FAILED」(接続が機能していないことを示します)です。
接続に障害が発生している場合は、この接続マップを使用して障害状態を判定してください。さまざまな障害箇所における障害状態についての詳細は、第 11 章「SSP の内部構造」の「フェイルオーバー検出箇所の説明」を参照してください。
SSP/CB ホスト情報
このホスト情報は、SSP、制御ボード、JTAG インタフェースとシステムクロックを管理する制御ボードに関するものです。
showfailover(1M) コマンドで -r オプションを指定すれば、現在の SSP の役割についての情報を取得することができます。SSP の役割は、「UNKNOWN (SSP の役割が確定されていない)」、「MAIN」、または「SPARE」です。
showfailover(1M) コマンドの詳細については、showfailover(1M) マニュアルページを参照してください。
フェイルオーバーのためにスペア SSP 上で管理する必要があるユーザー作成ファイル (SSP ディレクトリに含まれていない非 SSP ファイル) がある場合は、データ同期に使用されるデータ伝播リストでこれらのファイルを特定する必要があります。datasyncd デーモンは、このリストを使用して、メイン SSP からスペア SSP にコピーするファイルを判定します。
データ同期デーモンは、/tmp ディレクトリの使用可能なディスク領域を使用してメイン SSP からスペア SSP にファイルをコピーします。コピーするファイルが /tmp ディレクトリの容量を超える場合は、これらのファイルを伝播することはできません。たとえば、データ同期バックアップファイル (ds_backup.cpio) が /tmp ディレクトリの使用可能容量を超える場合は、データの伝播を行う前にこのファイルのサイズを小さくする必要があります。データ同期バックアップファイルのサイズを小さくする方法の詳細については、「データ同期バックアップファイルのサイズを小さくする」を参照してください。
setdatasync(1M) コマンドを使用して、以下の処理を行います。
ファイルをデータ伝播リストに追加し、このファイルの変更をチェックする頻度を指示する。
データ伝播リストからファイルを削除する。
データ伝播リスト内のエントリと一時ファイルをすべて消去し、データ伝播リストを削除する。
ファイルをデータ伝播リストに追加しないでスペア SSP に伝播 (プッシュ) する。
メイン SSP とスペア SSP の間で再び SSP 構成ファイルの同期をとる。
スペア SSP 上のファイルは、datasyncd デーモンによって監視されません。つまり、スペア SSP 上のユーザー作成ファイルを削除した場合に、そのファイルはメイン SSP からスペア SSP に自動的に復元 (コピー) されるわけではありません。
詳細は、setdatasync(1M) マニュアルページを参照してください。
ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。
ssp% setdatasync -i interval schedule filename |
ここで、interval は、filename で指定したファイルがデータ同期プロセスの一部としてチェックされる頻度 (分) です。ファイル名は、絶対パスで指定する必要があります。データ伝播リストのファイルがスペア SSP にコピーされるのは、これらのファイルがメイン SSP 上で変更された場合だけです。ファイルがチェックされるたびにコピーされるわけではありません。
ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。
ssp% setdatasync cancel filename |
ここで、filename はデータ伝播リストから削除するファイルです。ファイル名は、絶対パスで指定する必要があります。
このオプションは、シングル SSP 構成でディスク容量を制御するのに有用です。この構成では、データ伝播リストが非常に大きくなり、不要なディスク容量が消費されます。このオプションによってメイン SSP とスペア SSP の間でデータが非同期になることがあるため、デュアル SSP 構成ではこのオプションをなるべく使用しないでください。
ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。
ssp% setdatasync push filename |
ここで、filename は、データ伝播リストに追加しないでスペア SSP に移動するファイルです。ファイル名は、絶対パスで指定する必要があります。
ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。
ssp% setdatasync backup |
メイン SSP 上のすべての SSP 構成データのデータ同期バックアップファイルが作成され、スペア SSP 上に復元されます。バックアップファイルが /tmp ディレクトリの使用可能ディスク容量を超えた場合は、データ同期バックアップが失敗します。データ同期バックアップファイルのサイズを小さくする方法の詳細は、以下の手順を参照してください。
ssp_backup(1M) を実行して SSP 環境のアーカイブを作成します。
以下のファイルを削除して、setdatasync backup の実行時に作成されるデータ同期バックアップファイルのサイズを小さくします。
$SSPLOGGER/messages.x
$SSPLOGGER/domain/Edd-recovery_files
$SSPLOGGER/domain/messages.x
$SSPLOGGER/domain/netcon.x
$SSPLOGGER/domain/post/files
ここで、x はファイルのアーカイブ番号です。これらのファイルはフェイルオーバーの後に新しいメイン SSP からスペア SSP に伝播されるため、メイン SSP とスペア SSP の両方でこれらのファイルを削除して、ファイルが再び作成されないようにする必要があります。
メイン SSP 上で showdatasync(1M) コマンドを使用して、データ同期に関する情報を取得します。この節の例では、showdatasync コマンドで表示されるさまざまな情報を示しています。
次の例は、datasyncd デーモン (ファイル伝播) の状態、現在のデータ伝播リストに含まれるファイル、データ伝播のために待ち行列に入れられたファイルを示しています。
ssp% showdatasync File Propagation Status: ACTIVE Active File: - Queued files: 0 |
次の例は、データ伝播リストを示しています。
ssp% showdatasync -l TIME PROPAGATED INTERVAL FILE Mar 23 16:00:00 60 /tmp/t1 Mar 23 17:00:00 120 /tmp/t2 |
次の例は、データ同期のために待ち行列に入れられたファイルを示しています。
ssp% showdatasync -Q FILE /tmp/t1 /tmp/t2 |
詳細は、showdatasync(1M) マニュアルページを参照してください。
コマンド同期は、フェイルオーバーによって中断されたユーザー定義コマンドを回復し、フェイルオーバーの後に新しいメイン SSP 上でこれらのコマンドを再実行します。コマンド同期の処理は、以下のとおりです。
フェイルオーバーの後に再起動するコマンドを指定するコマンド同期リストをスペア SSP で保守する。各コマンドはユーザー ssp として実行される。
フェイルオーバーの後に、指定のユーザーコマンドを再実行する。
フェイルオーバーの後に、指定した任意のポイント (各スクリプト内で指定します) から指定のユーザースクリプトの処理を再開する。
これらのユーザースクリプトは、スクリプト内のラベルを付けたマーカーポイントから処理が再開できるように構成する必要があります。
フェイルオーバーの後にユーザーコマンドを自動回復したい場合は、以下の節で説明するように、同期のためにこれらのコマンドを準備する必要があります。
runcmdsync(1M) コマンドは、自動再起動のためにユーザーコマンドを準備します。runcmdsync は、ユーザーコマンドをコマンド同期リストに追加します。このリストによって、フェイルオーバーの後に再実行するコマンドを特定します。
ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。
ssp% runcmdsync script_name [parameters] |
ここで、script_name は再起動するユーザーコマンドの名前で、parameters は指定のコマンドに関連するオプションです。指定のコマンドは、フェイルオーバーの後に新しいメイン SSP 上で自動的に再実行されます。
スクリプト内の指定した任意のポイント (位置) からユーザースクリプト処理を再開する場合は、以下の同期コマンドをユーザースクリプトに入れる必要があります。
initcmdsync(1M) は、特定のスクリプトと関連データを特定するコマンド同期記述子を作成します。
これらの記述子は、自動フェイルオーバーの後に再起動するユーザースクリプトを判別するコマンド同期リストに記載されます。
savecmdsync(1M) は、スクリプトが再起動できるマーカーポイントを指定します。
cancelcmdsync(1M) は、コマンド同期リストからコマンド同期記述子を削除します。
同期のためにスクリプトを初期化してコマンド同期リストからコマンドを削除するには、各スクリプトに initcmdsync と cancelcmdsync コマンドを入れる必要があります。同期コマンドの詳細は、cmdsync(1M) マニュアルページを参照してください。
これは、経験豊富なプログラマ向けの同期コマンドです。回復のためにスクリプトを準備するには、この節で説明した同期コマンドの代わりに runcmdsync(1M) コマンドを使用することができます。ただし、runcmdsync(1M) コマンドは指定のマーカーポイントからではなく最初から再実行するようにスクリプトを準備します。
以下の手順は、これらの同期コマンドの使用方法です。
SSP フェイルオーバーの後やシングル SSP 構成では、SSP フェイルオーバーは使用不可です。フェイルオーバーが使用不可である場合は、同期コマンドを含むスクリプトによって、プラットフォームログファイルに対するエラーメッセージが生成され、ゼロ以外の終了コードが返されます。これらのエラーメッセージは、無視することもできます。
ユーザースクリプトに以下のように入力し、スクリプトを識別するコマンド同期記述子を作成します。
initcmdsync script_name [parameters] |
ここで、script_name はスクリプト名で、parameters は指定スクリプトに関連するオプションです。initcmdsync コマンドから返される出力は、コマンド同期記述子として機能します。
ユーザースクリプトに以下のように入力し、処理を再開できる実行ポイントを指定します。
savecmdsync -M identifier cmdsync_descriptor |
ここで、-M identifier はスクリプトを再起動できる実行ポイントを指定する正の整数で、cmdsync_descriptor は initcmdsync コマンドによって出力されるコマンド同期記述子です。
ユーザースクリプトの最後のシーケンスの後に、以下のように入力します。
cancelcmdsync cmdsync_descriptor |
ここで、cmdsync_descriptor は initcmdsync コマンドによって出力されるコマンド同期記述子です。指定の記述子がコマンド同期リストから削除され、フェイルオーバーの後に新しいメイン SSP 上でユーザースクリプトが実行されないようになります。
メイン SSP 上で showcmdsync(1M) コマンドを使用して、自動フェイルオーバーの後に新しいメイン SSP 上で再起動されるユーザーコマンドを特定するコマンド同期リストを見直します。
showcmdsync (1M) コマンドによって出力されるコマンド同期リストの例を次に示します。
ssp% showcmdsync DESCRIPTOR IDENTIFIER CMD 0 -1 c1 c2 a2 |
詳細は、showcmdsync(1M) マニュアルページを参照してください。
SSP 3.4 では、スクリプト内での同期コマンドの使用方法を示すユーザースクリプトのサンプルが添付されています。このスクリプトは、/opt/SUNWssp/examples/cmdsync ディレクトリにあります。このディレクトリには、このスクリプトの機能を説明する README ファイルも含まれています。
SSP フェイルオーバーの発生後、以下の回復作業を行う必要があります。
フェイルオーバーの原因となった障害箇所または障害状態を特定し、障害を修正する方法を決めます。
フェイルオーバー状態によっては、フェイルオーバーを開始するか使用不可にするかに注意します。障害箇所を特定するには、showfailover(1M) コマンドを使用してフェイルオーバー状態と接続状態を調べます。showfailover 出力の接続マップと、第 11 章「SSP の内部構造」のフェイルオーバー検出ポイントを見直します。
また、プラットフォームログファイルによって他のエラー状態を調べ、障害のあるコンポーネントの再起動に必要な修正処置を決めます。
問題を解決した後、setfailover(1M) コマンドを使用して SSP フェイルオーバーを再び使用可能にします (「SSP フェイルオーバーを使用可能にする」を参照) 。
フェイルオーバーによって中断された SSP コマンドをすべて再実行します。ただし、ADR コマンド (addboard(1M)、deleteboard(1M)、moveboard(1M)) は例外です。これらのコマンドは、新しいメイン SSP 上で自動的に再開されます。