(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1では、複数の仮想マシンを使用したクラウドコンピューティング基盤においてライセンス管理を行う場合、不定なタイミングで増減する仮想マシンにインストールされているソフトウェアのライセンスを管理するために、ライセンス管理サーバが必要であった。また、特許文献2では、監視装置と各ノードとを仲介するためにマスタノードを用いる必要があった。しかしながら、特許文献1又は2には、ライセンス管理サーバ又はマスタノードに異常が発生した場合に、システム全体のライセンス情報に不備が生じ、システム全体に影響があるという問題点がある。
【0008】
本発明は、このような問題点を解決するためになされたものであり、ノードの動的な増減に対応して、各ノードにインストールされているソフトウェアのライセンスを管理するためのライセンス管理システム、装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の第1の態様にかかるライセンス管理システムは、
所定のソフトウェアがそれぞれにインストールされた複数のノードを備え、
前記複数のノードのそれぞれは、
全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を保持し、
他のノードとの間で前記ライセンス情報の同期を取る。
【0010】
本発明の第2の態様にかかるライセンス管理システムは、
所定のソフトウェア群がそれぞれにインストールされた複数のノードを備え、
前記複数のノードのそれぞれは、
全てのノードにおける前記ソフトウェア群に含まれる各ソフトウェアのライセンスの使用数が各ソフトウェアのライセンス形態に応じて算出されたライセンス情報を保持し、
他のノードとの間で前記ライセンス情報の同期を取る。
【0011】
本発明の第3の態様にかかるライセンス管理装置は、
複数のノードのそれぞれにインストールされた所定のソフトウェアのライセンスを管理するライセンス管理装置であって、
前記ライセンス管理装置は、前記複数のノードの一つであり、
全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を記憶する記憶部と、
他のノードを検出する検出部と、
前記検出された他のノードが保持する前記ライセンス情報を取得する取得部と、
前記取得したライセンス情報に基づいて前記記憶部に記憶されたライセンス情報を更新する更新部と、
前記更新したライセンス情報を前記他のノードの全てへ反映させる反映部と、
を備える。
【0012】
本発明の第4の態様にかかるライセンス管理方法は、
所定のソフトウェアがそれぞれにインストールされた複数のノードを用いた当該ソフトウェアのライセンス管理方法であって、
前記複数のノードのそれぞれが、
前記ソフトウェアの実行開始時に、各ノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を他のノードから取得し、
前記取得したライセンス情報に基づいて自身が保持する前記ライセンス情報を更新し、
前記更新したライセンス情報を前記他のノードへ反映させる。
【0013】
本発明の第5の態様にかかるライセンス管理プログラムは、
複数のノードのそれぞれにインストールされ、当該複数のノードの一つであるコンピュータで実行されるライセンス管理プログラムであって、
実行開始時に、他のノードを検出する処理と、
前記検出された他のノードに保持され、全てのノードにおけるソフトウェアのライセンスの使用状況を含むライセンス情報を、当該他のノードから取得する処理と、
前記取得したライセンス情報を自身のノードに保持されるライセンス情報と統合する処理と、
前記統合したライセンス情報に基づいて、前記実行が継続可能か否かを判定する処理と、
前記判定結果に応じて前記統合したライセンス情報のうち前記自身のノードにかかる前記使用状況を更新する処理と、
前記更新したライセンス情報を前記他のノードへ反映させる処理と、
を前記コンピュータに実行させる。
【発明の効果】
【0014】
本発明により、ノードの動的な増減に対応して、各ノードにインストールされているソフトウェアのライセンスを管理するためのライセンス管理システム、装置、方法及びプログラムを提供することができる。
【発明を実施するための形態】
【0016】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【0017】
<発明の実施の形態1>
図1は、本発明の実施の形態1にかかるライセンス管理システム1000の構成を示すブロック図である。ライセンス管理システム1000は、複数のノード1100、1200、・・・1n00(nは、自然数)を備える。ノード1100〜1n00のそれぞれには、所定のソフトウェアがインストールされている。つまり、ノード1100〜1n00には、同じ種類のコンピュータプログラムがインストールされている。当該ソフトウェアは、自身のソフトウェアのライセンスの管理を行うプログラムモジュールが含まれたものである。本発明の実施の形態1にかかる所定のソフトウェアは、例えば、任意の業務ソフトウェアに内包されるものであってもよい。つまり、この場合、実質的に当該業務ソフトウェアのライセンス管理を行うものとなる。そして、ノード1100〜1n00のそれぞれは、全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を保持し、他のノードとの間でライセンス情報の同期を取るものである。
【0018】
ここで、「ノード」とは、ソフトウェアを実行するハードウェアや、仮想マシン等に相当するものであり、典型的には、OS(Operating System)の動作単位に対応するものである。例えば、複数のノードは、分散して並列実行を行う処理単位であってもよい。また、ライセンス管理システム100は、複数の仮想マシンを使用したクラウドコンピューティング基盤により実現してもよい。尚、ノード1100〜1n00は、少なくとも2以上であればよい。また、ノード1100〜1n00のそれぞれには、2以上のソフトウェア、つまり、ソフトウェア群がインストールされていてもよい。ノード1100〜1n00は、同等の機能を有するため、以下では、ノード1100について説明し、他のノードについては詳細な図示及び説明を省略する。
【0019】
また、ライセンスの「使用状況」とは、例えば、当該ソフトウェアがノードにおいて実行されているか否かを示す情報であるか、実行にあたり当該ソフトウェアのライセンス形態(ノード単位やCPU単位等)に基づいたライセンス数を示す情報等である。
【0020】
ノード1100は、ライセンス管理装置の一例である。ノード1100は、各ノードにインストールされた上記所定のソフトウェアのライセンスを管理するものである。つまり、ノード1100〜1n00は、各ノードがお互いのライセンス管理をし合う関係である。ノード1100は、記憶部1110と、検出部1120と、取得部1130と、更新部1140と、反映部1150とを備える。
【0021】
記憶部1110は、ライセンス情報1111を記憶する。ライセンス情報1111は、全てのノードにおける上記所定のソフトウェアのライセンスの使用状況を含む。検出部1120は、他のノード、つまり、ノード1200〜1n00を検出する。取得部1130は、検出部1120により検出された他のノードが保持するライセンス情報を取得する。更新部1140は、取得部1130により取得されたライセンス情報に基づいて記憶部1110に記憶されたライセンス情報1111を更新する。反映部1150は、更新したライセンス情報を他のノードの全てへ反映させる。
【0022】
図2は、本発明の実施の形態1にかかるライセンス管理処理の流れを示すフローチャートである。尚、以下では、ノード1100の処理として説明するが、ノード1200〜1n00のそれぞれも当該ライセンス管理処理を実行する。
【0023】
まず、検出部1120は、当該ソフトウェアの実行開始時に、他のノードを検出する(S1)。次に、取得部1130は、検出された各ノードにおけるソフトウェアのライセンスの使用状況を含むライセンス情報を他のノードから取得する(S2)。そして、更新部1140は、取得したライセンス情報を自身のノードに保持されるライセンス情報1111と統合する(S3)。
【0024】
続いて、更新部1140は、統合したライセンス情報に基づいて、当該ソフトウェアの実行が継続可能か否かを判定する(S4)。そして、更新部1140は、判定結果が継続可能である場合、統合したライセンス情報のうち自身のノードにかかる使用状況を更新する(S5)。その後、反映部1150は、更新したライセンス情報を他のノードへ反映させる(S6)。一方、ステップS4において判定結果が継続不可能である場合、当該ライセンス管理処理を終了する。尚、この場合に、ステップS5及びS6を実行しても構わない。
【0025】
このように、ノード1100〜1n00は、他のノードとの間でライセンス情報の同期を取ることができる。そのため、ノード1100〜1n00のいずれが障害等により稼動が停止したとしても残りのノードにより、ライセンス情報の管理を維持することができる。また、ノード1100等と同等の機能を有するノードが追加された場合であっても、追加されたノードに対して既存のライセンス情報を同期することができる。よって、本発明の実施の形態1により、ノードの動的な増減に対応して、各ノードにインストールされているソフトウェアのライセンスを管理することができる。
【0026】
<発明の実施の形態2>
本発明の実施の形態2は、上述した実施の形態1の実施例の一つである。本発明の実施の形態2にかかる各ノードは、自身におけるソフトウェアの実行開始時に、他のノードとの間でライセンス情報の同期を取るものである。そして、各ノードは、自身におけるソフトウェアの実行開始時に、他のノードが保持するライセンス情報を全て取得し、当該取得したライセンス情報に基づいて自身が保持するライセンス情報を更新し、当該更新したライセンス情報を他のノードの全てへ反映させるものである。また、各ノードは、自身が保持するライセンス情報を更新する際に、ライセンス情報を取得できなかったノードにおけるライセンスの使用状況を未使用として更新し、ライセンス情報を取得できた全てのノードに対して当該更新したライセンス情報を他のノードの全てへ反映させる。さらに、各ノードは、取得したライセンス情報に基づいて、自身においてライセンスが使用可能か否かを判定する。
【0027】
図3は、本発明の実施の形態2にかかるライセンス管理システム100の構成を示すブロック図である。ライセンス管理システム100は、ネットワーク10を介してノード11とノード12とが接続されている。尚、ノードは3以上であっても構わない。ノード11は、本発明の実施の形態2にかかるライセンスの管理を行うソフトウェア110がインストールされている。ソフトウェア110は、使用に際して、ノード単位にライセンスが必要なソフトウェアである。ソフトウェア110は、ライセンス制御部111と、ノード管理部112と、通信制御部113と、ライセンス検査部114と、ライセンス管理テーブル115と、ライセンス確認アルゴリズム116とを含む。
【0028】
ライセンス制御部111は、ソフトウェア110全体の動作を制御する。具体的には、ライセンス制御部111は、ノード管理部112を用いてネットワーク10内に他のノードが存在するか否かを検索する。また、ライセンス制御部111は、ソフトウェア110が稼動中の全てのノードのライセンス情報を管理するためのライセンス管理テーブル115へのアクセスを行う。また、ライセンス制御部111は、ライセンス検査部114を用いて、現在、全ノードで稼働しているソフトウェアがライセンスの範囲内であるか、そして、さらに、ノード11においてソフトウェア110の実行を継続することがライセンスの範囲内であるかの確認を行う。
【0029】
ノード管理部112は、本発明の実施の形態2にかかるソフトウェアがインストール及び実行され、稼働中である他のノードを検索する。その際、ノード管理部112は、通信制御部通信制御部113を用いて、他のノードとの通信を行う。
【0030】
ライセンス管理テーブル115は、上述したライセンス情報1111の一例である。ライセンス管理テーブル115は、ネットワーク10内で稼動する、全てのノードのライセンス情報を管理するためのテーブルである。ライセンス制御部111は、ライセンス管理テーブル115を更新した後、他の全てのノードとの間でライセンス管理テーブル115の同期を行う。尚、ライセンス管理テーブル115は、ノード11内のメモリ(不図示)に領域が確保されているものである。
【0031】
図4は、本発明の実施の形態2にかかるライセンス管理テーブル115の例を示す図である。ライセンス管理テーブル115の構成要素は、ノードID、使用ライセンス数、更新日時等であり、これらが対応付けられている。ノードIDは、ノードを一意に識別するための識別情報である。使用ライセンス数は、各ノードで実行される本発明の実施の形態2にかかるソフトウェアのライセンスの使用状況の一例である。そして、使用ライセンス数は、ライセンス確認アルゴリズム116等が使用するライセンス数といえる。更新日時は、ノードID又は使用ライセンス数が更新(追加又は変更)された日時である。
【0032】
図3に戻り説明する。ライセンス検査部114は、ライセンス確認アルゴリズム116を用いて、ライセンス管理システム100に属する全てのノードにおける使用ライセンス数の合計値が正常であるか否かの検査を行う。ライセンス確認アルゴリズム116は、後述するライセンス検査処理が実装されたプログラムモジュールである。
【0033】
ノード12は、ノード11と同等である。ノード12が備えるライセンス制御部121、ノード管理部122、通信制御部123、ライセンス検査部124、ライセンス管理テーブル125及びライセンス確認アルゴリズム126は、ノード11が備える各構成要素に対応する。よって、詳細な説明は省略する。尚、ライセンス管理システム100は、3以上のノードを備えていても良い。
【0034】
以下、
図5〜
図8を用いて本発明の実施の形態2にかかるライセンス管理処理について説明する。前提条件として、ノード11のみが稼動状態であり、その他のノード12等は停止中とする。また、この時点では、ライセンス管理テーブル115内のノード11の使用ライセンス数は0であるものとする。
【0035】
図5は、本発明の実施の形態2にかかるライセンスチェック処理の流れを示すフローチャートである。まず、ノード11はライセンスチェック処理を開始する。このとき、ライセンス制御部111は、ノード管理部112に対してノード検出の実行を指示する。これに応じて、ノード管理部112は、ネットワーク10に接続された他のノードの検出処理を実行する(S101)。例えば、ノード管理部112は、IPアドレスの情報を元に、ノード11が接続しているネットワーク10と同じネットワークに接続している全てのノード12等に対して、ノードの検索を行う。
【0036】
そして、ライセンス制御部111は、ノードが検出されたか否かを判定する(S102)。ここでは前提の通り、ノード12は停止中のため、ノードが検出されないと判定され、ステップS104へ進む。尚、このとき、ライセンス制御部111は、ライセンス管理テーブル115を参照し、自ノード以外かつ検出されなかったノードIDが含まれている場合、当該ノードID(ここでは、ノード12)についてのライセンス情報を削除するか、使用ライセンス数を“0”に更新してもよい。つまり、ライセンス制御部111は、検出されなかったノードにおけるライセンスの使用状況を未使用として更新することができる。その後、ライセンス検査部114は、ライセンス確認アルゴリズム116に基づき、ライセンス検査を行う(S104)。
【0037】
図8は、本発明の実施の形態2にかかるライセンス検査処理の流れを示すフローチャートである。
図8は、簡易なライセンス確認アルゴリズム116として、使用ライセンスの総和と、使用可能なライセンス数の最大値とを比較するアルゴリズムを採用するものとする。前提として、ノード11内のメモリ(不図示)に変数として使用ライセンス総数の領域が確保され、最大ライセンス数が予め与えられているものとする。尚、上述の通りこの時点では、ライセンス管理テーブル115内のノード11の使用ライセンス数は0であるものとする。
【0038】
まず、ライセンス検査部114は、使用ライセンス総数を0に初期化する(S401)。次に、ライセンス検査部114は、ライセンス管理テーブル115のノードIDのうち未選択のものを選択する(S402)。そして、ライセンス検査部114は、ライセンス管理テーブル115の選択されたノードIDに対応付けられた使用ライセンス数を使用ライセンス総数に加算する(S403)。そして、ライセンス検査部114は、未選択のノードIDがなくなるまでステップS402及びS403を繰り返す。
【0039】
そして、未選択のノードIDがなくなった後、ライセンス検査部114は、使用ライセンス総数が最大ライセンス数より小さいか否かを判定する(S404)。小さいと判定した場合、ライセンス検査部114は、ライセンス数が正常な範囲であるとしてライセンス制御部111へ通知する(S405)。また、ステップS404において使用ライセンス総数が最大ライセンス数以上である場合、ライセンス検査部114は、ライセンス数が異常であるとして、ライセンス制御部111へ通知する(S406)。すなわち、この状態からさらにノード11がライセンスを使用できないことを意味する。
【0040】
図5に戻り説明を続ける。ステップS104のライセンス検査処理の後、ライセンス制御部111は、ライセンス検査処理の結果を判定する(S105)。そして、結果が正常と判定した場合、ライセンス制御部111は、ライセンス管理テーブル115の自身のノードIDについて、使用ライセンス数を“1”として更新する(S106)。
【0041】
そして、ライセンス制御部111は、ノード11以外の他のノードが検出されたか否かを判定する(S107)。例えば、ステップS102の結果を用いると良い。ここでは前提の通り、ノード12は停止中のため、ノードが検出されないと判定され、当該ライセンスチェック処理を終了する。
【0042】
また、ステップS105において、結果が異常と判定した場合、ライセンス制御部111は、使用ライセンス数の上限を超えているためソフトウェア110の実行を継続できない旨等をノード11内のログ等に記録し(S109)、当該ライセンスチェック処理を終了する。
【0043】
次に、ノード11が稼動状態で、ノード12のライセンスチェック処理を行う際の動作について説明する。ノード12についても
図5に基づいてライセンスチェック処理が実行される。ここで、ステップS102において、ノード11は稼動中のため、ノードが検出さたと判定され、ステップS103へ進む。
【0044】
ライセンス制御部111は、他のノードのライセンス管理テーブルとの同期処理を行う(S103)。
図7は、本発明の実施の形態2にかかるライセンス管理テーブルの同期処理の流れを説明するためのシーケンス図である。まず、ノード12は、ノード11に対してライセンス管理テーブル取得要求を送信する(S301)。そして、ノード11は、ステップS301に応じてノード11のライセンス管理テーブル115に格納されたライセンス情報を、ノード12へ返信する(S302)。つまり、ノード12は、他のノードのライセンス情報を取得する。
【0045】
そして、ノード12は、取得したノード11のライセンス情報を、ノード12のライセンス管理テーブル125にマージする(S303)。続いて、ノード12は、ノード12のライセンス管理テーブル125を更新する(S304)。その後、ノード12は、ノード11に対してライセンス管理テーブルの更新要求を送信する(S305)。そして、ノード11は、ステップS305に応じてノード11のライセンス管理テーブル115を更新する(S306)。つまり、ノード12のライセンス管理テーブル125に格納されたライセンス情報が他のノードであるノード11のライセンス管理テーブル115に反映される。その後、ノード11は、ノード12へライセンス管理テーブル115の更新完了の旨を通知する(S307)。
【0046】
図6は、本発明の実施の形態2にかかるライセンス管理テーブルの同期処理の流れを示すフローチャートである。
図6は、
図7のステップS303の処理を詳細化したものである。
【0047】
まず、ライセンス制御部121は、
図7のステップ302等により取得した他のノードのライセンス管理テーブルに含まれる未選択のノードIDを選択する(S201)。次に、ライセンス制御部121は、選択されたノードIDが自ノードであるノード12のライセンス管理テーブル125に含まれるか否かを判定する(S202)。含まれると判定した場合、ライセンス制御部121は、当該選択されたノードIDについて、ライセンス管理テーブル125における更新日時よりも、他のノードのライセンス管理テーブルにおける更新日時の方が新しいか否かを判定する(S203)。
【0048】
他のノードのライセンス管理テーブルにおける更新日時の方が新しいと判定した場合、ライセンス制御部121は、当該他のノードのライセンス管理テーブルの当該選択されたノードIDに対応付けられた使用ライセンス数により、ライセンス管理テーブル125を更新する(S204)。一方、ステップS203において、他のノードのライセンス管理テーブルにおける更新日時の方が古い(又は等しい)と判定した場合、再度、ステップS201へ進み、未選択のノードIDがなくなるまで、ステップS201〜S205を繰り返す。
【0049】
また、ステップS202において、選択されたノードIDが自ノードであるノード12のライセンス管理テーブル125に含まれないと判定した場合、ライセンス制御部121は、当該他のノードのライセンス管理テーブルの当該選択されたノードID及び使用ライセンス数を、ライセンス管理テーブル125に追加する(S205)。この後、再度、ステップS201へ進み、未選択のノードIDがなくなるまで、ステップS201〜S205を繰り返す。
【0050】
そして、ステップS201において、取得済みの全ての他のノードのライセンス管理テーブルにおけるノードIDが全て選択済みとなった場合、当該同期処理を終了する。
【0051】
図5に戻り説明を続ける。ステップS103の後、ライセンス制御部121は、同期後のライセンス管理テーブル125に基づいて、ライセンス検査を行う(S104)。ステップS104のライセンス検査処理の後、ライセンス制御部121は、ライセンス検査処理の結果を判定する(S105)。そして、結果が正常と判定した場合、ライセンス制御部121は、ライセンス管理テーブル125の自身のノードIDについて、使用ライセンス数を“1”として更新する(S106)。
【0052】
そして、ライセンス制御部121は、ノード12以外の他のノードが検出されたか否かを判定する(S107)。ステップS107においても、ステップS102と同様にノードが検出さたと判定され、ステップS108へ進む。そして、ライセンス制御部121は、検出された他のノードに対して、ライセンス管理テーブル125に格納されたライセンス情報を送信して、反映させる(S108)。これは、上述した
図7のステップS305〜S307の処理に対応する。
【0053】
このように、本実施の形態2にかかるソフトウェアを使用する情報システムにおいて、当該ソフトウェアを実行するノードの増減が発生した場合、最新のライセンスの使用状況が全てのノードにリアルタイムに反映される。そのため、各ノードがシステム全体のライセンス情報を保持しているため、ライセンス管理用のノード(ライセンス管理専用のサーバ等)を別途用意する必要がない。また、各ノードがシステム全体のライセンス情報を保持しているため、一部のノードに障害が発生した場合においてもライセンス情報に起因するシステム障害が発生しない。
【0054】
また、ノードが3以上あり、そのうち一部のノードが停止している場合、ステップS101においては、複数の他のノードの一部しか検出されない。このとき、稼働中の他のノードから取得されるライセンス情報には、当時稼動中であり現在停止中である他のノードについては、使用ライセンス数が“1”となっている可能性がある。その場合、そのままライセンス情報をマージすると、本来、ライセンスを使用していない停止中の他のノードの分まで使用ライセンス総数として加算されてしまう。ここで、本実施の形態2では、自ノードのライセンス情報に含まれるノードIDのうち、検出されなかったノードIDについては、当該ノードIDのレコード自体をライセンス管理テーブルから削除するとよい。これにより、ライセンス管理の精度を向上させることができる。
【0055】
<発明の実施の形態3>
本発明の実施の形態3は、上述した実施の形態2の変形例である。実施の形態2との違いとして、一つのノードには、ライセンス管理プログラムモジュールを含むソフトウェアが2以上インストールされており、ライセンス制御部、ノード管理部、通信制御部、ライセンス検査部及びライセンス管理テーブルが各ソフトウェアの外部に配置されている点である。
【0056】
また、本発明の実施の形態3にかかるライセンス確認アルゴリズムは、ソフトウェアのライセンス形態に応じて異なるアルゴリズムを使用したものである。また、アルゴリズムに応じてライセンス管理テーブルの使用ライセンス数を変更しても問題ない。
【0057】
言い換えると、本発明の実施の形態3では、複数のノードに所定のソフトウェア群がそれぞれにインストールされたものである。つまり、2以上のソフトウェアの集合であるソフトウェア群が各ノードにインストールされたものである。そして、各ノードは、全てのノードにおける前記ソフトウェア群に含まれる各ソフトウェアのライセンスの使用数が各ソフトウェアのライセンス形態に応じて算出されたライセンス情報を保持し、他のノードとの間で前記ライセンス情報の同期を取る。
【0058】
図9は、本発明の実施の形態3にかかるライセンス管理システム200の構成を示すブロック図である。ライセンス管理システム200は、ネットワーク20を介してノード21とノード22とが接続されている。ノード21は、ライセンス制御部211と、ノード管理部212と、通信制御部213と、ライセンス検査部214と、ライセンス管理テーブル215と、ソフトウェア2101及び2102とを含む。つまり、ノード21は、ソフトウェア2101及び2102がインストールされている。また、ライセンス制御部211と、ノード管理部212と、通信制御部213と、ライセンス検査部214とは他のソフトウェアとして実現されるか、ハードウェアとして実現しても構わない。ライセンス管理テーブル215は、ノード21内のメモリ(不図示)に領域が確保されているものである。
【0059】
ソフトウェア2101は、ライセンス確認アルゴリズム216を含み、ノード22にインストールされたソフトウェア2201と同等の機能であるものとする。そして、ソフトウェア2101及び2201は、例えば、ノード単位で使用ライセンス数を加算するライセンス形態であるものとする。ここで、ライセンス確認アルゴリズム216(及び226)は、ソフトウェア2101及びソフトウェア2201のライセンス検査を行うためのソフトウェアである。
【0060】
また、ソフトウェア2102は、ライセンス確認アルゴリズム217を含み、ノード22にインストールされたソフトウェア2202と同等の機能であるものとする。そして、ソフトウェア2102及び2202は、例えば、CPU単位で使用ライセンス数を加算するライセンス形態であるものとする。ここで、ライセンス確認アルゴリズム217(及び227)は、ソフトウェア2102及びソフトウェア2202のライセンス検査を行うためのソフトウェアである。
【0061】
ここで、ライセンス確認アルゴリズム216及び217のそれぞれは、ライセンス検査部214が提供するAPI(Application Programming Interface)に準拠するものである。これにより、ライセンス検査部214は、ライセンス確認アルゴリズム216及び217を用いてそれぞれを含むソフトウェア2101及び2102のライセンス検査処理を実現できる。また、ライセンス制御部211又はライセンス検査部214は、ソフトウェア2101及び2102のライセンス検査処理の結果を、ライセンス管理テーブル215に格納する。
【0062】
ノード22は、ノード21と同等である。ノード22が備えるライセンス制御部221、ノード管理部222、通信制御部223、ライセンス検査部224及びライセンス管理テーブル225は、ノード21が備える各構成要素に対応する。よって、詳細な説明は省略する。尚、ライセンス管理システム200は、3以上のノードを備えていても良い。
【0063】
図10は、本発明の実施の形態3にかかるライセンス管理テーブルの例を示す図である。尚、ここでは、3つ目のノードとして2以上のCPUを有するノード23(不図示)を含むものとする。そして、“ソフトウェアA“は、ライセンスタイプ(ライセンス形態)がノード単位であり、ソフトウェア2101等に相当するものとし、”ソフトウェアB“はライセンスタイプがCPU単位であり、ソフトウェア2102等に相当するものとする。ここで、“ソフトウェアA“は、ノード21及び23のそれぞれで使用ライセンス数”1“を使用していることを示す。また、”ソフトウェアB“は、ノード21及び22のそれぞれで使用ライセンス数”1“を使用しており、ノード23では2つのCPUを用いて稼動しているため、使用ライセンス数”2“を使用していることを示す。
【0064】
このように、本発明の実施の形態3により、1ノード当たり複数の種類のソフトウェアの使用ライセンス数を管理することができる。さらに、異なるライセンス形態に応じて使用ライセンス数を算出することができる。これは、例えば、ライセンス確認アルゴリズム216とライセンス確認アルゴリズム217とで、ライセンス検査処理のアルゴリズムをライセンス形態に応じたものへカスタマイズすることで実現できる。これにより、柔軟にライセンス数を管理できる。
【0065】
<発明の実施の形態4>
本発明の実施の形態4は、上述した実施の形態2の応用例である。例えば、サービス提供事業者が上述した実施の形態2を利用するために、エンドユーザの使用状況に応じた課金を行うべく、課金システムと連携した場合を説明する。実施の形態2との違いとして、ソフトウェアライセンスの課金システムと連携したものといえる。すなわち、更新したライセンス情報を他のノードの全てへ反映させた後に、当該更新したライセンス情報を外部システムへ送信するものである。これにより、同期を取った最新の正確なライセンス情報をリアルタイムに外部システムでの処理に用いることができ、幅広い応用例を実現できる。
【0066】
図11は、本発明の実施の形態4にかかるライセンス管理システム300の構成を示すブロック図である。ライセンス管理システム300は、ネットワーク30を介してああ1
とノード32と課金システム33とが接続されている。尚、ノード31及び32の各構成要素は、それぞれ、
図3のノード11及び12等の各構成要素に対応する。よって、詳細な説明は省略する。尚、ライセンス管理システム300は、3以上のノードを備えていても良い。
【0067】
課金システム33は、ソフトウェア310及び320の使用ライセンス数を所定の間隔で収集し、記録するものである。課金システム33は、課金管理部331と、通信制御部332と、使用状況管理テーブル333とを備える。課金管理部331は、課金システム33の全体の処理を制御する。通信制御部332は、ネットワーク30を介したノード31及び32との通信を制御する。使用状況管理テーブル333は、ノード31のライセンス管理テーブル315及びノード32のライセンス管理テーブル325から定期的に収集されたライセンス情報が登録されたものである。
【0068】
図12は、本発明の実施の形態4にかかるライセンスチェック処理の流れを示すフローチャートである。ステップS501からS509は、上述した
図5のステップS101〜S109と同等であるため、説明を省略する。
図12では他ノードへのライセンス管理テーブルの更新が完了後に、さらに、ライセンス制御部311は、課金システム33へ自ノードのライセンス管理テーブルの更新を通知する(S510)。これにより、最新のノード31及び32等におけるライセンスの使用状況を使用状況管理テーブル333でリアルタイムに管理することができる。
【0069】
図13は、本発明の実施の形態4にかかる使用状況管理テーブル333の例を示す図である。例えば、課金管理部331は、1時間ごとにノード31又は32からライセンス管理テーブル315又は325に格納された使用ライセンス数を取得して、その合計値を使用者及びライセンス確認時刻と対応付けて使用状況管理テーブル333に格納する。そして、課金管理部331は、任意のタイミングで任意の期間の使用ライセンス数を集計する。
図13では、所定期間内で12ライセンス分が使用されたことを示す。このように、使用状況に応じたソフトウェアライセンスの課金を行うこともできる。そのため、仮想マシン等におけるライセンスの使用状況を正確、リアルタイム、かつ、簡易に把握することが可能となり、実態に即した課金を実現できる。
【0070】
<その他の発明の実施の形態>
尚、上述した各実施の形態のノード管理部は、ネットワーク内に存在する他ノードの検索のために、DHCP(Dynamic Host Configuration Protocol)サーバからの情報を用いてもよい。
【0071】
また、本発明の各実施の形態は、クラウドコンピューティング基盤のように、ノードが動的に増減する環境におけるライセンス管理の分野に適用可能である。
【0072】
本発明の各実施の形態は、複数ノード間で協調動作するライセンス管理方法ということもでき、ライセンス管理用のシステムを用意せず、システムを構成する全てのノードでライセンス管理情報を保持することで、リソースの効率化、耐障害性を向上させるものである。言い換えると、複数のノードにインストールされているソフトウェアのライセンス情報を、ノード間で相互に共有することで、ノードの増減に伴うシステム全体の使用ライセンス情報を動的に管理するものである。
【0073】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。
【0074】
非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、DVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disc)、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、コンピュータプログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。