Sun Enterprise 10000 SSP 3.4 ユーザーマニュアル

自動フェイルオーバーの動作

メイン SSP からスペア SSP への自動フェイルオーバーは、以下のように行われます。

以下の節では、SSP フェイルオーバーの基本的な状況と自動フェイルオーバーを制御するさまざまな方法について概説します。

SSP のフェイルオーバー状況

デュアル SSP 構成の障害によってメイン SSP の適正な動作が影響を受けたときに自動フェイルオーバーが起動します。障害の原因として、以下が考えられます。

ただし、オペレータの要求によってフェイルオーバーが使用不可になっている場合、または障害状態によってフェイルオーバーを防止している場合はフェイルオーバーが発生しないので注意してください。さまざまな障害状態とその結果生じるフェイルオーバー処理は、第 11 章「SSP の内部構造」にまとめてあります。第 11 章では、フェイルオーバープロセスによって検出される障害を障害箇所ごとに説明しています。

SSP フェイルオーバーの自動制御

SSP フェイルオーバー機能は、SSP のインストールまたはアップグレード時に自動的に使用可能になります。フェイルオーバー状態の制御には、setfailover(1M) コマンドを使用します。このコマンドで可能な処理は、以下のとおりです。

詳細は、setfailover(1M) マニュアルページを参照してください。

SSP フェイルオーバーを使用不可にする
  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% setfailover off
    

    SSP フェイルオーバーは、ユーザーが使用可能にするまで使用不可のままです。フェイルオーバーが使用不可になっているかどうかを確認するには、「フェイルオーバー状態情報の取得」で説明するように、showfailover(1M) コマンドを使用してフェイルオーバー状態を調べます。

SSP フェイルオーバーを使用可能にする

使用不可のフェイルオーバーを setfailover(1M) コマンドを使用して使用可能にする場合は、その前に接続状態をチェックします。フェイルオーバーを使用可能にする前に、すべての接続リンクが正しく機能している必要があります。障害のある接続が1つでもあると、フェイルオーバーは使用不可になります。

  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% setfailover on
    

    制御ボード接続がすべて動作している場合に、SSP フェイルオーバーが有効になります。フェイルオーバーが使用可能になっているかどうかを確認するには、「フェイルオーバー状態情報の取得」で説明するように、showfailover(1M) コマンドを使用してフェイルオーバー状態と接続状態を調べます。


    注 -

    setfailover コマンドが制御ボード接続をチェックしている間数分待ってから、フェイルオーバー状態を確認してください。


スペア SSP に対してフェイルオーバーを強制する

注 -

SSP フェイルオーバーを強制する前に、メインとスペアの両方の SSP が同期していることを確認します。setdatasync(1M) コマンドを使用してメイン SSP とスペア SSP の間で SSP 構成ファイルの同期をとります。


  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% setfailover force
    

    強制フェイルオーバーが発生したかどうかを確認するには、showfailover(1M) コマンドを使用してフェイルオーバー状態と接続状態を調べます。詳細は、「フェイルオーバー状態情報の取得」を参照してください。

ssp_resource ファイルのメモリーまたはディスク容量のしきい値を変更する

メモリーまたはディスク容量のリソースが一定のしきい値を下回っていると、フェイルオーバーが発生します。ただし、setfailover(1M) コマンドを使用すれば、これらのリソースのしきい値 (ssp_resource(4) ファイルに格納されています) を変更することができます。

  1. ユーザー名 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

フェイルオーバー状態の情報は、以下のとおりです。

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 上のファイルは、datasyncd デーモンによって監視されません。つまり、スペア SSP 上のユーザー作成ファイルを削除した場合に、そのファイルはメイン SSP からスペア SSP に自動的に復元 (コピー) されるわけではありません。


詳細は、setdatasync(1M) マニュアルページを参照してください。

ファイルをデータ伝播リストに追加する
  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% setdatasync -i interval schedule filename 
    

    ここで、interval は、filename で指定したファイルがデータ同期プロセスの一部としてチェックされる頻度 (分) です。ファイル名は、絶対パスで指定する必要があります。データ伝播リストのファイルがスペア SSP にコピーされるのは、これらのファイルがメイン SSP 上で変更された場合だけです。ファイルがチェックされるたびにコピーされるわけではありません。

ファイルをデータ伝播リストから削除する
  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% setdatasync cancel filename 
    

    ここで、filename はデータ伝播リストから削除するファイルです。ファイル名は、絶対パスで指定する必要があります。

データ伝播リストを削除する

このオプションは、シングル SSP 構成でディスク容量を制御するのに有用です。この構成では、データ伝播リストが非常に大きくなり、不要なディスク容量が消費されます。このオプションによってメイン SSP とスペア SSP の間でデータが非同期になることがあるため、デュアル SSP 構成ではこのオプションをなるべく使用しないでください。

  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% setdatasync clean  
    

ファイルをスペア SSP にプッシュする
  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% setdatasync push filename 
    

    ここで、filename は、データ伝播リストに追加しないでスペア SSP に移動するファイルです。ファイル名は、絶対パスで指定する必要があります。

メイン SSP とスペア SSP の間で再び SSP 構成ファイルの同期をとる
  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% setdatasync backup  
    

    メイン SSP 上のすべての SSP 構成データのデータ同期バックアップファイルが作成され、スペア SSP 上に復元されます。バックアップファイルが /tmp ディレクトリの使用可能ディスク容量を超えた場合は、データ同期バックアップが失敗します。データ同期バックアップファイルのサイズを小さくする方法の詳細は、以下の手順を参照してください。

データ同期バックアップファイルのサイズを小さくする
  1. ssp_backup(1M) を実行して SSP 環境のアーカイブを作成します。

  2. 以下のファイルを削除して、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 上でこれらのコマンドを再実行します。コマンド同期の処理は、以下のとおりです。

フェイルオーバーの後にユーザーコマンドを自動回復したい場合は、以下の節で説明するように、同期のためにこれらのコマンドを準備する必要があります。

自動再起動のためのユーザーコマンドの準備

runcmdsync(1M) コマンドは、自動再起動のためにユーザーコマンドを準備します。runcmdsync は、ユーザーコマンドをコマンド同期リストに追加します。このリストによって、フェイルオーバーの後に再実行するコマンドを特定します。

再起動のためにユーザーコマンドを準備する
  1. ユーザー名 ssp でメイン SSP にログインし、以下のように入力します。


    ssp% runcmdsync script_name [parameters] 
    

    ここで、script_name は再起動するユーザーコマンドの名前で、parameters は指定のコマンドに関連するオプションです。指定のコマンドは、フェイルオーバーの後に新しいメイン SSP 上で自動的に再実行されます。

自動回復のためのユーザースクリプトの準備

スクリプト内の指定した任意のポイント (位置) からユーザースクリプト処理を再開する場合は、以下の同期コマンドをユーザースクリプトに入れる必要があります。

同期のためにスクリプトを初期化してコマンド同期リストからコマンドを削除するには、各スクリプトに initcmdsynccancelcmdsync コマンドを入れる必要があります。同期コマンドの詳細は、cmdsync(1M) マニュアルページを参照してください。


注 -

これは、経験豊富なプログラマ向けの同期コマンドです。回復のためにスクリプトを準備するには、この節で説明した同期コマンドの代わりに runcmdsync(1M) コマンドを使用することができます。ただし、runcmdsync(1M) コマンドは指定のマーカーポイントからではなく最初から再実行するようにスクリプトを準備します。


以下の手順は、これらの同期コマンドの使用方法です。


注 -

SSP フェイルオーバーの後やシングル SSP 構成では、SSP フェイルオーバーは使用不可です。フェイルオーバーが使用不可である場合は、同期コマンドを含むスクリプトによって、プラットフォームログファイルに対するエラーメッセージが生成され、ゼロ以外の終了コードが返されます。これらのエラーメッセージは、無視することもできます。


コマンド同期記述子を作成する
  1. ユーザースクリプトに以下のように入力し、スクリプトを識別するコマンド同期記述子を作成します。


    initcmdsync script_name [parameters]

    ここで、script_name はスクリプト名で、parameters は指定スクリプトに関連するオプションです。initcmdsync コマンドから返される出力は、コマンド同期記述子として機能します。

コマンド同期マーカーポイントを指定する
  1. ユーザースクリプトに以下のように入力し、処理を再開できる実行ポイントを指定します。


    savecmdsync -M identifier cmdsync_descriptor 
    

    ここで、-M identifier はスクリプトを再起動できる実行ポイントを指定する正の整数で、cmdsync_descriptorinitcmdsync コマンドによって出力されるコマンド同期記述子です。

コマンド同期記述子を削除する
  1. ユーザースクリプトの最後のシーケンスの後に、以下のように入力します。


    cancelcmdsync cmdsync_descriptor
    

    ここで、cmdsync_descriptorinitcmdsync コマンドによって出力されるコマンド同期記述子です。指定の記述子がコマンド同期リストから削除され、フェイルオーバーの後に新しいメイン 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 フェイルオーバー後の作業

SSP フェイルオーバーの発生後、以下の回復作業を行う必要があります。