Sun Cluster 3.0 5/02 補足情報

付録 F 汎用データサービス

この付録では、最初に汎用データサービス (GDS) の概要について説明した後に、SunPlex Agent Builder または標準的な Sun Cluster 管理コマンドを使って GDS ベースのサービスを作成する方法について説明します。

汎用データサービスの概要

汎用データサービス (GDS) とは、ネットワーク対応のシンプルなアプリケーションを Sun Cluster Resource Group Management フレームワークにプラグインすることによって、これらのアプリケーションを可用性の高いものにしたり、スケーラブルなものにするための機構です。この機構では、アプリケーションを可用性の高いものにしたり、スケーラブルなものにするために通常必要になるエージェントのコーディングは必要ありません。

GDS は、あらかじめコンパイルされた単一のデータサービスです。このアプローチでは、コールバックメソッド (rt_callbacks(1HA)) の実装やリソースタイプ登録ファイル (rt_reg(4)) など、コンパイル済みのデータサービスやそのコンポーネントを変更することはできません。

コンパイル済みリソースタイプ

汎用データサービスのリソースタイプ SUNW.gds は、 SUNWscgds パッケージに含まれています。このパッケージは、クラスタのインストール時に scinstall(1M) ユーティリティでインストールされます。SUNWscgds パッケージには次のファイルが格納されています。


# pkgchk -v SUNWscgds
 
/opt/SUNWscgds 
/opt/SUNWscgds/bin 
/opt/SUNWscgds/bin/gds_monitor_check 
/opt/SUNWscgds/bin/gds_monitor_start 
/opt/SUNWscgds/bin/gds_monitor_stop 
/opt/SUNWscgds/bin/gds_probe 
/opt/SUNWscgds/bin/gds_svc_start 
/opt/SUNWscgds/bin/gds_svc_stop 
/opt/SUNWscgds/bin/gds_update 
/opt/SUNWscgds/bin/gds_validate 
/opt/SUNWscgds/etc 
/opt/SUNWscgds/etc/SUNW.gds

GDS を使用する利点

GDS には、SunPlex Agent Builder が生成するソースコードモデル (scdscreate(1HA) のマニュアルページを参照) や標準的な Sun Cluster 管理コマンドを使用するのに比べ、次の利点があります。

GDS を使用するサービスの作成方法

GDS を使用するサービスの作成方法は 2 通りあります。

GDS と SunPlex Agent Builder

SunPlex Agent Builder を使用し、生成されるソースコードのタイプとして GDS を選択します。特定のアプリケーションのリソースを設定する起動スクリプト群を生成するためにユーザーの入力が必要です。

GDS と標準的な Sun Cluster 管理コマンド

この方法では SUNWscgds にあるコンパイル済みデータサービスコードを使用しますが、システム管理者は、標準的な Sun Cluster 管理コマンド (scrgadm(1M) と scswitch(1M)) を使って、リソースの作成と構成を行なう必要があります。

GDS ベースのサービスを作成する方法の選択

「標準的な Sun Cluster 管理コマンドを使って GDS ベースの高可用性サービスを作成する方法」「標準的な Sun Cluster 管理コマンドを使って GDS ベースのスケーラブルサービスを作成する方法」 の手順からわかるように、適切な scrgadmscswitch コマンドを実行するためには、かなりの分量の入力を行なう必要があります。

GDS と SunPlex Agent Builder を使用する方法では、この処理が簡単になります。この方法では、生成される起動スクリプトがユーザーに代わって scrgadmscswitch コマンドを出力するからです。

GDS の使用が適さない場合

GDS には多くの利点がありますが、GDS の使用が適さない場合もあります。GDS の使用が適切でないのは次のような場合です。

GDS の必須入力

次のプロパティを指定する必要があります。

Start_command

アプリケーションは、Start_command プロパティに指定された start コマンドで起動されます。このコマンドは、引数を備えた完全な UNIX コマンドでなければなりません。コマンドは、アプリケーションを起動するシェルに直接渡されます。

Port_list

Port_list は、アプリケーションが待機するポート群を指定したものです。Port_list プロパティは、SunPlex Agent Builder によって生成される start スクリプトか、scrgadm コマンド (標準的な Sun Cluster 管理コマンドを使用する場合) に指定されていなければなりません。

GDS の任意入力

GDS の任意入力には次のものがあります。

Network_resources_used

このプロパティのデフォルト値は Null です。 アプリケーションが 1 つ以上の特定のアドレスにバインドする必要がある場合は、このプロパティを指定する必要があります。このプロパティを省略するか、このプロパティが Null の場合、アプリケーションはすべてのアドレスに対して待機するものとみなされます。

GDS リソースを作成する場合は、 LogicalHostnameSharedAddress リソースがあらかじめ構成されていなければなりません。LogicalHostnameSharedAddress リソースの構成方法については、『Sun Cluster 3.0 12/01 データサービスのインストールと構成』を参照してください。

値を指定する場合は、1 つまたは複数のリソース名を指定します。個々のリソース名には、1 つ以上の論理ホスト名か 1 つ以上の共有アドレスを指定できます。詳細は、r_properties(5) のマニュアルページを参照してください。

Stop_command

stop コマンドは、アプリケーションを停止し、アプリケーションが完全に停止した後で終了します。 このコマンドは、アプリケーションを停止するシェルに直接渡される完全な UNIX コマンドでなければなりません。

Stop_command が指定されていると、GDS 停止メソッドは、停止タイムアウトの 80% を指定して停止コマンドを起動します。さらに、GDS 停止メソッドは、停止コマンドの起動結果がどうであれ、停止タイムアウトの 15% を指定して SIGKILL を送信します。タイムアウトの残り 5% は、処理のオーバーヘッドのために使用されます。

stop コマンドが省略されていると、GDS は、 Stop_signal に指定されたシグナルを使ってアプリケーションを停止します。

Probe_command

probe コマンドは、特定のアプリケーションの状態を周期的にチェックします。このコマンドは、引数を備えた完全な UNIX コマンドでなければなりません。コマンドは、アプリケーションの状態をチェックするシェルに直接渡されます。アプリケーションの状態が正常であれば、probe コマンドは終了ステータスとして 0 を返します。

probe コマンドの終了ステータスは、アプリケーションの障害の重大度を判断するために使用されます。終了ステータス (probe ステータス) は、0 (正常) から 100 (全面的な障害) までの整数でなければなりません。probe ステータスは 201 という特別な値をもつことがあります。この場合には、Failover_enabled が false に設定されている場合を除き、アプリケーションのフェイルオーバーが直ちに行なわれます。 GDS プローブアルゴリズム ( scds_fm_action(3HA) のマニュアルページを参照) は、この probe ステータスを使って、アプリケーションをローカルに再起動するか別のノードにフェイルオーバーするかを決定します。終了ステータス 201 なら、アプリケーションは直ちにフェイルオーバーされます。

probe コマンドが省略されていると、GDS は、Newtork_resources_used プロパティか、 scds_get_netaddr_list(3HA) の出力から得られる IP アドレス群を使ってアプリケーションに接続する独自の簡単な検証を行ないます。この検証では、接続に成功すると、接続を直ちに切り離します。接続と切り離しが両方とも正常なら、アプリケーションは正常に動作しているものとみなされます。


注 -

GDS 提供の検証は、全機能を備えたアプリケーション固有の検証を代替するものではありません。


Start_timeout

このプロパティでは、start コマンドの起動タイムアウトを指定します (詳細は、「Start_command」を参照)。Start_timeout のデフォルトは 300 秒です。

Stop_timeout

このプロパティでは、stop コマンドの停止タイムアウトを指定します (詳細は、「Stop_command」を参照)。Stop_timeout のデフォルトは 300 秒です。

Probe_timeout

このプロパティでは、probe コマンドのプローブタイムアウトを指定します (詳細は、「Probe_command」を参照)。Probe_timeout のデフォルトは 30 秒です。

Child_mon_level

このプロパティでは、PMF を通してどのプロセスを監視するかを制御します。 このプロパティは、フォークされた子プロセスをどのようなレベルで監視するかを表します。これは、pmfadm(1M) コマンドの -C 引数と同等です。

このプロパティを省略するか、このプロパティにデフォルト値の -1 を指定することは、pmfadm コマンドで -C オプションを省略するのと同じ効果があります。つまり、すべての子プロセスとその子孫プロセスが監視されます。 詳細は、pmfadm(1M) のマニュアルページを参照してください。


注 -

このオプションは、標準的な Sun Cluster 管理コマンドを使用するときだけ指定できます。SunPlex Agent Builder を使用するときには指定できません。


Failover_enabled

ブール値のこの拡張プロパティでは、リソースのフェイルオーバー動作を制御します。この拡張プロパティに true を設定すると、アプリケーションは、再起動回数が retry_interval 秒間に retry_count を超えるとフェイルオーバーされます。

この拡張プロパティに false を設定すると、再起動回数が retry_interval 秒間に retry_count を超えてもアプリケーションの再起動やフェイルオーバーは行なわれません。

この拡張プロパティを使用すれば、アプリケーションリソースがリソースグループのフェイルオーバーを引き起こすことを防止できます。デフォルトは true です。

Stop_signal

GDS は、整数値のこの拡張プロパティを使って、PMF によるアプリケーションの停止に使用するシグナルを判別します。 指定できる整数値については、signal(3head) のマニュアルページを参照してください。デフォルトは 15 (SIGTERM) です。

SunPlex Agent Builder を使って GDS ベースのサービスを作成

SunPlex Agent Builder を使って GDS ベースのサービスを作成できます。SunPlex Agent Builder とそのフィールドの定義については、『Sun Cluster 3.0 12/01 データサービスのインストールと構成』を参照してください。

Agent Builder を使って GDS ベースのサービスを作成する方法

  1. SunPlex Agent Builder を起動します。


    # /usr/cluster/bin/scdsbuilder
    

  2. 「SunPlex Agent Builder」パネルが表示されます。

    Graphic
  3. 「Vendor Name」にベンダー名を入力します。

  4. 「Application Name」にアプリケーション名を入力します。


    注 -

    「Vendor」と「Application Name」の合計は 9 文字以内でなければなりません。この組み合わせは、起動スクリプトのパッケージ名として使用されます。


  5. 「Working Directory」に作業ディレクトリを入力します。 「Browse」のプルダウンを使用すれば、パスを入力する代わりにディレクトリを選択することができます。

  6. データサービスがスケーラブルなのかフェイルオーバーなのかを選択します。

  7. GDS を作成するときには「Network Aware」がデフォルトですので、これを選択する必要はありません。

  8. 「GDS」を選択します。

  9. 「Create」ボタンをクリックして起動スクリプトを作成します。

  10. サービスの作成結果が「SunPlex Agent Builder」パネルに表示されます。「Create」ボタンがグレイになり、「Next」ボタンが使用可能になります。

    Graphic

起動スクリプトを構成する方法

起動スクリプトを作成したなら、SunPlex Agent Builder を使って新しいサービスを構成する必要があります。

  1. 「Next」ボタンをクリックすると、構成パネルが表示されます。

  2. Start コマンドの場所を入力するか、「browse」ボタンを使って Start コマンドの場所を選択します。

  3. (省略可能) Stop コマンドを入力するか、「browse」ボタンを使って Stop コマンドの場所を選択します。

  4. (省略可能) Probe コマンドを入力するか、「browse」ボタンを使って Probe コマンドの場所を選択します。

  5. (省略可能) Start、Stop、Probe コマンドのタイムアウト値を指定します。

  6. 「Configure」をクリックして起動スクリプトの構成を開始します。

    起動スクリプトのパッケージが作成され、次の場所に格納されます。


    working-dir/<vendor_name><application>/pkg

    たとえば、/export/wdir/NETapp/pkg のようになります。


    注 -

    このパッケージ名は、Vendor Name と Application Name が結合したものです。


  7. 完成したパッケージをクラスタのすべてのノードにインストールします。


    # cd /export/wdir/NETapp/pkg
    # pkgadd -d . NETapp
    

  8. pkgadd の実行で次のファイルがインストールされます。


    /opt/NETapp 
    /opt/NETapp/README.app 
    /opt/NETapp/man 
    /opt/NETapp/man/man1m 
    /opt/NETapp/man/man1m/removeapp.1m 
    /opt/NETapp/man/man1m/startapp.1m 
    /opt/NETapp/man/man1m/stopapp.1m 
    /opt/NETapp/man/man1m/app_config.1m 
    /opt/NETapp/util 
    /opt/NETapp/util/removeapp 
    /opt/NETapp/util/startapp 
    /opt/NETapp/util/stopapp 
    /opt/NETapp/util/app_config


    注 -

    マニュアルページとスクリプト名は、上で入力した Application Name の前にスクリプト名を付けたものです (たとえば、startapp)。


    マニュアルページを表示するには、マニュアルページへのパスを指定する必要があります。たとえば、startapp のマニュアルページを表示する場合は、次のように入力します。


    # man -M /opt/NETapp/man startapp
    

  9. クラスタのいずれかのノードでリソースを構成し、アプリケーションを起動します。


    # /opt/NETapp/util/startapp -h <logichostname> -p <port and protocol list>
    

    起動スクリプトの引数は、リソースのタイプ がフェイルオーバーかスケーラブルかで異なります。カスタマイズしたマニュアルページをチェックするか、起動スクリプトを引数なしで実行して引数リストを入手してください。


    # /opt/NETapp/util/startapp 
     The resource name of LogicalHostname or SharedAddress must be specified. 
     For failover services: 
     Usage: startapp -h <logical host name> 
               -p <port and protocol list> 
              [ -n <nafogroup/adapter list>] 
     For scalable services: 
     Usage: startapp 
              -h <shared address name> 
              -p <port and protocol list> 
              [ -l <load balancing policy>] 
              [-n <nafogroup/adapter list>] 
               [-w <load balancing weights>]

SunPlex Agent Builder の出力

SunPlex Agent Builder は、ユーザーの入力に基づいて 3 つの起動スクリプトと 1 つの構成ファイルを生成します。構成ファイルには、リソースグループとリソースタイプの名前が指定されます。

生成される起動スクリプトは次のとおりです。

これらの起動スクリプトのインタフェースや動作は、SunPlex Agent Builder によって非 GDS ベースのエージェント用に作成されるユーティリティスクリプトのものと同じです。これらのスクリプトは、複数のクラスタで再利用できる Solaris にインストール可能なパッケージとしてパッケージ化されます。

構成ファイルをカスタマイズすれば、リソースグループの名前など、一般には scrgadm コマンドへの入力として指定されるパラメータを独自に設定できます。スクリプトをカスタマイズしないと、SunPlex Agent Builder が scrgadm のパラメータに対し妥当なデフォルトを 設定します。

標準的な Sun Cluster 管理コマンドを使って GDS ベースのサービスを作成

この節では、上述のパラメータが GDS に実際にどのように入力されるのかを説明します。GDS の使用や管理は、scrgadmscswitch など、すでにある Sun Cluster 管理コマンドを通して行われます。

起動スクリプトに適切な機能が含まれている場合は、この節で述べる低位レベルの管理コマンドを入力する必要はありません。ただし、GDS ベースのリソースをより細かく制御したい場合は、このような低位レベルのコマンドを入力することもできます。起動スクリプトでは、これらのコマンドが実際に実行されます。

標準的な Sun Cluster 管理コマンドを使って GDS ベースの高可用性サービスを作成する方法
  1. リソースタイプ SUNW.gds を登録します。


    # scrgadm -a -t SUNW.gds
    

  2. LogicalHostname リソースとフェイルオーバーサービス自体を含むリソースグループを作成します。


    # scrgadm -a -g haapp_rg
    

  3. LogicalHostname リソースのリソースを作成します。


    # scrgadm -a -L -g haapp_rs -l hhead
    

  4. フェイルオーバーサービス自体のリソースを作成します。


    # scrgadm -a -j haapp_rs -g haapp_rg -t SUNW.gds ¥
         -y Scalable=false -y Start_timeout=120 ¥
         -y Port_list="2222/tcp" ¥
         -x Start_command="/export/ha/appctl/start" ¥
         -x Stop_command="/export/ha/appctl/stop" ¥
         -x Probe_command="/export/app/bin/probe" ¥
         -x Child_mon_level=0 -y Network_resources_used=hhead ¥
         -x Failover_enabled=true -x Stop_signal=9
    

  5. リソースグループ haapp_rg をオンラインにします。


    # scswitch -Z -g haapp_rg
    

標準的な Sun Cluster 管理コマンドを使って GDS ベースのスケーラブルサービスを作成する方法
  1. リソースタイプ SUNW.gds を登録します。


    # scrgadm -a -t SUNW.gds
    

  2. SharedAddress リソースのリソースグループを作成します。


    # scrgadm -a -g sa_rg
    

  3. SharedAddress リソースを sa_rg に作成します。


    # scrgadm -a -S -g sa_rg -l hhead
    

  4. スケーラブルサービスのリソースグループを作成します。


    # scrgadm -a -g app_rg -y Maximum_primaries=2 ¥
    -y Desired_primaries=2 -y RG_dependencies=sa_rg
    

  5. スケーラブルサービス自体のリソースグループを作成します。


    # scrgadm -a -j app_rs -g app_rg -t SUNW.gds ¥
         -y Scalable=true -y Start_timeout=120 ¥
         -y Stop_timeout=120 -x Probe_timeout=120 ¥
         -y Portlist="2222/tcp" ¥
         -x Start_command="/export/app/bin/start" ¥
         -x Stop_command="/export/app/bin/stop" ¥
         -x Probe_command="/export/app/bin/probe ¥
         -x Child_mon_level=0 -y Network_resource_used=hhead ¥
         -x Failover_enabled=true -x Stop_signal=9
    

  6. ネットワークリソースを含むリソースグループをオンラインにします。


    # scswitch -Z -g sa_rg
    

  7. リソースグループ app_rg をオンラインにします。


    # scswitch -Z -g app_rg
    

SunPlex Agent Builder のコマンド行インタフェース

SunPlex Agent Builder には、GUI インタフェースと同等の機能をもつコマンド行インタフェースがあります。このインタフェースは、scsdcreate(1ha) と scdsconfig(1ha) からなります。この節では、GUI ベースの手順 によるものと同じ機能をコマンド行インタフェースを使って行ないます。

SunPlex Agent Builder のコマンド行インタフェースを使って GDS ベースのサービスを作成する方法
  1. サービスを作成します。

    フェイルオーバーサービスの場合:


    # scdscreate -g -V NET -T app -d /export/wdir
    

    スケーラブルサービスの場合:


    # scdscreate -g -s -V NET -T app -d /export/wdir
    


    注 -

    -d パラメータは任意です。このパラメータを指定しない場合は、作業ディレクトリとして現在のディレクトリが使用されます。


  2. サービスを構成します。


    # scdsconfig -s "/export/app/bin/start" ¥
    -t "/export/app/bin/stop" ¥
    -m "/export/app/bin/probe" -d /export/wdir
    


    注 -

    start コマンドだけが必須で、他のパラメータはすべて任意です。


  3. 完成したパッケージをクラスタのすべてのノードにインストールします。


    # cd /export/wdir/NETapp/pkg
    # pkgadd -d . NETapp
    

  4. pkgadd の実行で次のファイルがインストールされます。


    /opt/NETapp 
    /opt/NETapp/README.app 
    /opt/NETapp/man 
    /opt/NETapp/man/man1m 
    /opt/NETapp/man/man1m/removeapp.1m 
    /opt/NETapp/man/man1m/startapp.1m 
    /opt/NETapp/man/man1m/stopapp.1m 
    /opt/NETapp/man/man1m/app_config.1m 
    /opt/NETapp/util 
    /opt/NETapp/util/removeapp 
    /opt/NETapp/util/startapp 
    /opt/NETapp/util/stopapp 
    /opt/NETapp/util/app_config


    注 -

    マニュアルページとスクリプト名は、上で入力した Application Name の前にスクリプト名を付けたものです (たとえば、startapp)。


    マニュアルページを表示するには、マニュアルページへのパスを指定する必要があります。たとえば、startapp のマニュアルページを表示する場合は、次のように入力します。


    # man -M /opt/NETapp/man startapp
    

  5. クラスタのいずれかのノードでリソースを構成し、アプリケーションを起動します。


    # /opt/NETapp/util/startapp -h <logichostname> -p <port and protocol list>
    

    起動スクリプトの引数は、リソースのタイプ がフェイルオーバーかスケーラブルかで異なります。カスタマイズしたマニュアルページを検査するか、起動スクリプトを引数なしで実行して引数リストを入手してください。


    # /opt/NETapp/util/startapp 
     The resource name of LogicalHostname or SharedAddress must be specified. 
     For failover services: 
     Usage: startapp -h <logical host name> 
               -p <port and protocol list> 
              [-n <nafogroup/adapter list>] 
     For scalable services: 
     Usage: startapp 
              -h <shared address name> 
              -p <port and protocol list> 
              [-l <load balancing policy>] 
              [-n <nafogroup/adapter list>] 
               [-w <load balancing weights>]