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

第 8 章 SSP のフェイルオーバー

SSPには、オペレータが介入しなくても数分間でフェイルオーバー状態を検出し、メイン SSPをスペア SSPに切り替える自動フェイルオーバー機能があります。フェイルオーバー状態とは、メイン SSPとスペア SSPの間、両方の制御ボード間、またはネットワーク接続間で発生する障害です。自動フェイルオーバー機構によって、両方の SSP および関連コンポーネントが常に監視され、フェイルオーバー状態が検出されます。

この章では、以下の項目について説明します。


注 -

SSP フェイルオーバー、制御ボードフェイルオーバーのいずれか、または両方の機能を構成することができます。制御ボードの自動フェイルオーバーについての詳細は、第 9 章「デュアル制御ボードの取り扱い」を参照してください。また、これらのフェイルオーバー機能 (SSP フェイルオーバー、制御ボードフェイルオーバーのいずれか、または両方) を SSP、制御ボード、ハブといったコンポーネントに構成する方法についての詳細は、『Sun Enterprise 10000 SSP 3.5 インストールマニュアルおよびご使用の手引き』を参照してください。


必要なメイン SSP およびスペア SSP のアーキテクチャー

自動 SSP および制御ボードフェイルオーバーを正しく機能させるには、以下の図に示すようにデュアル SSP 構成を設定する必要があります。

図 8-1 自動フェイルオーバーに必要なデュアル SSP 構成

Graphic

デュアル SSP および制御ボード (SSP、ハブ、制御ボードをそれぞれ 2 台ずつ使用した構成) フェイルオーバーに必要な SSP、制御ボード、ハブの構成を図 8-1 に示します。上記以外の構成で、フェイルオーバー機能をサポート可能な構成 (1 台の SSP に制御ボードを 2 台実装した構成など) についての詳細、ならびに自動フェイルオーバー機能を設定するための条件については、『Sun Enterprise 10000 SSP 3.5 インストールマニュアルおよびご使用の手引き』を参照してください。

デュアル SSP 構成の保守

フェイルオーバーのためにデュアル SSP 構成を保守するには、以下の点に留意してください。

シングル SSP 構成の保守

シングル SSP 構成の場合も、デュアル SSP 構成の場合も、データの同期を行う際に SSP 構成ファイルを /tmp ディレクトリへコピーします (データの同期に関する説明は、「データ同期の管理」を参照してください)。ただし、シングル SSP 構成の場合は、定期的に setdatasync clean コマンドを実行して、/tmp ディレクトリに蓄積される SSP メッセージファイルとログファイルの数を減らしてください。setdatasync clean(1M) コマンドの使い方についての詳細は、「データ伝播リストを削除する」および setdatasync(1M) に関するマニュアルページを参照してください。

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

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

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

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

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

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

SSP フェイルオーバーの状態変化

フェイルオーバーの開始後、動作中の SSP 上で showfailover(1M) コマンドを実行すると、フェイルオーバーの状態情報を表示させることができます。詳細については、「フェイルオーバー状態情報の取得」を参照してください。showfailover コマンドにより表示されるフェイルオーバーの状態情報は、このコマンドを実行したときのフェイルオーバーの状態を示しています。

SSP フェイルオーバーが発生すると、以下のように状態が変化します。

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

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

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

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


    ssp% setfailover off
    

    SSP フェイルオーバーは、次の手順の説明に従ってユーザーが使用可能にするまで、使用不可のままとなります。


    注 -

    メイン SSP とスペア SSP をともに再起動すると、フェイルオーバーは自動的に使用可能に戻ります。


  2. showfailover(1M) コマンドを実行してフェイルオーバーが使用不可になっていることを確認します。

    詳細については、「フェイルオーバー状態情報の取得」を参照してください。フェイルオーバーの状態が Disabled と表示されなければなりません。

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

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

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


    ssp% setfailover on
    

    両方の SSP およびその接続リンクが正常に機能していると、SSP フェイルオーバーが使用可能になります。

  2. showfailover(1M) コマンドを実行してフェイルオーバーが使用可能になっていることを確認します。

    フェイルオーバーおよび接続の状態を確認する方法については、「フェイルオーバー状態情報の取得」を参照してください。


    注 -

    フェイルオーバー状態が確認されるまでに数分間かかります。setfailover コマンドは、この間に制御ボードの接続をチェックし、SSP フェイルオーバーを使用可能にします。


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

注 -

SSP フェイルオーバーを強制する前に、メインとスペアの両方の SSP が同期していることを確認します。showdatasync(1M) コマンドを使用して、メイン SSP とスペア SSP 間のデータ同期の状態を調べます。詳細については、「データ同期情報の取得」を参照してください。


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


    ssp% setfailover force
    

    強制フェイルオーバーを行う前に setfailover コマンドを使用すると、データの同期状態を調べることができます。以下のいずれかの状態となっていると、強制フェイルオーバーは行われません。

    • データ同期のバックアップを行っている (アクティブアーカイブと呼びます) 場合

    • メイン SSP からスペア SSP へファイルを伝播中の場合

    • データ同期キュー内に少なくとも 1 つ以上のファイルが入っている場合

    showdatasync(1M) コマンドを実行すると、同期状態に関する情報を表示させることができます。

  2. showfailover(1M) コマンドを実行して、強制フェイルオーバーが行われたことを確認し、フェイルオーバーおよび接続の状態を調べます。

    詳細については、「フェイルオーバー状態情報の取得」を参照してください。

  3. 「SSP フェイルオーバーを使用可能にする」で説明したように、SSP フェイルオーバーを再度、使用可能にしてください。

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) です。

  2. 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 へコピーされます。また、このプロセスではコピーするファイルをデータ同期キューにリストしますので、メイン SSP からスペア SSP へコピーされるファイルをユーザーが調べることができます。キューに入っているファイルを調べるには showdatasync(1M) コマンドを使用します。

フェイルオーバーのためにスペア SSP 上で管理する必要があるユーザー作成ファイル (SSP ディレクトリに含まれていない非 SSP ファイル) がある場合は、データ伝播リスト (/var/opt/SUNWssp/.ssp_private/user_file_list) でこれらのファイルを特定する必要があります。datasyncd デーモンは、このリストを使用して、メイン SSP からスペア SSP にコピーするファイルを判定します。

デフォルトの設定では、データ同期プロセスは、メイン SSP 上に保存されているユーザー作成ファイルが変更されているかどうかを 60 分ごとにチェックすることになっています。setdatasync コマンドを実行すれば、データ伝播リストへの変更をチェックする時間間隔を設定することができます (「ファイルをデータ伝播リストに追加する」を参照してください)。この時間間隔は、ファイルをデータ伝播リストに追加した時刻からカウントされます。このリストで指定されたファイルは、前回のチェック時間以降にファイルが変更された場合にスペア SSP へ伝播されます。


注 -

データ同期デーモンは、/tmp ディレクトリの使用可能なディスク領域を使用してメイン SSP からスペア SSP にファイルをコピーします。コピーするファイルが /tmp ディレクトリの容量を超える場合は、これらのファイルを伝播することはできません。たとえば、データ同期バックアップファイル (ds_backup.cpio)/tmp ディレクトリの使用可能容量を超える場合は、データの伝播を行う前にこのファイルのサイズを小さくする必要があります。データ同期バックアップファイルのサイズを小さくする方法の詳細については、「データ同期バックアップファイルのサイズを小さくする」を参照してください。


setdatasync(1M) コマンドを使用して、以下の処理を行います。


注 -

スペア SSP 上のファイルは、datasyncd デーモンによって監視されません。つまり、スペア SSP 上のユーザー作成ファイルを削除した場合に、そのファイルはメイン SSP からスペア 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 はデータ伝播リストから削除するファイルです。ファイル名は、絶対パスで指定する必要があります。

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

setdatasync clean コマンドは、シングル SSP 構成でディスク容量を制御するのに有用です。この構成では、データ伝播リストが非常に大きくなり、不要なディスク容量が消費されます。/tmp ディレクトリの容量をすべて使い切ってしまう可能性があり、システムがハングアップする原因となります。setdatasync clean コマンドを毎日、あるいは 1 週間ごとに必要に応じて実行すると、/tmp ディレクトリが大きくなり過ぎないように抑えることができます。また、setdatasync clean コマンドを実行する crontab(1M) エントリを作成して cron(1M) コマンド使用すると、ディレクトリのクリーンアップ (整理) 操作を自動化することができます。


注 -

デュアル構成では、メイン SSP とスペア SSP の間でデータが非同期になることがあるため、このオプションは使用しないでください。


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


    ssp% setdatasync clean  
    

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


    ssp% setdatasync push filename 
    

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

メイン SSP とスペア SSP の間で SSP 構成ファイルの同期をとる

たとえば、SSP フェイルオーバーを使用不可にして、再度、使用可能にしたときなど、この手順に従って、メイン SSP とスペア SSP 間のデータの同期を維持します。なお、SSP 構成ファイルをアーカイブする場合は、ssp_backup(1M) コマンドを使用してください。

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


    ssp% setdatasync backup  
    

    メイン SSP 上のすべての SSP 構成データのデータ同期バックアップファイル (/tmp/ds_backup.cpio) が作成され、スペア SSP 上に復元されます。ただし、データ同期バックアップは、ssp_backup(1M) コマンドが作成するバックアップと異なる点があります。

    • データ同期バックアップは、ssp_backup コマンドが作成するバックアップと同様に、/tftpboot ディレクトリはバックアップしません。

    • データ同期バックアップは、以下のファイルを復元しません。

      • /var/opt/SUNWssp/.ssp_private/machine_server_fifo

      • /var/opt/SUNWssp/adm/messages

        このファイルは、スペア SSP 上の /var/opt/SUNWssp/adm/messages.dsbk ファイルへ伝播されます。

      • /var/opt/SUNWssp/adm/messages.dsbk

      • /var/opt/SUNWssp/.ssp_private/user_file_list

      • /var/opt/SUNWssp/.ssp_private/.ds_queue

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

データ同期バックアップファイルのサイズを小さくする
  1. スーパーユーザーでメイン SSP にログインし、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 コマンドで表示されるさまざまな情報を示しています。詳細は、showdatasync(1M) マニュアルページを参照してください。

次の例は、データ同期プロセスのファイル伝播の状態、現在伝播されているファイル (なし)、データ伝播のためにキューにリストされたファイル数 (なし) を示しています。この例に表示されている「ACTIVE ARCHIVE」という状態は、データ同期のバックアップが進行中であることを示しています。


ssp% showdatasync 
File Propagation Status:  ACTIVE ARCHIVE
Active File:              -
Queued files:             0

次の例は、データ同期プロセスのファイル伝播の状態、現在伝播されているファイル、データ伝播のためにキューにリストされたファイル数 (なし) を示しています。この例に表示されている「ACTIVE」という状態は、データ同期プロセスが有効となっていて、正常に機能していることを示しています。また、現在伝播しているアクティブファイルがデータ同期バックアップファイルであることがわかります。


ssp% showdatasync 
File Propagation Status:  ACTIVE
Active File:              /tmp/ds_backup.cpio
Queued files:             0

次の例は、データ伝播リストを示しています。表示されている「INTERVAL」の数値は、ファイルに変更が加えられていないかどうかをデータ同期プロセスがチェックする頻度を分単位で示しています。


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

コマンド同期の実行

コマンド同期は、フェイルオーバーによって中断されたユーザー定義コマンドを回復し、フェイルオーバーの後に新しいメイン 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 
    

    ここで、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 では、同期コマンドの使用方法を示すユーザースクリプトのサンプルが添付されています。このスクリプトは、/opt/SUNWssp/examples/cmdsync ディレクトリにあります。このディレクトリには、このスクリプトの機能を説明する README ファイルも含まれています。

SSP フェイルオーバー後の作業

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