Solaris のシステム管理 (資源管理とネットワークサービス)

第 21 章 レガシーサービスの組み込み

レガシーサービスとは、SLP の開発および実装が旧式になっているネットワークサービスのことです。たとえば、ラインプリンタデーモン (lpsched)、NFS ファイルサービス、NIS または NIS+ ネームサービスなどの Solaris サービスは、SLP で使用する内部 SA を持っていません。この章では、レガシーサービスを通知する場合とその方法について説明します。

レガシーサービスを通知する場合

レガシーサービス通知では、SLP UA を使用可能にすることで、ネットワーク上の次のようなデバイスやサービスを検出できます。

レガシーサービスの通知

レガシーサービスは、次の方法で通知できます。

サービスの変更

ソフトウェアサーバーのソースコードを使用できる場合は、SLP SA を組み込むことができます。SLP 用の C 言語の API と Java の API は比較的簡単に使用できます。C 言語の API のマニュアルページと Java の API のマニュアルを参照してください。サービスがハードウェアデバイスの場合は、製造元が SLP を組み込む PROM を更新していることがあります。詳細は、デバイスの製造元に問い合わせてください。

SLP が使用できないサービスの通知

ソースコードや更新された SLP を含む PROM が使用できない場合は、SLP クライアントライブラリを使ってサービスを通知する小さなアプリケーションを書くことができます。このアプリケーションは小さなデーモンとして機能し、サービスの起動・停止に使用する場合と同じシェルスクリプトで起動・停止します。

SLP プロキシ登録

Solaris slpd は、プロキシ登録ファイルを使用したレガシーサービスの通知をサポートしています。プロキシ通知ファイルは、移植性のあるフォーマットで書かれたサービス通知のリストです。

SLP プロキシ登録を有効にする方法

  1. ホストのファイルシステムまたは HTTP でアクセス可能なネットワーク上の任意のディレクトリに、プロキシ登録ファイルを作成します。

  2. サービスについてサービスタイプのテンプレートが存在するかどうかを確認します。

    テンプレートは、サービスタイプのサービス URL と属性を記述したものです。テンプレートを使用して、特定のサービスタイプについて通知の構成要素を定義します。

    • サービスタイプテンプレートが存在する場合は、そのテンプレートを使ってプロキシ登録を構成してください。サービスタイプテンプレートについては、RFC 2609 を参照してください。

    • サービスについてサービスタイプテンプレートを使用できない場合は、サービスを正確に記述する属性の集合体を選択してください。通知に対して、デフォルト以外の命名権限を使用してください。デフォルトの命名権限は標準化されたサービスタイプについてだけ許可されてます。命名権限については、RFC 2609 を参照してください。

      たとえば、BizApp という会社にソフトウェアバグの追跡に使用されるローカルデータベースがあるとします。データベースを通知するために、この会社は、サービスタイプ service:bugdb.bizapp を持つ URL を使用します。この場合、命名権限は bizapp になります。

  3. 前の手順で作成した登録ファイルの場所を使用して、/etc/inet/slp.conf ファイルの net.slp.serializedRegURL プロパティを構成するには、以下の手順に従います。

  4. スーパーユーザーになります。

  5. ホスト上の slpd とすべての SLP 動作を停止します。


    # /etc/init.d/slpd stop
    
  6. 構成の設定を変更する前に、デフォルトの /etc/inet/slp.conf ファイルのバックアップをとります。

  7. /etc/inet/slp.conf ファイルの net.slp.serializedRegURL プロパティにプロキシ登録の場所を指定します。


    net.slp.net.slp.serializedRegURL=proxy registration file URL
    

    たとえば、直列化登録ファイルが /net/inet/slp.reg である場合、プロパティを次に示すように構成します。


    net.slp.serializedRegURL=file:/etc/inet/slp.reg

  8. 変更を保存し、ファイルを閉じます。

  9. 変更を反映するには、slpd を再起動します。


    # /etc/init.d/slpd start
    

SLP プロキシ登録による通知

サービス通知は、サービス URL を特定する行、オプションのスコープ行、一連の属性の定義から構成されます。SLP デーモンはファイルからプロキシ通知を読み、その通知を登録し、SA クライアントと同じようにそれらを保持します。次のリストは、プロキシ登録ファイルの例を示します。

この例では、LPR プロトコルをサポートするレガシープリンタと ftp サーバーが通知されています。行番号は説明のために付け加えたもので、実際のファイルには記述されていません。


 1#Advertise legacy printer. 
 2
 3service:lpr://bizserver/mainspool,en,65535
 4scope=eng,corp
 5make-model=Laserwriter II
 6location-description=B16-2345
 7color-supported=monochromatic
 8fonts-supported=Courier,Times,Helvetica 9 10
 9
10#Advertise FTP server
11
12ftp://archive/usr/src/public,en,65535,src-server
13content=Source code for projects
14

注 -

プロキシ登録ファイルは、ASCII でない文字のエスケープに、構成ファイルと同じ取り決めを使用します。プロキシ登録ファイルのフォーマットについては、RFC 2614 を参照してください。


表 21-1 SLP プロキシ登録ファイルの説明

行番号 

説明 

1 と 10 

シャープ記号 (#) で始まるコメント行で、ファイルの動作には影響しない。コメント行の最後まですべての文字が無視される 

2、9、14 

通知の区切りを示す空行 

3、12 

3 つの必須フィールドと 1 つのオプションフィールドがコンマで区切られたサービス URL

  • 一般的な URL または service: URL が通知される。service: URL の指定方法の仕様については、RFC 2609 を参照

  • 通知の言語を指定する。前述の例では、フィールドは英語 en を指定している。この言語は RFC 1766 の言語タグである

  • 登録の有効期限を秒単位で規定する。有効期限は符号なしの 16 ビット整数に限定される。有効期限が最大値 65535 より小さい場合、slpd は通知をタイムアウトする。有効期限が 65535 の場合、slpd は定期的に通知を更新し、slpd が存在するかぎり有効期限は永続するとされる

  • サービスタイプフィールド (省略可) – サービスタイプの定義に使用する。サービス URL が定義されている場合は、URL が通知されるサービスタイプを変更できる。前述のプロキシ登録ファイルの例では、12 行目に一般的な FTP URL が含まれている。オプションのタイプフィールドを使用して、この URL をサービスタイプ名 src-server で通知できる。デフォルトでは service 接頭辞はタイプ名には付かない

スコープの指定 

オプション行はトークン scope と等号、およびコンマで区切られたスコープ名のリストで構成される。このスコープ名は、net.slp.useScopes 構成プロパティで定義されている。ホストに構成されたスコープだけが、このスコープリストに表示される。スコープ行がない場合は、slpd が構成されているすべてのスコープに登録が行われている。スコープ行は URL 行のすぐ後になければならない。その他の場所にある場合、スコープ名は属性として認識される

5 から 8 

属性の定義 

オプションのスコープ行の後は、サービス通知の大部分は属性と値リストのペアの行で構成される。各ペアは属性タグ、等号、コンマで区切られた属性値のリスト (属性が単一値の場合は単一値) で構成される。前述のプロキシ登録ファイルの例では、8 行目が複数の値を持つ属性リストを示している。これ以外の値リストはすべて単一値を持っている。属性名および値のフォーマットは、ネットワークを通過する SLP メッセージと同じである 

レガシーサービスを通知する場合の検討事項

通常、SLP を追加する場合、他のサービスの代理として SLP API で通知する SLP 対応のサービスを書くよりも、ソースコードを変更する方が望ましい方法です。ソースコードの変更は、プロキシ登録を使用するよりも望ましい方法です。ソースコードを変更する場合、サービス固有の機能を追加したり、サービスの使用可否を綿密に追跡したりできます。ソースコードが使用できない場合は、プロキシ登録を使用するより他のサービスの代理として通知する SLP 対応のヘルパーサービスを書く方が望ましい方法です。このヘルパーサービスを、起動と停止の制御に使用されるサービスの開始または停止手順に組み込むことをお勧めします。プロキシ通知は通常、ソースコードが使用できず、スタンドアロンの SA を書くことが実際的ではない場合の 3 番目の選択肢です。

プロキシ通知は、プロキシ登録ファイルを読み取る slpd が動作している間だけ保持されます。プロキシ通知とサービスの間には直接的な関係はありません。通知がタイムアウトしたり slpd が停止したりすると、プロキシ通知は使用できなくなります。

サービスが停止した場合は、slpd を停止する必要があります。直列化登録ファイルを編集してプロキシ通知をコメントにするか削除し、slpd を再起動してください。サービスを再起動または再インストールしたときは同じ手順に従ってください。プロキシ通知とサービスの間に関係のないことがプロキシ通知の主な欠点です。