Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

InterSystems IRIS ライセンスの管理

この章では、InterSystems IRIS® データ・プラットフォームのライセンス・システムの概要を説明します。

Important:

ライセンス付与された InterSystems IRIS ソフトウェアの使用方法は、"使用条件" によって定められています。ただし、その実装に適用される条件は緩和される場合があります。お客様が記述されたライセンス関連のコードが、これら使用条件に適合することを必ずご確認ください。

InterSystems IRIS ライセンスの構成

各 InterSystems IRIS インスタンスには、そのライセンスの機能範囲および現在の使用状況の独立したローカル・ビューが保持されており、各インスタンスには、ライセンス・キーへのアクセス権が必要です (評価版インストールを除く)。各インスタンスにローカル・ライセンス・キー・ファイルをインストールしてこれをアクティブにできます。または、複数のインスタンスを管理している場合は、一元的な場所に格納されているキー・ファイルを管理するようライセンス・サーバを構成できます。そうすれば、このライセンス・サーバから他のインスタンスにキー・ファイルを配布できます。この場合、各インスタンスをキー・ファイルの LicenseID で構成する必要があります。これにより、各インスタンスは起動時にキーのコピーを取得できます。

マルチサーバ・ライセンスは、同一マシンまたは異なるマシン上で協力関係にあるインスタンス間で共有できます。共有は、マルチサーバ・キーでのみ許可されます。マルチサーバ・ライセンスを使用するには、InterSystems IRIS ライセンス・サーバを 1 つ以上構成し、キーで認証される InterSystems IRISライセンス・ユニットを割り当てる必要があります。キーを共有するインスタンスはすべて、同じ 1 つのまたは 1 組みのライセンス・サーバを使用するように構成する必要があります。ライセンス・サーバは、InterSystems IRIS インスタンスが実行されているコンピュータであればどのコンピュータ上でも実行できます。監視プロセスがライセンス・サーバに更新メッセージを送信し、複数のインスタンスがライセンスを共有している場合は、ライセンス・サーバによってライセンス割り当てが調整されます。

ライセンス・サーバによって、すべてのインスタンスでローカルに保持されているライセンス使用のビューが調整されます。ライセンス・サーバは InterSystems IRIS プロセスではないので、InterSystems IRIS インスタンスが終了しても影響はありません。1 つのライセンス・サーバで、複数のインスタンスを処理できます。したがって、ホスト上で実行される InterSystems IRIS インスタンスの数にかかわらず、各ホストに必要なライセンス・サーバは 1 つのみです。ただし、各 InterSystems IRIS インスタンスのローカルには、認証ライセンス・キー・ファイルのコピーが必要です。

複数のホストで InterSystems IRIS サーバを実行する場合、冗長性を確保するには、複数のライセンス・サーバを構成できます。ライセンス・ソフトウェアによって、ライセンス・サーバの 1 つがアクティブ・サーバとして選択されます。その他のサーバは、アクティブ・サーバに障害が発生したときに処理を引き継ぎます。ライセンス・サーバの構成時に、ライセンス・サーバをホストするサーバを決定します。実行するホストの台数は任意ですが、4 台以上では多すぎます。ライセンス・サーバは、実行中のインスタンスによって起動されるので、InterSystems IRIS インスタンスが常に稼動しているシステムで実行するように構成する必要があります。

各インスタンスに、適切な iris.key ファイルの独自コピーがあり、同じキーで認証されるすべてのインスタンスが同じライセンス・サーバを使用している限り、ライセンス・キーが異なり異なるプラットフォーム上で実行される複数のインスタンスで同じライセンス・サーバを使用してライセンスを調整できます。ただし、複数のライセンス・キーのライセンス数が合計されることはありません。異なるライセンス・キーを使用する InterSystems IRIS インスタンスでは、ライセンス数の共有は行われません。また、異なるライセンス・キーを使用して 2 つのインスタンスにログインしたユーザは、それぞれのキーに由来するそれぞれのライセンスを使用します。

ライセンス・サーバの構成

ライセンス・サーバは、管理ポータルの [ライセンスサーバ] ページ ([システム管理][ライセンス][ライセンスサーバ]) で追加または削除できます。このページには、このインスタンスに対して構成されたライセンス・サーバのリストが表示されます。このインスタンスに複数のライセンス・サーバが構成されている場合、アクティブなライセンス・サーバの行に影が付きます。

Note:

$System.License.ShowServer() メソッドを使用してどのライセンス・サーバがアクティブであるかを判断することもできます。

リストされたライセンス・サーバの名前をクリックしてその情報を更新するか、[削除] をクリックしてこれを削除します。新しいライセンス・サーバを追加するには、以下の手順を実行します。

  1. [ライセンス・サーバを作成] をクリックし、ライセンス・サーバを構成します。画面右端に [新しいライセンス・サーバを作成] ボックスが表示されます。

  2. [名前] ボックスに、ライセンス・サーバの名前を入力します。ライセンス・サーバ名によって構成内のライセンス・サーバが特定されるため、構成内で一意にする必要があります。

  3. [ホスト名/IPアドレス] ボックスに、ライセンス・サーバをホストする IP アドレスを入力します。ドット十進法形式 (192.29.233.19) や、アルファベット形式 (mycomputer.myorg.com) で IP アドレスを入力できます。IPv6 を有効にした場合は、コロン区切りの形式で IPv6 アドレスを入力できます (2001:fecd:ba23:cd1f:dcb1:1010:9234:4085)。

  4. [ポート] ボックスに、ライセンス・サーバが使用するポート番号を入力します。ライセンス・サーバのポート番号は、102465535 の間の数値にする必要があります。既定のポート番号は 4002 です。冗長ライセンス・サーバが異なるホストで実行されている場合、一意のポート番号を使用する必要はありませんが、その IP アドレスで既に使用されているポート番号ではない番号を使用する必要があります。

    Important:

    リモート・ライセンス・サーバがファイアウォールで保護されている場合、UDP トラフィックのためにライセンス・サーバ・ポートが開かれている必要があります。

  5. (オプション) [KeyDirectory] ボックスに、ライセンス・キーが格納される一元的なディレクトリを入力します。詳細は、以下の "ライセンス・サーバへのキーのロード" のセクションを参照してください。

  6. [保存] をクリックすると、ライセンス・サーバが作成されます。

ライセンス・サーバを追加または削除したら、InterSystems IRIS インスタンスを再起動する必要があります。

Note:

別個のインスタンスがすべて同じライセンス・サーバ・アドレスおよびポートを構成している場合、これらはすべて同じライセンス・サーバを使用します。このような場合、各インスタンス上の既定の [LOCAL] ライセンス・サーバ (127.0.0.1) を削除する必要があります。各インスタンスに同じキーがロードされると、これらのインスタンスはそのキーを共有します。インスタンスごとに異なるキーがロードされると、ライセンス・サーバではインスタンス・セットのそれぞれがキー別に処理されます。

ライセンス・サーバへのキーのロード

共有ライセンスの機能範囲の管理に加えて、ライセンス・サーバは一元的なディレクトリに格納されているキーを InterSystems IRIS インスタンスに配布することもできます。

KeyDirectory プロパティは、Config.LicenseServersOpens in a new tab の一部として定義されます。これを入力すると、ライセンス・サーバを起動するインスタンスは起動時にそのインスタンスで見つかった有効な *.key ファイルをすべて読み取り、ライセンス・サーバに送信します。各キー・ファイルには、一意の LicenseID プロパティが必要です。インスタンスは、正常にロードされたファイルの数とエラーをログに記録します。%SYS ネームスペースから ReloadKeys^%SYS.LICENSE を呼び出すことで、ディレクトリからキー・ファイルを手動で再ロードし、任意のライセンスを更新できます。

Note:

ライセンス・サーバのキー・テーブル内の既存のキーと同じ LicenseID を持つ新しいキーをロードすると、既存のキーには “replaced” というマークが付けられます。インスタンスからその LicenseID への要求では、最も新しくロードされたキーが取得されます。既存の $System.License.DumpKeys() メソッドを使用して、ライセンス・サーバ内のキーの現在の状態を確認できます。

ライセンス・キーの有効化

InterSystems IRIS では、ライセンス・キーを使用して、登録されたサイトで適切な操作を行い、使用可能な容量を定義し、InterSystems IRIS 機能へのアクセスを制御できるようにします (評価版インストールには、ライセンス・キーは必要ありません)。ライセンス・キーは、通常、iris.key という名前のライセンス・キー・ファイルの形式で提供されます。

InterSystems IRIS をインストールした後に、以下の手順を使用して、ライセンス・キーを有効にします。同じ手順を使用して、インストールされているすべてのインスタンスで新しいライセンス・キーをいつでも有効にできます (キーのアップグレード)。管理ポータルからアクセスできる場所にあるライセンス・キーを有効にできます。有効化の一環として、ライセンス・キーは、インスタンスの install-dir/mgr ディレクトリにコピーされます。ライセンス・キーに、事前に名前が付いていない場合は、iris.key, という名前になります。

Note:

Windows インストール中にライセンス・キーを選択することもできます ("インストール・ガイド" の “Microsoft Windows への InterSystems IRIS のインストール” を参照してください)。この場合、ライセンスは自動的に有効になり、ライセンス・キーは iris.key という名前でインスタンスの install-dir/mgr ディレクトリにコピーされます。ここで説明する有効化の手順は必要ありません。

また、このセクションでは、ライセンス・トラブルシューティングおよびすべてのライセンス・ユニットが使用中の場合にオペレーティング・システムのコマンド行からライセンスをアップグレードする方法についても説明しています。

ライセンス・キーを有効にするには、以下の手順を使用します。

  1. [ライセンスキー] ページ ([システム管理][ライセンス][ライセンスキー]) に移動します。現在のアクティブなライセンス・キーの情報が表示されます。アクティブなライセンスがない場合は、[顧客名: ライセンス不明または読み取り不可能] などの表記で示されます。このページにある [印刷] ボタンを使用すると、表示されている情報を簡単に印刷できます。

  2. [ライセンスキー有効化] をクリックし、有効にするライセンス・キー・ファイルを参照します。ファイルを選択すると、ファイルに関する情報が表示され、目的の容量が提供されることや有効期限が適切であることなど、正しいライセンス・キーかどうかを有効にする前に検証できます。 キーが有効でない場合は、エラー・メッセージにそのことが表示されます。現在アクティブなライセンスがある場合は、現在のライセンスと選択されているライセンスの情報が並んで表示されます。ライセンス・キーを適用にするために有効にした後にインスタンスを再起動する必要がある場合は、そのことが通知され、その理由が表示されます。このダイアログにある [印刷] ボタンを使用すると、現在アクティブなライセンスと選択した新しいライセンス・キー両方の情報を簡単に印刷できます。

  3. [アクティベート] をクリックして、新しいライセンス・キーを有効にします。新しいキーは iris.key という名前で、インスタンスの install-dir/mgr ディレクトリにコピーされ、前のライセンス・キー (ある場合) を上書きします。確認ダイアログに、必要に応じてインスタンスを再起動することが表示され、新しいライセンスが有効にする機能が現在のライセンスよりも少ない場合は、そのことが警告されます。

Config.StartupOpens in a new tabLicenseID プロパティを使用することで、ライセンス・サーバからのライセンス・キーを要求するようインスタンスを構成できます。インスタンスの起動時に、iris.key ファイルが存在せず、LicenseID が定義されている場合、インスタンスはライセンス・サーバからのライセンス・キーを要求して、これを有効にします。

Note:

同じ LicenseID が、ライセンス・キー・ファイルに存在する必要があり、ライセンスのダウンロードが必要なインスタンスでも定義されている必要があります。

通常は、インスタンスを再起動する必要はありませんが、ライセンス・キーをアップグレードするときには制約があります。ライセンス・タイプをパワー・ユニットから他に変更する場合、新規のキーは自動ではアクティベートされません。ただし、このような変更は極めて稀です。

ライセンスのアップグレードでは、共有メモリ・ヒープ (gmheap) 領域から消費できるメモリ量に対する制約もあります。gmheap 領域がない場合、ライセンス・テーブルのエントリ数は拡張できません。gmheap 領域にライセンス・アップグレードに使用できる十分な空間がない場合は、メッセージはメッセージ・ログに書き込まれます。[メモリ詳細設定] ページ ([システム管理][構成][メモリ詳細設定]) で、[gmheap] 設定のサイズを大きくすることができます。

新しいライセンス・キーが既存のライセンス・キーよりも、少なくとも 1000 個の 64 KB ページ分多くの gmheap 領域を消費する場合は、新しいライセンス・キーを完全にアクティブ化するために、InterSystems IRIS インスタンスを再起動する必要があります。各ページが少なくとも 227 個のライセンスを表すため、この状況が発生することは、まずありません。

ライセンス・キーの更新

ライセンス・キーを更新するには、KeyDirectory 内のキー・ファイルを置き換えて、ReloadKeys^%SYS.LICENSE を実行します。各インスタンスのライセンス・モニタ (^LMFMON) が、構成されている LicenseID に対して異なるキーがあるかどうかを 30 分おきに確認し、ある場合はアップグレードを実行しようとします。

Note:

実動インスタンスではほとんどのアップグレードが成功しますが、状況によっては、インスタンスの再起動が必要な場合があります。このような場合、ライセンス・モニタはエラーをログに記録し、次の日までそのキーのアップグレードを再度試行することはありません (繰り返されるエラーがログに記録されないようにするため)。インスタンスの再起動によって、起動時に新しいキーがロードされます。

ライセンス・トラブルシューティング

ライセンスを入力して InterSystems IRIS を再起動した後、1 人のユーザしかログインできない場合は、管理ポータルを使用して調査してください。[ライセンス使用量] ページ ([システムオペレーション][ライセンス使用量]) の [プロセス毎の使用] を選択すると、実行中のプロセスの数が表示されます。ライセンス情報の表示には、ポータルの [ライセンスキー] ページ ([システム管理][ライセンス][ライセンスキー]) を使用することもできます。"ライセンス・キーの有効化" を参照してください。キーが無効の場合、[CustomerName] フィールドにその説明が表示されます。

また、ライセンス・エラー・メッセージは、メッセージ・ログおよびシステム・モニタ・ログで確認することもできます。これらのログは、それぞれポータルの [メッセージログ] ページ ([システム処理][システムログ][メッセージログ])、および [システム・モニタ・ログ] ページ ([システム処理][システムログ] > [システム・モニタ・ログ]) で表示できます ("監視ガイド" の “管理ポータルを使用した InterSystems IRIS の監視” の章にある "ログ・ファイルの監視" のセクションを参照)。システム・モニタは、ライセンスの有効期限の警告とアラートをこれらのログに書き込み、ヘルス・モニタは、ライセンス取得のアラートと警告を書き込みます。ライセンス制限が超過されると、ライセンス・モジュールごとのメッセージ・ログに警告が書き込まれます。アプリケーション・モニタでは、ライセンス・メトリックベースのアラートを構成して、電子メール通知を送信したり、通知メソッドを呼び出したりできます。これらの監視ツールの詳細は、"監視ガイド" の “システム・モニタの使用” の章を参照してください。

ライセンスの有効期限が近付くと、メッセージ・ログに警告が表示されます。ライセンスは、有効期限が切れる日付の終了時刻まで有効です。例えば、ライセンスの有効期限が 2022 年 11 月 30 日である場合、そのライセンスは 2022 年 11 月 30 日の終了時刻まで有効ですが、2022 年 12 月 1 日には機能しなくなります。

$System.License.Help では、ライセンス問題のトラブルシューティングに使用できる方法のリストが表示されます。

 Do $System.License.Help()

このドキュメントでは、これらのメソッドの多くについて説明しています。

管理者ターミナル・セッション

いくつかの問題によって、ターミナル・セッションを取得できないことがあります。これは、InterSystems IRIS を適切に起動できず、シングル・ユーザ・モードになった場合、または単に使用可能なライセンスがない場合に発生することがあります。このような場合、管理者ターミナル・セッションを作成する必要が生じることがあります。管理者ターミナル・セッションでは、特別なライセンスを使用して問題を解決できます。

管理者セッションを開くためのコマンドは、WindowsUNIX®、Linux、MacOS では異なります。

Windows での管理者セッション

コマンド・プロンプトを使用して、install-dir\bin に移動します。次に、以下のコマンドを管理者として実行します。

irisdb -s<install-dir>\mgr -B

これにより、InterSystems IRIS インストール環境の bin ディレクトリ (install-dir\bin) から InterSystems IRIS の実行可能ファイルが実行され、install-dir\mgr のパス名が示されます (-s 引数の使用により)。また、緊急のログイン 1 件を除き、すべてのログインが禁止されます (-B 引数の使用により)。

例として、既定のディレクトリにある MyIRIS という名前のインスタンスでは、コマンドは次のようになります。

c:\InterSystems\MyIRIS\bin>irisdb -sc:\InterSystems\MyIRIS\mgr -B
UNIX®、Linux、および MacOS での管理者セッション

コマンド・プロンプトを使用して、install-dir/bin ディレクトリに移動します。次に、以下のコマンドを実行します。

iris terminal <instance-name> -B

例として、既定のディレクトリにインストールされている MyIRIS という名前のインスタンスでは、コマンドは次のようになります。

User:/InterSystems/MyIRIS/bin$ iris terminal MyIRIS -B

オペレーティング・システムのコマンド行からのライセンスのアップグレード

%SYSTEM.License.Upgrade()Opens in a new tab メソッドにより、installdir\mgr ディレクトリにコピーされた新しいライセンス・キーがアクティブ化されます。すべてのライセンス・ユニットがユーザによって消費され、ターミナル・ウィンドウを開くことができない場合、以下のようにして、このメソッドをコマンド行から実行して容量の大きい新しいライセンス・キーをアクティブ化できます。

iris terminal <instancename> -U %SYS '##Class(%SYSTEM.License).Upgrade()'

コマンドの詳細については、このガイドの “InterSystems IRIS 複数インスタンスの使用法” の章で "InterSystems IRIS インスタンスの接続" を参照してください。

ライセンスの機能範囲と使用の決定

現在使用されているライセンス数と使用者はどのようにして確認できるのでしょうか。%SYSTEM.LicenseOpens in a new tab クラスが、InterSystems IRIS ライセンス・アプリケーション・プログラミング・インタフェース (API) に対するインタフェースを提供します。これの多数のメソッドや関連クエリを使用してライセンスの機能範囲および現在の使用状況を問い合わせることができます。

%Library.%ResultSet クラスの RunQuery メソッドを使用して、多数のライセンス・クエリを実行できます。例を以下に示します。

do ##class(%ResultSet).RunQuery("%SYSTEM.License","Summary")

また、以下の表に示すように、管理ポータルの [ライセンス使用量] ページ ([システムオペレーション][ライセンス使用量]) で、これらのクエリの出力を表示できます。

[ライセンス使用量] ページのリンク ライセンス・クエリ
要約 Summary()$System.License.ShowSummary によって示されるライセンスの使用状況の要約を返します。
プロセスごとの使用 ProcessList()$System.License.DumpLocalPID によって示されるオペレーティング・システム・プロセス ID (PID) 別にライセンスの使用状況を返します。
ユーザごとの使用 UserList() — ユーザ ID 別にライセンスの使用状況を返します。
配布ライセンス使用状況 AllKeyConnectionList() — ユーザ別に並べ替えて配布ライセンスの現在の使用状況を返します。(ライセンス・サーバが接続されていない場合、これは無効になります。)

%SYSTEM.LicenseOpens in a new tab クラスから以下のクラス・メソッドを使用して情報を表示したり、ライセンス・データベースをファイルにダンプしたりすることもできます。

$System.License.CKEY は、キーを表示します。このサブルーチンは、互換性のために保持されている ^CKEY プログラムによって呼び出されます。

 Do $System.License.CKEY()

$System.License.ShowCounts は、ローカル・システムの共有メモリに記録されているライセンスの使用状況の要約を示します。

 Do $System.License.ShowCounts()

$System.License.ShowServer は、アクティブなライセンス・サーバのアドレスとポートを示します。

 Do $System.License.ShowServer()

REST ベースのアプリケーションを開発した場合、ライセンスは使用によって消費されます。この事態が発生しないようにするには、確立可能な Web ゲートウェイ接続の数を構成します。管理ポータルの [ウェブゲートウェイ管理] セクションで、以下の操作を実行します。

  1. [サーバ接続] に移動します。

  2. [状態なしパラメータ] を選択します。

  3. サーバ側ログインに許容されたライセンスよりも 2 または 3 少ないライセンス数を [最大] に設定します。

Note:

アプリケーションのサーバ側のニーズによっては、この設定の調整が必要になることがあります。

これを実行することで、利用可能なすべての接続がビジーになり、新規の要求は拒否されずにキューに入れられます。ライセンス数の超過による拒否は現れなくなります。ボリュームの増加に伴って、クライアントの応答時間は遅くなります。そのような状況は、追加ライセンスの購入が必要なことを示しています。

以下のセクションでは、ライセンス情報を表示する他のいくつかのメソッドについて説明します。

ローカル・ライセンス情報を表示するメソッド

以下のサブルーチンは、ローカルのインスタンス共有メモリに格納されているライセンス・テーブルのコンテンツをダンプします。通常は、クライアントを識別します。

$System.License.DumpLocalAll は、現在のディレクトリの all.dmp ファイルにすべてのローカル・ライセンス・テーブル・エントリをダンプします。

 Do $System.License.DumpLocalAll()

all.dmp ファイルのコンテンツの例を以下に示します。

License Capacity = 5, Current use = 2, Units Remaining = 3

   0)  User ID = 127.0.0.1, Connections = 2, CSP Count = 0, Time active = 90
   1)  User ID = 192.9.202.81, Connections = 1, CSP Count = 0, Time active = 49
   2)  free
   3)  free
   4)  free

$System.License.DumpLocalInUse は、現在のディレクトリの inuse.dmp ファイルに、使用中のすべてのローカル・ライセンス・テーブル・エントリをダンプします。

 Do $System.License.DumpLocalInUse()

inuse.dmp ファイルのコンテンツの例を以下に示します。

License Capacity = 5, Current use = 2, Units Remaining = 3

$System.License.DumpLocalPID は、現在のディレクトリの piduse.dmp ファイルに、ローカル・ライセンス・テーブルの使用状況をプロセス ID 別にダンプします。

 Do $System.License.DumpLocalPID()

piduse.dmp ファイルのコンテンツの例を以下に示します。

PID     Process LID     Type    Con     MaxCon  CSPCon  LU      Active  Grace

592     System                  0       0       0       0       0       0
2816    System                  0       0       0       0       0       0
688     System                  0       0       0       0       0       0

ライセンス・サーバ情報を表示するメソッド

以下のサブルーチンは、ライセンス・サーバによって保持されているライセンス・テーブルのコンテンツをダンプします。出力ファイルは、アクティブなライセンス・サーバが実行されているホスト上の指定ディレクトリにあります。

$System.License.ShowSummary は、ライセンス・サーバでのライセンス情報の要約を表示します。Distributed license use セクションには、ライセンス・サーバによって現在サポートされているすべての InterSystems IRIS インスタンスのライセンス使用状況がまとめて表示されます。Local license use セクションには、プログラムが実行されている 1 つの InterSystems IRIS インスタンスに対するライセンス使用状況のビューが表示されます。

 Do $System.License.ShowSummary()

$System.License.DumpServer は、ライセンス・サーバを実行しているホスト上のファイル dumpserver.txt に、このルーチンを実行したサーバに関連するライセンス・サーバ・データベース情報をダンプします。

 Do $System.License.DumpServer()

$System.License.DumpServers は、ライセンス・サーバを実行しているホスト上のファイル dumpservers.txt に、既知のすべてのサーバに対するライセンス・サーバ・データベース情報をダンプします。

 Do $System.License.DumpServers()

$System.License.DumpKey は、ライセンス・サーバを実行しているホスト上のファイル dumpkey.txt に、このインスタンスによって使用されるキーとそれを共有するインスタンスをダンプします。

 Do $System.License.DumpKey()

$System.License.DumpKeys は、ライセンス・サーバを実行しているホスト上のファイル dumpkeys.txt に、すべてのキーを、それらを使用するインスタンスとクライアントを示して、ダンプします。

 Do $System.License.DumpKeys()
Note:

ローカル・ライセンス・メソッドによって表示された情報は、ライセンス・サーバ・メソッドによって表示された情報よりも最新であることに注意してください。これは、ライセンス・サーバは定期的に更新されるだけですが、ローカル・データはリアルタイムで更新されるためです。

ログインはローカルで制御されるため、ライセンスの数が上限値を一時的に上回ることは可能ですが、ライセンス・サーバで制限が強制されます。各インスタンスは、インスタンス共有メモリ内で維持されるローカル・ライセンス・テーブルに基づいて、ログインを許可または拒否します。各インスタンスからは、ローカル・ライセンス・テーブルに加えられた変更を説明する定期的な更新がライセンス・サーバに送信されます。すべてのインスタンスのライセンスの使用の合計が制限を超えると、ライセンス・サーバは各インスタンスからの更新メッセージに対して否定応答を送信します。

この否定応答を受け取ると、これ以上のライセンス・ユニットは使用できないため、各インスタンスでは新しいログインが拒否されます。開始しようとしている InterSystems IRIS プロセスのライセンス・ユーザ ID が、現在のいずれのプロセスのライセンス・ユーザ ID にも一致しない場合、そのログインは新しいものであると見なされます。この状態は、すべてのインスタンスによる使用の合計が許可された上限を下回るまで存続し、その時点で、ライセンス・サーバはインスタンスの更新に対して肯定応答の送信を開始します。これにより、インスタンスのそれぞれで、新しいログインが許可されます。

ユーザの認識

InterSystems IRIS ライセンス・システムは、個々のユーザを識別し、ユーザごとに 1 つのライセンス・ユニットを割り当てます。1 人のユーザは、1 つのライセンス・ユーザ ID (IP アドレス、ユーザ名、Web セッション ID、あるいはユーザの接続方法による他の識別条件) によって識別されます。

1 人のユーザによって、または 1 人のユーザに対して開始された複数のプロセスは、ユーザごとの最大プロセス数に達するまで 1 つのライセンス・ユニットを共有します。プロセス数がこの最大値を超えた場合、移行が発生し、InterSystems IRIS はそのユーザ ID に対して 1 プロセスごとに 1 ライセンス・ユニットを割り当て始めます。1 つのユーザ ID に関連付けられているプロセスの数が最大数を越える場合、システムは複数のユーザが何らかの中間媒体 (ファイアウォール・システムなど) を通じて InterSystems IRIS にアクセスしていると仮定し、追加のライセンス・ユニットを要求します。(Job コマンドで開始したプロセスは、そのコマンドを呼び出したユーザ ID の下でカウントされます。)

そのユーザ ID のプロセス数が最大値を下回るようになった場合でも、InterSystems IRIS は、そのユーザ ID に対してプロセスごとに 1 ライセンス・ユニットの割り当てを継続します。そのユーザ ID による接続がすべて閉じられ、そのユーザ ID のプロセスがなくなった場合にのみ、ライセンス割り当ては、そのユーザ ID に対して 1 ユニットになるようにリセットされます。

アプリケーションが名前でユーザを識別できる場合、クライアント IP アドレスに基づく既定のユーザ ID、Web セッション ID、および接続から派生した他のユーザ ID の使用に関連する問題が解決されます。

例えば、ファイアウォールやターミナル・サーバ・ソフトウェアを使用すると、InterSystems IRIS は接続中のユーザの区別ができず、そのために最大接続移行ルールに依存することになります。同じクライアントから混合接続を使用する場合も、自動 ID 作成を使用して適切にユーザをカウントできなくなります。

ユーザ名をライセンス識別子として使用すると、これらの問題は発生しません。組織が新たにアクセス要件や監査要件を導入するにつれて、ユーザを正確に識別する必要性は高まります。ユーザ認識を使用してライセンス規約を制御することは、時代の流れから考えても当然の結果と言えるでしょう。

このセクションでは、以下のトピックについて説明します。

ライセンス・ログイン

ライセンス・ログインには、自動ログインと明示ログインの 2 つのモードがあります。既定は自動ログインです。ライセンス・システムは、クライアントの IP アドレスを識別して、そのアドレスをライセンス・ユーザ ID として使用します。クライアントが IP を使用してサーバに直接接続する場合、これは正確に機能します。しかし、ファイアウォールがクライアントとサーバの間にある場合は、すべてのクライアントが同じ IP アドレスを持つように見えるため、うまく機能しません。また、ターミナル・サーバが telnet プロトコルを使用している場合、InterSystems IRIS にはすべてのターミナル・サーバ・ポートが 1 つの IP アドレスとして認識されるため、自動ログインではユーザが区別できません。すべての接続が同じアドレスからのものであるため、すべての接続が同じユーザ ID を持ちます。ユーザがファイアウォールを経由して接続したり、ターミナル・サーバから telnet 転送を使用する場合は、明示ログインを使用してください。

ネットワーク転送に IP を使用していない場合は、IP アドレスをライセンス・ユーザ ID として使用できません。この場合、ライセンス・システムは、その他のさまざまなソースをユーザ ID として使用します。UNIX®/Linux システムで at デーモンによって開始されたバッチ・プロセスには、また別の問題があります。このようなプロセスは、ユーザと関連していないのでライセンス・ユニットを共有しません。このようなプロセスでは、プロセス ID がライセンス識別子として使用されます。

明示ログインが選択されているときは、InterSystems IRIS ではユーザ ID の自動検出は試行されません。アプリケーションは $System.License.Login(UserIdentifier) メソッドを明示的に呼び出して、ライセンス・ユーザ ID を提供し、ライセンスを取得する必要があります。

明示ログインは、$System.License.DeferUserIdentification([0 or 1]) 関数を呼び出すことで使用可能になります。この呼び出しは、インスタンスの起動時に ^%ZSTART ルーチンの SYSTEM エントリ・ポイントから実行できます。引数値が 1 の場合、ライセンスの取得はログイン時に延期され、明示ログインを実行できます。引数値が 0 の場合、ライセンスの取得はプロセス開始時に自動で行われます。

ログインが延期されたとき、ユーザは即時にライセンス・ログイン・メソッドを呼び出す必要があります。ライセンス・ログインを実行していないプロセスは、最初の 4000 個の ObjectScript コマンドで停止し、その後 1000 個の ObjectScript コマンドごとに停止します。

自動ログインが処理できない場合は、明示ログインを使用します。自動ログインに構成されている場合でも、いつでも $System.License.Login(UserIdentifier) を呼び出して、明示的にユーザのライセンスを識別できることを覚えておいてください。

ユーザ名ライセンス

$USERNAME の値を使用してライセンス付与するユーザを識別できます。これにより、IP アドレスのみを使用して個々のユーザを確実に識別できるわけではない状況でも、より正確なカウントが可能です。

%SYSTEM.LicenseOpens in a new tab クラスの $SYSTEM.License.UserNameLicensing() メソッドを使用してライセンス・ユーザ ID を指定する方法を変更できます。既定で、InterSystems IRIS ではクライアント IP アドレスを使用して、ライセンス追跡サブシステムに対してユーザを識別します。最小ではない初期セキュリティ設定で InterSystems IRIS をインストールした場合は、各プロセスにはユーザ ID ($USERNAME) があります。$SYSTEM.License.UserNameLicensing() システム・メソッドを呼び出して、InterSystems IRIS ライセンス・サブシステムで、ライセンス・ユーザ識別子として $USERNAME を使用するようにできます。

$SYSTEM.License.UserNameLicensing() メソッドはシステムの状態を変更します。このメソッドを SYSTEM^%ZSTART から呼び出して、インスタンスの起動時にユーザ名ライセンスを有効にすることができます。このメソッドには、以下の関数があります。

  • $SYSTEM.License.UserNameLicensing(1)$USERNAME ベースのライセンスを有効にし、前の状態を返します。

  • $SYSTEM.License.UserNameLicensing(0)$USERNAME ベースのライセンスを無効にし、前の状態を返します。

  • $SYSTEM.License.UserNameLicensing() — 現在の状態を返します。特殊なログイン規則を使用するライセンス・タイプの引数で呼び出された場合は、エラーを返す可能性があります。

以下の例は、ユーザ名ライセンスが現在有効であるか無効であるかを示します。

 Write " Username Licensing",!
 Write " 1-enabled, 0-disabled",!
 Write $SYSTEM.License.UserNameLicensing(),!

以下の例は、ユーザ名ライセンスを有効にし、その後無効にします。

 Set RC=$SYSTEM.License.UserNameLicensing(1)
 Write RC,!
 Set RC=$SYSTEM.License.UserNameLicensing(0)
 Write RC

詳細は、"ObjectScript リファレンス" の "$USERNAME" 特殊変数を参照してください。

ライセンス・ログインの特別な考慮事項

ライセンス・ログインに関して、以下に示す特別な考慮事項に注意してください。

  • ログインにおいて、CSP 接続は特殊です。インターシステムズは、CSP アプリケーションでは %CSP.SessionOpens in a new tab と同様のメソッド %CSP.Session.Login を使用して、ユーザのライセンスを識別することを強くお勧めします。そうしない場合、ライセンス・ユーザ ID として Web セッション ID が使用されますが、各セッションで 1 つのライセンス・ユニットを消費するので、多くの場合は不適切な設定となります。例えば、ユーザは複数のブラウザ・ウィンドウを同時に開くことができます。また、ユーザは複数の経路を使用して接続できます。この場合、%CSP.SessionOpens in a new tab メソッド %CSP.Session.Login(username, password) を使用して、セッションに対する明示的なライセンス・ログインを実行できます。

    Note:

    CSP セッションが終了 (ログアウトまたはタイムアウト) し、ユーザがアクセスしているのが 1 ページのみの場合、CSP はすぐにライセンスを解放しません。代わりに CSP はライセンスを予約し、そのユーザに最大 10 分の猶予期間を与えます。

  • 匿名 SOAP 要求 (インスタンス認証を必要としない SOAP 要求) は最短 10 秒間で 1 ライセンスを消費しますが、ユーザが特定される SOAP 要求は “ユーザ要求“ と見なされるため、ライセンスが必要です。SOAP セッションの実装の詳細は、"Web サービスおよび Web クライアントの作成" の "SOAP セッション管理" を参照してください。

  • InterSystems IRIS は、バックグラウンド・プロセスを区別したり、これらのプロセスを個別にカウントすることはありません。ユーザ・プロセスが他のプロセスを開始する場合、その子プロセスはユーザの最大許容プロセス数全体に対し 1 つとしてカウントされます。

  • [新規タスク] ページ ([システム処理][タスクマネージャ][新規タスク]) (このドキュメントの “InterSystems IRIS の管理” の章の "タスク・マネージャの使用" を参照) を使用して作成した各タスクは、[タスクを実行するユーザ] セレクタで指定した InterSystems IRIS のユーザ名と、ホスト IP アドレスに変換されるループバック IP アドレス (127.0.0.1) に基づいたライセンス・ユーザ ID で 1 つのライセンス・ユニットを消費します。これにより、特定のユーザとして別々のホスト上で実行されるタスクが、そのユーザの最大許容プロセス数 ("ユーザの識別" を参照) に対して、確実に合計されるようになります。

  • ユーザの起動ルーチン (^%ZSTART および ^ZMIRROR) によって始まるプロセスも特別なケースです。このルーチンを実行中のプロセスには、親プロセスがありません。したがってログインは、このルーチンが呼び出される前に、そのユーザ ID User Startup に対して実行されます。このルーチンから Job コマンドによって開始されたプロセスは、このユーザ ID を持ちます。必要な場合は、ルーチンから $System.License.Login(UserId) を呼び出して、ユーザ ID を変更できます。これは、このルーチンで開始するバックグラウンド・プロセスが maxconn より 1 つ少なく、消費するライセンスが 1 つで済むことを意味します。ライセンス条件に従って、これらのプロセスに個別のライセンスが必要な場合 (例えば、個別のライセンスが必要な実験装置の一部を起動している場合など)、適切なユーザ ID に対するライセンスを取得するために $System.License.Login(UserId) を呼び出す必要があります。

アプリケーション・ライセンス

インターシステムズ・アプリケーション・パートナーは、アプリケーション・ライセンスを使用して、独自のライセンスの用途に合わせて InterSystems IRIS のライセンス容量を活用できます。InterSystems IRIS は、独自のアプリケーション・ランセンスと同じ方法でアプリケーション・ライセンスを管理します。使用カウントを管理して必要に応じてユーザ・ライセンスを取得および返却します。プロセスまたは Web セッションによって消費されるアプリケーション・ライセンスは、プロセスが終了したり、停止したり、プロセス・テーブルから削除された場合や Web セッションがタイムアウトしたり削除された場合に、プロセスまたはセッションによって消費される InterSystems IRIS ライセンスと共に自動的に解放されます。

アプリケーション・ライセンスは、標準の .ini 形式のファイルまたはファイルのセクションで、アプリケーションを識別するセクション・ヘッダといくつかの keyword=value ペアを含みます。このペアは、ライセンス内で一意であり、ライセンス付与された機能を表します。適切にフォーマットされたアプリケーション・ライセンスは、実行時にアプリケーションによって InterSystems IRIS にロードできます。

アプリケーション・ライセンス API には、アプリケーションがユーザやプログラムの代わりにライセンスを消費および返却したり、使用中のライセンス数や使用可能なライセンス数などのアプリケーションと機能のライセンスに関する情報を取得したりできるメソッドやクエリが含まれます。

アプリケーション・ライセンスのロード

アプリケーションの実行時に $SYSTEM.License.LoadAppLicenseFile メソッドを使用すると、どのようなアプリケーション・ライセンスでも InterSystems IRIS インスタンスでロードしてアクティブ化できます。このメソッドの詳細は、%SYSTEM.LicenseOpens in a new tab のクラス・リファレンスに記載されています ("アプリケーション・ライセンス API" を参照)。この方法でロードされたアプリケーション・ライセンスは、アクティブな InterSystems IRIS ライセンスには関連付けられませんが、InterSystems IRIS インスタンスによって個別に追跡されます。

各アプリケーション・ライセンスは、[AppName] で始まるセクションに含まれます。アプリケーション名 (AppName) には、ピリオド (.) は使用できません。ライセンスの残りは、ライセンス付与された機能を表す、繰り返されない一連の keyword=value ペアで構成されます。必要なフォーマットの詳細は、$SYSTEM.License.LoadAppLicenseFileOpens in a new tab メソッドのドキュメントを参照してください。

以下のアプリケーション・ライセンスのサンプルでは、keyword=value のペアを使用して複数のアプリケーション機能に対してライセンス付与されるユーザの数を制限し、すべてのユーザに対して Extended Lab Reports 機能を有効にします。

[BestLabApplication]
Lab Users=50
Lab Administrators=2
Lab Devices=5
Extended Lab Reports=Enabled

アプリケーション・ライセンスには、改ざんを防ぐ InterSystems IRIS の保護は適用されませんが、カスタムのアプリケーション・コードによって保護できます。例えば、チェックサムをキーワード・セクションに埋め込み、有効化する前にアプリケーションによって検証できます。

アプリケーション・ライセンス API

%SYSTEM.LicenseOpens in a new tab クラスは、アプリケーション・ライセンスを管理するための以下のメソッドを提供します。

%SYSTEM.License メソッド 説明
LoadAppLicenseFileOpens in a new tab

ファイルからアプリケーション・ライセンスをロードします。

GetAppLicenseOpens in a new tab

現在ロードされているアプリケーション・ライセンスのコンテンツを keyword=value のペアの文字列として返します。

GetAppLicenseMaxUsedOpens in a new tab

ライセンスのロード以降、アプリケーション・ライセンス・キーワードに関連付けられている、消費されるライセンスの最大数を取得します。

GetAppNamesOpens in a new tab

現在インターシステムズ、インターシステムズ・アプリケーション・パートナー、あるいはその両方によってライセンス付与されているアプリケーションの名前を返します。

IsAppLicensedOpens in a new tab

アプリケーションと機能のどちらがライセンス付与されているのかを示します。

TakeApplicationLicenseOpens in a new tab

アプリケーションと機能のライセンスを消費します。現在のプロセスのライセンス・ユーザ ID (または CSP の場合はセッション・ライセンス ID) は、消費されているアプリケーション・ライセンスに関連付けられているユーザ識別子です。

ReturnApplicationLicenseOpens in a new tab

現在のプロセスのライセンス・ユーザ ID または CSP の場合はセッション・ライセンス ID に関連付けられているライセンス・リソースを含むアプリケーション・ライセンスおよび機能のライセンスを解放します。

SetConnectionLimitOpens in a new tab

このインスタンスでユーザごとに許容される最大接続数を設定します。これにより、システム管理者は、1 人のユーザが使用可能なライセンス数すべてを消費しないようにすることができます。

ApplicationServerLoginOpens in a new tab

現在ロードされているアプリケーション・ライセンスを使用しているインスタンスの数が、キーで指定した制限を超過しているかどうかを示します。

GetAppLicenseValueOpens in a new tab

アプリケーション・ライセンス・キーワードに関連付けられている値を取得します。

GetAppLicenseMinimumOpens in a new tab

アプリケーション・ライセンス機能キーワードに関連付けられている使用可能なライセンスの最低数を取得します。キーワードに関連付けられている値は数値です。

GetAppLicenseFreeOpens in a new tab

アプリケーション・ライセンス機能キーワードに関連付けられている使用可能なライセンスの最大数を取得します。キーワードに関連付けられている値は数値です。

GetProcessAppsTakenOpens in a new tab

プロセス PID に対して取得されたアプリケーション・ライセンス・タイプの $List (存在しない場合は "") を取得します。

ApplicationUserListOpens in a new tab

ユーザ ID によってライセンスとアプリケーション・ライセンスを返します。

FeedbackOpens in a new tab