NSD の使用法 (UNIX®/Linux/macOS)
ここでは、UNIX®、Linux、または macOS 上の Web ゲートウェイで Network Service Daemon (NSD) を使用する方法について説明します。これは典型的なインストールではありませんが、これが適切である場合があります。
NSD を使用する場合
Web サーバから独立して Web ゲートウェイを管理できるように、NSD を使用して Web サーバと Web ゲートウェイを分離する状況として 3 種類が考えられます。
-
Web サーバがその負荷を複数のサーバ・プロセスに分散する場合に、Web ゲートウェイのインスタンスを各 Web サーバ・プロセスにアタッチする。
-
CSP の占める割合が少ない、きわめて大規模な Web サーバ (例えば、Web アプリケーションのほかに、php、静的コンテンツ、.NET、.ASP アプリケーションなどを扱う Web サーバ) を運用する。
-
Nginx Web サーバを使用している。
NSD モジュールのインストール場所
必要に応じて、NSD モジュールは CSPnsd となります。
このモジュールの既定の場所は以下のとおりです。
/opt/webgateway/bin
NSD は、そのホーム・ディレクトリ (上記参照) から実行されます。NSD ベースの接続オプションの場合、構成ファイルとログ・ファイルはこのディレクトリに書き込まれます。
NSD の操作
NSD を実行するには、以下の手順に従います。
-
以下のディレクトリに変更します。
/opt/webgateway/bin
-
以下のコマンドを入力して、NSD を開始します。
./CSPnsd
バックグラウンドへ移動する前に、NSD は実行している構成を示すバナーを表示します。このバナーには、このサービスに割り当てられている TCP ポート番号 (既定ではポート 7038) が表示されます。
このコマンドで -s 修飾子を使用すると、起動時のすべてのメッセージが非表示になります。例えば、システムが起動したときに呼び出されたスクリプトから、NSD を開始するには以下を使用します。
/opt/webgateway/bin/CSPnsd –s
その他の一般的なスタートアップ・オプション :
-
ヘルプ情報を表示します。
./CSPnsd -h
-
NSD の動作を一時停止します。このコマンドは、停止信号 (SIGSTOP) を NSD のプロセスに送信します。
./CSPnsd -pause
-
(一時停止の後)、NSD の動作を続行します。このコマンドは続行信号 (SIGCONT) を NSD のプロセスに送信します。
./CSPnsd -cont
-
他のユーザに NSD を実行する許可を与えます。NSD (CSPnsd) コンポーネントの管理者は、CSPnsd —m=s を使用して NSD を開始/停止する許可をグループまたはその他のユーザに与えることができます。ここで、s は起動オプションです。
s には以下のいずれかを指定できます。
-
現在のユーザには u (既定)
-
現在のグループには g
-
その他には o
-
すべてのユーザには a (m=ugo)
例 : CPSnsd -m=ug は、NSD を実行する許可をグループ (管理者グループ) に与えます。このコマンドは、-rw-rw–-- の CPSnsd.pid 許可を与えます。
CSPnsd を停止するコマンドが発行されると、CSPnsd 親プロセスに以前と同様にシャットダウンするようシグナルを送信しようとします。サービスが別のユーザによって開始されたためにこれが不可能な場合は、CSPnsd.ini ファイルにフラグが書き込まれ、サービスはフラグを認識したときに自体を正常に終了します。このプロセスの完了には、最大 20 秒かかります。
-
NSD を終了するには、以下を入力します。
./CSPnsd -stop
または、以下を実行します。
kill –TERM `cat /opt/webgateway/bin/CSPnsd.pid`
これらのコマンドは、NSD を正しい順序でクローズします。つまり、InterSystems IRIS との間でオープンしているすべての接続を正しく終了し、終了前にすべてのシステム・リソースを解放します。kill –9 コマンドを使用して NSD を終了しないでください。
すべてのエラーは Web ゲートウェイのイベント・ログで報告されます。
代替 TCP ポートでの NSD の開始
既定では、NSD は TCP ポート 7038 で着信する要求を待ち受けます。以下のようにサービスを開始することでこれをオーバーライドできます。port_no は、指定する TCP ポート番号です。
./CSPnsd [port_no]
または以下のようにします。
./CSPnsd -p=[port_no]
開始時に、NSD は以下のファイルを作成します。
/opt/webgateway/bin/CSPnsd.ini
このファイルには、通常、以下の行が記述されます。
[SYSTEM]
Ip_Address=127.0.0.1
TCP_Port=7038
ここでは、クライアントは、Web サーバに格納された Web ゲートウェイ・モジュールまたは Web サーバに動的にリンクされる Web ゲートウェイ・モジュール、およびサーバから呼び出された Web ゲートウェイ CGI モジュール (またはこのどちらかのモジュール) です。したがって、このファイルを削除、または移動することはできません。また、Web サーバ・プロセスがこのファイルを読み取り可能であることも重要です。Web サーバを操作する UNIX® ユーザ名を考慮して、適切な特権を設定してください。NSD クライアントは、以下の場所でこのファイルを検索しようとします。
/opt/webgateway/bin
/etc
NSD が別のディレクトリで動作している場合、CSPnsd.ini ファイルを上記のいずれかの場所に移動する必要があります。
NSD の複数のインスタンスが実行されている状況で、CSPnsd.ini ファイルに NSD ポート番号を格納することは不適切です。Apache サーバの場合、NSD の TCP ポート番号をクライアントに伝えるためのより適切なメカニズムがあります。具体的には、Apache 構成で以下の環境変数を設定して、ターゲットの NSD インストールのアドレスとポートを指定します。
-
CSP_NSD_NAME — NSD の IP アドレスです。NSD がリモート・コンピュータで動作している場合のみ、このパラメータを使用します。
-
CSP_NSD_PORT — NSD の TCP ポート番号です。
これらの環境変数に指定した値は、CSPnsd.ini ファイルの値よりも優先されます。
例 1 : 2 つの Apache 仮想ホスト
2 つの Apache 仮想ホスト (123.123.1.1 および 123.123.1.2) の負荷を、2 つの独立した NSD インストール (TCP ポート 7038 および 7039 で待ち受ける) 間で分散するには、Apache 構成 (httpd.conf) に以下の指示文を追加します。
<VirtualHost 123.123.1.1>
ServerName 123.123.1.1
SetEnv CSP_NSD_PORT 7038
</VirtualHost>
<VirtualHost 123.123.1.2>
ServerName 123.123.1.2
SetEnv CSP_NSD_PORT 7039
</VirtualHost>
例 2 : 2 つの Web アプリケーション
2 つの Web アプリケーション (/csp1 および /csp2) の負荷を、2 つの独立した NSD インストール (TCP ポート 7038 および 7039 で待ち受ける) 間で分散するには、Apache 構成 (httpd.conf) に以下の指示文を追加します。
<Location /csp1>
SetEnv CSP_NSD_PORT 7038
</Location>
<Location /csp2>
SetEnv CSP_NSD_PORT 7039
</Location>
Apache 構成の変更後は、Apache を再起動します。
NSD の複数のインスタンスを実行している場合は、各インスタンスを別々のディレクトリにインストールし、それぞれのインスタンスに専用の構成ファイルとログ・ファイルを管理することをお勧めします。NSD の内部 HTTP サーバを使用すると、各インスタンスの Web ゲートウェイ管理ページに簡単にアクセスできます。以下に例を示します。
http://localhost:7038/csp/bin/Systems/Module.cxw
http://localhost:7039/csp/bin/Systems/Module.cxw
複数の NSD プロセスへの負荷分散
既定では、NSD は 2 プロセス処理モード (親ワーカ 1 つと子ワーカ 1 つ) で動作します。
ただし、1 つの UNIX® プロセスが起動できるスレッドの数には上限があります。同時に発生している Web アプリケーションの負荷により、要求が使用可能なスレッドのキューを作ってしまった場合は、NSD で使用されるプロセスの数を増やすことを検討してください。
./CSPnsd –c=[no_processes]
ここで、no_processes は開始される子 (またはワーカ) プロセスの数です。
子プロセスの数を 1 に設定することには長所があるということにも注目してください。
./CSPnsd –c=1
このような状況では、NSD により、親プロセス 1 つと子ワーカ・プロセス 1 つの合計 2 プロセスが開始されます。‘–c’ 指示文を使用しているときに、親プロセスが存在すると、ワーカ・プロセスの 1 つで障害が発生している場合に親プロセスがその処理を引き継ぐことができるため、NSD の復元力が向上します。単一のマルチスレッド・アーキテクチャでは、NSD は必ずしも重大な内部エラー状態から回復できるわけではありません。
ワーカ・プロセスの数が 2 つ以上の場合は、ステート認識接続 (保持モード 1) を使用しないでください。
NSD に対する管理者権限の付与
NSD (CSPnsd) コンポーネントの管理者は、このサービスの開始/停止が許可されたユーザ (またはグループ) を一部制御することができます。
既定のシナリオでは、CSPnsd マスタ・プロセス ID (PID) ファイル (CSPnsd) は、サービスを開始したユーザのみがその後サービスを終了できるように作成されます。
例えば、管理者は、現在の UNIX® グループに属するすべてのユーザがサービスを管理できるように選択することができます。 これは管理ユーザが属するグループです。
NSD start-up option: [-m=s] Define the user(s) permitted to manage this service where 's' is: 'u' for the current user (the default), 'g' for the current group, 'o' for others, 'a' for everyone (m=ugo),
例:
./CSPnsd -m=ug
これにより、現在のユーザ・グループ内の現在のユーザおよびその他すべてのユーザが NSD を管理できます。
NSD を停止するコマンドが発行されると、まず CSPnsd 親プロセスに以前と同様にシャットダウンするようシグナルを送信しようとします。 サービスが別のユーザによって開始されたためにこれが不可能な場合は、CSPnsd.ini ファイルにフラグが書き込まれ、サービスはこのフラグを認識したときに自体を正常に終了します。 このプロセスの完了には、最大 20 秒かかります。