(57)【要約】【課題】ノードの動的な増減に対応して、各ノードにインストールされているソフトウェアのライセンスを管理すること。【解決手段】本発明にかかるライセンス管理システム１０００は、所定のソフトウェアがそれぞれにインストールされた複数のノード１１００〜１ｎ００を備えるものである。複数のノード１１００〜１ｎ００のそれぞれは、全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を保持し、他のノードとの間でライセンス情報の同期を取る。【選択図】図１
2015069257.tif 000002
【特許請求の範囲】
【請求項１】
所定のソフトウェアがそれぞれにインストールされた複数のノードを備え、
前記複数のノードのそれぞれは、
全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を保持し、
他のノードとの間で前記ライセンス情報の同期を取る
ライセンス管理システム。
【請求項２】
前記複数のノードのそれぞれは、
自身における前記ソフトウェアの実行開始時に、前記他のノードとの間で前記ライセンス情報の同期を取る
請求項１に記載のライセンス管理システム。
【請求項３】
前記複数のノードのそれぞれは、
自身における前記ソフトウェアの実行開始時に、前記他のノードが保持する前記ライセンス情報を全て取得し、当該取得したライセンス情報に基づいて自身が保持するライセンス情報を更新し、当該更新したライセンス情報を前記他のノードの全てへ反映させる
請求項２に記載のライセンス管理システム。
【請求項４】
前記複数のノードのそれぞれは、
前記自身が保持するライセンス情報を更新する際に、前記ライセンス情報を取得できなかったノードにおける前記ライセンスの使用状況を未使用として更新し、
前記ライセンス情報を取得できた全てのノードに対して当該更新したライセンス情報を前記他のノードの全てへ反映させる
請求項３に記載のライセンス管理システム。
【請求項５】
前記複数のノードのそれぞれは、
前記取得したライセンス情報に基づいて、自身において前記ライセンスが使用可能か否かを判定する
請求項３又は４に記載のライセンス管理システム。
【請求項６】
前記更新したライセンス情報を前記他のノードの全てへ反映させた後に、当該更新したライセンス情報を外部システムへ送信する
請求項３乃至５のいずれか１項に記載のライセンス管理システム。
【請求項７】
所定のソフトウェア群がそれぞれにインストールされた複数のノードを備え、
前記複数のノードのそれぞれは、
全てのノードにおける前記ソフトウェア群に含まれる各ソフトウェアのライセンスの使用数が各ソフトウェアのライセンス形態に応じて算出されたライセンス情報を保持し、
他のノードとの間で前記ライセンス情報の同期を取る
ライセンス管理システム。
【請求項８】
複数のノードのそれぞれにインストールされた所定のソフトウェアのライセンスを管理するライセンス管理装置であって、
前記ライセンス管理装置は、前記複数のノードの一つであり、
全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を記憶する記憶部と、
他のノードを検出する検出部と、
前記検出された他のノードが保持する前記ライセンス情報を取得する取得部と、
前記取得したライセンス情報に基づいて前記記憶部に記憶されたライセンス情報を更新する更新部と、
前記更新したライセンス情報を前記他のノードの全てへ反映させる反映部と、
を備えるライセンス管理装置。
【請求項９】
所定のソフトウェアがそれぞれにインストールされた複数のノードを用いた当該ソフトウェアのライセンス管理方法であって、
前記複数のノードのそれぞれが、
前記ソフトウェアの実行開始時に、各ノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を他のノードから取得し、
前記取得したライセンス情報に基づいて自身が保持する前記ライセンス情報を更新し、
前記更新したライセンス情報を前記他のノードへ反映させる
ライセンス管理方法。
【請求項１０】
複数のノードのそれぞれにインストールされ、当該複数のノードの一つであるコンピュータで実行されるライセンス管理プログラムであって、
実行開始時に、他のノードを検出する処理と、
前記検出された他のノードに保持され、全てのノードにおけるソフトウェアのライセンスの使用状況を含むライセンス情報を、当該他のノードから取得する処理と、
前記取得したライセンス情報を自身のノードに保持されるライセンス情報と統合する処理と、
前記統合したライセンス情報に基づいて、前記実行が継続可能か否かを判定する処理と、
前記判定結果に応じて前記統合したライセンス情報のうち前記自身のノードにかかる前記使用状況を更新する処理と、
前記更新したライセンス情報を前記他のノードへ反映させる処理と、
を前記コンピュータに実行させるライセンス管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライセンス管理システム、装置、方法及びプログラムに関し、特に、複数のノードにインストールされているソフトウェアのライセンスを管理するためのライセンス管理システム、装置、方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ ａ Ｓｅｒｖｉｃｅ）やＰａａＳ（Ｐｌａｔｆｏｒｍ as ａ Ｓｅｒｖｉｃｅ）と呼ばれるクラウドコンピューティングを用いたソフトウェアの提供形態が広まっている。これらのサービスプロバイダは、通常、データセンターで仮想化技術を使用してシステムを構築することで、サービスを提供している。仮想化技術を用いることで、ユーザ数やデータ量に応じて仮想マシンを増減することで負荷の変動を吸収している。
【０００３】
ところが、サービスプロバイダが使用しているソフトウェアのライセンス方式はノード（実ハードウェアや仮想マシン）単位や、ＣＰＵ単位に課金されるものが多い。一方で、仮想化技術では、サービスの提供単位である仮想マシンを動的に増減することができる。また、ＳａａＳ基盤としては複数のノードからなるシステムにおいて、システム全体のライセンス情報を管理する必要がある。このような場合には、ライセンス管理サーバが必要となる。また、Ｒｅｄ Ｈａｔ ＣｏｒｐｏｒａｔｉｏｎのＲｅｄ Ｈａｔ Ｎｅｔｗｏｒｋのように、サービスプロバイダ外部のシステムを使用してライセンス管理するサービスも存在する。
【０００４】
例えば、特許文献１には、仮想マシン上で稼働するソフトウェアについて、ライセンス管理サーバを用いてライセンスを管理するライセンスチェックシステムに技術が開示されている。特許文献１にかかるライセンスチェックシステムは、複数の物理サーバ上で稼働する仮想マシンおよび各仮想マシン上で稼働するソフトウェアからなるシステム環境であるリソースプールにおいてソフトウェア毎に実際に消費されているライセンスの数を把握するものである。当該ライセンスチェックシステムは、リソースプールにおいて稼働中のシステムの構成情報を記録して保持する構成管理部と、構成管理部から構成情報を取得し、リソースプールにおいて稼働中のシステム環境で消費されている各ソフトウェアのライセンス数を、各ソフトウェアのライセンス体系の特性毎にカテゴライズして予め定義されたライセンス計算ロジックに従って算出し、ライセンス状況ＤＢに記録するライセンスチェック部とを有する。
【０００５】
さらに、特許文献２には、伝送ネットワーク内の複数のノードのうち一つをマスタノードとし、マスタノードとライセンス管理サーバに相当する監視装置とを用いて、複数のノードのライセンスを管理する方法が開示されている。特許文献２では、マスタノードが各ノードに対してライセンス状況を確認し、マスタノードと監視装置の間でライセンス数のやり取りを行い、管理するものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−０３３０９６号公報
【特許文献２】特開２００６−１５５３８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１では、複数の仮想マシンを使用したクラウドコンピューティング基盤においてライセンス管理を行う場合、不定なタイミングで増減する仮想マシンにインストールされているソフトウェアのライセンスを管理するために、ライセンス管理サーバが必要であった。また、特許文献２では、監視装置と各ノードとを仲介するためにマスタノードを用いる必要があった。しかしながら、特許文献１又は２には、ライセンス管理サーバ又はマスタノードに異常が発生した場合に、システム全体のライセンス情報に不備が生じ、システム全体に影響があるという問題点がある。
【０００８】
本発明は、このような問題点を解決するためになされたものであり、ノードの動的な増減に対応して、各ノードにインストールされているソフトウェアのライセンスを管理するためのライセンス管理システム、装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の態様にかかるライセンス管理システムは、
所定のソフトウェアがそれぞれにインストールされた複数のノードを備え、
前記複数のノードのそれぞれは、
全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を保持し、
他のノードとの間で前記ライセンス情報の同期を取る。
【００１０】
本発明の第２の態様にかかるライセンス管理システムは、
所定のソフトウェア群がそれぞれにインストールされた複数のノードを備え、
前記複数のノードのそれぞれは、
全てのノードにおける前記ソフトウェア群に含まれる各ソフトウェアのライセンスの使用数が各ソフトウェアのライセンス形態に応じて算出されたライセンス情報を保持し、
他のノードとの間で前記ライセンス情報の同期を取る。
【００１１】
本発明の第３の態様にかかるライセンス管理装置は、
複数のノードのそれぞれにインストールされた所定のソフトウェアのライセンスを管理するライセンス管理装置であって、
前記ライセンス管理装置は、前記複数のノードの一つであり、
全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を記憶する記憶部と、
他のノードを検出する検出部と、
前記検出された他のノードが保持する前記ライセンス情報を取得する取得部と、
前記取得したライセンス情報に基づいて前記記憶部に記憶されたライセンス情報を更新する更新部と、
前記更新したライセンス情報を前記他のノードの全てへ反映させる反映部と、
を備える。
【００１２】
本発明の第４の態様にかかるライセンス管理方法は、
所定のソフトウェアがそれぞれにインストールされた複数のノードを用いた当該ソフトウェアのライセンス管理方法であって、
前記複数のノードのそれぞれが、
前記ソフトウェアの実行開始時に、各ノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を他のノードから取得し、
前記取得したライセンス情報に基づいて自身が保持する前記ライセンス情報を更新し、
前記更新したライセンス情報を前記他のノードへ反映させる。
【００１３】
本発明の第５の態様にかかるライセンス管理プログラムは、
複数のノードのそれぞれにインストールされ、当該複数のノードの一つであるコンピュータで実行されるライセンス管理プログラムであって、
実行開始時に、他のノードを検出する処理と、
前記検出された他のノードに保持され、全てのノードにおけるソフトウェアのライセンスの使用状況を含むライセンス情報を、当該他のノードから取得する処理と、
前記取得したライセンス情報を自身のノードに保持されるライセンス情報と統合する処理と、
前記統合したライセンス情報に基づいて、前記実行が継続可能か否かを判定する処理と、
前記判定結果に応じて前記統合したライセンス情報のうち前記自身のノードにかかる前記使用状況を更新する処理と、
前記更新したライセンス情報を前記他のノードへ反映させる処理と、
を前記コンピュータに実行させる。
【発明の効果】
【００１４】
本発明により、ノードの動的な増減に対応して、各ノードにインストールされているソフトウェアのライセンスを管理するためのライセンス管理システム、装置、方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１にかかるライセンス管理システムの構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるライセンス管理処理の流れを示すフローチャートである。
【図３】本発明の実施の形態２にかかるライセンス管理システムの構成を示すブロック図である。
【図４】本発明の実施の形態２にかかるライセンス管理テーブルの例を示す図である。
【図５】本発明の実施の形態２にかかるライセンスチェック処理の流れを示すフローチャートである。
【図６】本発明の実施の形態２にかかるライセンス管理テーブルの同期処理の流れを示すフローチャートである。
【図７】本発明の実施の形態２にかかるライセンス管理テーブルの同期処理の流れを説明するためのシーケンス図である。
【図８】本発明の実施の形態２にかかるライセンス検査処理の流れを示すフローチャートである。
【図９】本発明の実施の形態３にかかるライセンス管理システムの構成を示すブロック図である。
【図１０】本発明の実施の形態３にかかるライセンス管理テーブルの例を示す図である。
【図１１】本発明の実施の形態４にかかるライセンス管理システムの構成を示すブロック図である。
【図１２】本発明の実施の形態４にかかるライセンスチェック処理の流れを示すフローチャートである。
【図１３】本発明の実施の形態４にかかる使用状況管理テーブルの例を示す図である。
【発明を実施するための形態】
【００１６】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１７】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかるライセンス管理システム１０００の構成を示すブロック図である。ライセンス管理システム１０００は、複数のノード１１００、１２００、・・・１ｎ００（ｎは、自然数）を備える。ノード１１００〜１ｎ００のそれぞれには、所定のソフトウェアがインストールされている。つまり、ノード１１００〜１ｎ００には、同じ種類のコンピュータプログラムがインストールされている。当該ソフトウェアは、自身のソフトウェアのライセンスの管理を行うプログラムモジュールが含まれたものである。本発明の実施の形態１にかかる所定のソフトウェアは、例えば、任意の業務ソフトウェアに内包されるものであってもよい。つまり、この場合、実質的に当該業務ソフトウェアのライセンス管理を行うものとなる。そして、ノード１１００〜１ｎ００のそれぞれは、全てのノードにおける前記ソフトウェアのライセンスの使用状況を含むライセンス情報を保持し、他のノードとの間でライセンス情報の同期を取るものである。
【００１８】
ここで、「ノード」とは、ソフトウェアを実行するハードウェアや、仮想マシン等に相当するものであり、典型的には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作単位に対応するものである。例えば、複数のノードは、分散して並列実行を行う処理単位であってもよい。また、ライセンス管理システム１００は、複数の仮想マシンを使用したクラウドコンピューティング基盤により実現してもよい。尚、ノード１１００〜１ｎ００は、少なくとも２以上であればよい。また、ノード１１００〜１ｎ００のそれぞれには、２以上のソフトウェア、つまり、ソフトウェア群がインストールされていてもよい。ノード１１００〜１ｎ００は、同等の機能を有するため、以下では、ノード１１００について説明し、他のノードについては詳細な図示及び説明を省略する。
【００１９】
また、ライセンスの「使用状況」とは、例えば、当該ソフトウェアがノードにおいて実行されているか否かを示す情報であるか、実行にあたり当該ソフトウェアのライセンス形態（ノード単位やＣＰＵ単位等）に基づいたライセンス数を示す情報等である。
【００２０】
ノード１１００は、ライセンス管理装置の一例である。ノード１１００は、各ノードにインストールされた上記所定のソフトウェアのライセンスを管理するものである。つまり、ノード１１００〜１ｎ００は、各ノードがお互いのライセンス管理をし合う関係である。ノード１１００は、記憶部１１１０と、検出部１１２０と、取得部１１３０と、更新部１１４０と、反映部１１５０とを備える。
【００２１】
記憶部１１１０は、ライセンス情報１１１１を記憶する。ライセンス情報１１１１は、全てのノードにおける上記所定のソフトウェアのライセンスの使用状況を含む。検出部１１２０は、他のノード、つまり、ノード１２００〜１ｎ００を検出する。取得部１１３０は、検出部１１２０により検出された他のノードが保持するライセンス情報を取得する。更新部１１４０は、取得部１１３０により取得されたライセンス情報に基づいて記憶部１１１０に記憶されたライセンス情報１１１１を更新する。反映部１１５０は、更新したライセンス情報を他のノードの全てへ反映させる。
【００２２】
図２は、本発明の実施の形態１にかかるライセンス管理処理の流れを示すフローチャートである。尚、以下では、ノード１１００の処理として説明するが、ノード１２００〜１ｎ００のそれぞれも当該ライセンス管理処理を実行する。
【００２３】
まず、検出部１１２０は、当該ソフトウェアの実行開始時に、他のノードを検出する（Ｓ１）。次に、取得部１１３０は、検出された各ノードにおけるソフトウェアのライセンスの使用状況を含むライセンス情報を他のノードから取得する（Ｓ２）。そして、更新部１１４０は、取得したライセンス情報を自身のノードに保持されるライセンス情報１１１１と統合する（Ｓ３）。
【００２４】
続いて、更新部１１４０は、統合したライセンス情報に基づいて、当該ソフトウェアの実行が継続可能か否かを判定する（Ｓ４）。そして、更新部１１４０は、判定結果が継続可能である場合、統合したライセンス情報のうち自身のノードにかかる使用状況を更新する（Ｓ５）。その後、反映部１１５０は、更新したライセンス情報を他のノードへ反映させる（Ｓ６）。一方、ステップＳ４において判定結果が継続不可能である場合、当該ライセンス管理処理を終了する。尚、この場合に、ステップＳ５及びＳ６を実行しても構わない。
【００２５】
このように、ノード１１００〜１ｎ００は、他のノードとの間でライセンス情報の同期を取ることができる。そのため、ノード１１００〜１ｎ００のいずれが障害等により稼動が停止したとしても残りのノードにより、ライセンス情報の管理を維持することができる。また、ノード１１００等と同等の機能を有するノードが追加された場合であっても、追加されたノードに対して既存のライセンス情報を同期することができる。よって、本発明の実施の形態１により、ノードの動的な増減に対応して、各ノードにインストールされているソフトウェアのライセンスを管理することができる。
【００２６】
＜発明の実施の形態２＞
本発明の実施の形態２は、上述した実施の形態１の実施例の一つである。本発明の実施の形態２にかかる各ノードは、自身におけるソフトウェアの実行開始時に、他のノードとの間でライセンス情報の同期を取るものである。そして、各ノードは、自身におけるソフトウェアの実行開始時に、他のノードが保持するライセンス情報を全て取得し、当該取得したライセンス情報に基づいて自身が保持するライセンス情報を更新し、当該更新したライセンス情報を他のノードの全てへ反映させるものである。また、各ノードは、自身が保持するライセンス情報を更新する際に、ライセンス情報を取得できなかったノードにおけるライセンスの使用状況を未使用として更新し、ライセンス情報を取得できた全てのノードに対して当該更新したライセンス情報を他のノードの全てへ反映させる。さらに、各ノードは、取得したライセンス情報に基づいて、自身においてライセンスが使用可能か否かを判定する。
【００２７】
図３は、本発明の実施の形態２にかかるライセンス管理システム１００の構成を示すブロック図である。ライセンス管理システム１００は、ネットワーク１０を介してノード１１とノード１２とが接続されている。尚、ノードは３以上であっても構わない。ノード１１は、本発明の実施の形態２にかかるライセンスの管理を行うソフトウェア１１０がインストールされている。ソフトウェア１１０は、使用に際して、ノード単位にライセンスが必要なソフトウェアである。ソフトウェア１１０は、ライセンス制御部１１１と、ノード管理部１１２と、通信制御部１１３と、ライセンス検査部１１４と、ライセンス管理テーブル１１５と、ライセンス確認アルゴリズム１１６とを含む。
【００２８】
ライセンス制御部１１１は、ソフトウェア１１０全体の動作を制御する。具体的には、ライセンス制御部１１１は、ノード管理部１１２を用いてネットワーク１０内に他のノードが存在するか否かを検索する。また、ライセンス制御部１１１は、ソフトウェア１１０が稼動中の全てのノードのライセンス情報を管理するためのライセンス管理テーブル１１５へのアクセスを行う。また、ライセンス制御部１１１は、ライセンス検査部１１４を用いて、現在、全ノードで稼働しているソフトウェアがライセンスの範囲内であるか、そして、さらに、ノード１１においてソフトウェア１１０の実行を継続することがライセンスの範囲内であるかの確認を行う。
【００２９】
ノード管理部１１２は、本発明の実施の形態２にかかるソフトウェアがインストール及び実行され、稼働中である他のノードを検索する。その際、ノード管理部１１２は、通信制御部通信制御部１１３を用いて、他のノードとの通信を行う。
【００３０】
ライセンス管理テーブル１１５は、上述したライセンス情報１１１１の一例である。ライセンス管理テーブル１１５は、ネットワーク１０内で稼動する、全てのノードのライセンス情報を管理するためのテーブルである。ライセンス制御部１１１は、ライセンス管理テーブル１１５を更新した後、他の全てのノードとの間でライセンス管理テーブル１１５の同期を行う。尚、ライセンス管理テーブル１１５は、ノード１１内のメモリ（不図示）に領域が確保されているものである。
【００３１】
図４は、本発明の実施の形態２にかかるライセンス管理テーブル１１５の例を示す図である。ライセンス管理テーブル１１５の構成要素は、ノードＩＤ、使用ライセンス数、更新日時等であり、これらが対応付けられている。ノードＩＤは、ノードを一意に識別するための識別情報である。使用ライセンス数は、各ノードで実行される本発明の実施の形態２にかかるソフトウェアのライセンスの使用状況の一例である。そして、使用ライセンス数は、ライセンス確認アルゴリズム１１６等が使用するライセンス数といえる。更新日時は、ノードＩＤ又は使用ライセンス数が更新（追加又は変更）された日時である。
【００３２】
図３に戻り説明する。ライセンス検査部１１４は、ライセンス確認アルゴリズム１１６を用いて、ライセンス管理システム１００に属する全てのノードにおける使用ライセンス数の合計値が正常であるか否かの検査を行う。ライセンス確認アルゴリズム１１６は、後述するライセンス検査処理が実装されたプログラムモジュールである。
【００３３】
ノード１２は、ノード１１と同等である。ノード１２が備えるライセンス制御部１２１、ノード管理部１２２、通信制御部１２３、ライセンス検査部１２４、ライセンス管理テーブル１２５及びライセンス確認アルゴリズム１２６は、ノード１１が備える各構成要素に対応する。よって、詳細な説明は省略する。尚、ライセンス管理システム１００は、３以上のノードを備えていても良い。
【００３４】
以下、図５〜図８を用いて本発明の実施の形態２にかかるライセンス管理処理について説明する。前提条件として、ノード１１のみが稼動状態であり、その他のノード１２等は停止中とする。また、この時点では、ライセンス管理テーブル１１５内のノード１１の使用ライセンス数は０であるものとする。
【００３５】
図５は、本発明の実施の形態２にかかるライセンスチェック処理の流れを示すフローチャートである。まず、ノード１１はライセンスチェック処理を開始する。このとき、ライセンス制御部１１１は、ノード管理部１１２に対してノード検出の実行を指示する。これに応じて、ノード管理部１１２は、ネットワーク１０に接続された他のノードの検出処理を実行する（Ｓ１０１）。例えば、ノード管理部１１２は、ＩＰアドレスの情報を元に、ノード１１が接続しているネットワーク１０と同じネットワークに接続している全てのノード１２等に対して、ノードの検索を行う。
【００３６】
そして、ライセンス制御部１１１は、ノードが検出されたか否かを判定する（Ｓ１０２）。ここでは前提の通り、ノード１２は停止中のため、ノードが検出されないと判定され、ステップＳ１０４へ進む。尚、このとき、ライセンス制御部１１１は、ライセンス管理テーブル１１５を参照し、自ノード以外かつ検出されなかったノードＩＤが含まれている場合、当該ノードＩＤ（ここでは、ノード１２）についてのライセンス情報を削除するか、使用ライセンス数を“０”に更新してもよい。つまり、ライセンス制御部１１１は、検出されなかったノードにおけるライセンスの使用状況を未使用として更新することができる。その後、ライセンス検査部１１４は、ライセンス確認アルゴリズム１１６に基づき、ライセンス検査を行う（Ｓ１０４）。
【００３７】
図８は、本発明の実施の形態２にかかるライセンス検査処理の流れを示すフローチャートである。図８は、簡易なライセンス確認アルゴリズム１１６として、使用ライセンスの総和と、使用可能なライセンス数の最大値とを比較するアルゴリズムを採用するものとする。前提として、ノード１１内のメモリ（不図示）に変数として使用ライセンス総数の領域が確保され、最大ライセンス数が予め与えられているものとする。尚、上述の通りこの時点では、ライセンス管理テーブル１１５内のノード１１の使用ライセンス数は０であるものとする。
【００３８】
まず、ライセンス検査部１１４は、使用ライセンス総数を０に初期化する（Ｓ４０１）。次に、ライセンス検査部１１４は、ライセンス管理テーブル１１５のノードＩＤのうち未選択のものを選択する（Ｓ４０２）。そして、ライセンス検査部１１４は、ライセンス管理テーブル１１５の選択されたノードＩＤに対応付けられた使用ライセンス数を使用ライセンス総数に加算する（Ｓ４０３）。そして、ライセンス検査部１１４は、未選択のノードＩＤがなくなるまでステップＳ４０２及びＳ４０３を繰り返す。
【００３９】
そして、未選択のノードＩＤがなくなった後、ライセンス検査部１１４は、使用ライセンス総数が最大ライセンス数より小さいか否かを判定する（Ｓ４０４）。小さいと判定した場合、ライセンス検査部１１４は、ライセンス数が正常な範囲であるとしてライセンス制御部１１１へ通知する（Ｓ４０５）。また、ステップＳ４０４において使用ライセンス総数が最大ライセンス数以上である場合、ライセンス検査部１１４は、ライセンス数が異常であるとして、ライセンス制御部１１１へ通知する（Ｓ４０６）。すなわち、この状態からさらにノード１１がライセンスを使用できないことを意味する。
【００４０】
図５に戻り説明を続ける。ステップＳ１０４のライセンス検査処理の後、ライセンス制御部１１１は、ライセンス検査処理の結果を判定する（Ｓ１０５）。そして、結果が正常と判定した場合、ライセンス制御部１１１は、ライセンス管理テーブル１１５の自身のノードＩＤについて、使用ライセンス数を“１”として更新する（Ｓ１０６）。
【００４１】
そして、ライセンス制御部１１１は、ノード１１以外の他のノードが検出されたか否かを判定する（Ｓ１０７）。例えば、ステップＳ１０２の結果を用いると良い。ここでは前提の通り、ノード１２は停止中のため、ノードが検出されないと判定され、当該ライセンスチェック処理を終了する。
【００４２】
また、ステップＳ１０５において、結果が異常と判定した場合、ライセンス制御部１１１は、使用ライセンス数の上限を超えているためソフトウェア１１０の実行を継続できない旨等をノード１１内のログ等に記録し（Ｓ１０９）、当該ライセンスチェック処理を終了する。
【００４３】
次に、ノード１１が稼動状態で、ノード１２のライセンスチェック処理を行う際の動作について説明する。ノード１２についても図５に基づいてライセンスチェック処理が実行される。ここで、ステップＳ１０２において、ノード１１は稼動中のため、ノードが検出さたと判定され、ステップＳ１０３へ進む。
【００４４】
ライセンス制御部１１１は、他のノードのライセンス管理テーブルとの同期処理を行う（Ｓ１０３）。図７は、本発明の実施の形態２にかかるライセンス管理テーブルの同期処理の流れを説明するためのシーケンス図である。まず、ノード１２は、ノード１１に対してライセンス管理テーブル取得要求を送信する（Ｓ３０１）。そして、ノード１１は、ステップＳ３０１に応じてノード１１のライセンス管理テーブル１１５に格納されたライセンス情報を、ノード１２へ返信する（Ｓ３０２）。つまり、ノード１２は、他のノードのライセンス情報を取得する。
【００４５】
そして、ノード１２は、取得したノード１１のライセンス情報を、ノード１２のライセンス管理テーブル１２５にマージする（Ｓ３０３）。続いて、ノード１２は、ノード１２のライセンス管理テーブル１２５を更新する（Ｓ３０４）。その後、ノード１２は、ノード１１に対してライセンス管理テーブルの更新要求を送信する（Ｓ３０５）。そして、ノード１１は、ステップＳ３０５に応じてノード１１のライセンス管理テーブル１１５を更新する（Ｓ３０６）。つまり、ノード１２のライセンス管理テーブル１２５に格納されたライセンス情報が他のノードであるノード１１のライセンス管理テーブル１１５に反映される。その後、ノード１１は、ノード１２へライセンス管理テーブル１１５の更新完了の旨を通知する（Ｓ３０７）。
【００４６】
図６は、本発明の実施の形態２にかかるライセンス管理テーブルの同期処理の流れを示すフローチャートである。図６は、図７のステップＳ３０３の処理を詳細化したものである。
【００４７】
まず、ライセンス制御部１２１は、図７のステップ３０２等により取得した他のノードのライセンス管理テーブルに含まれる未選択のノードＩＤを選択する（Ｓ２０１）。次に、ライセンス制御部１２１は、選択されたノードＩＤが自ノードであるノード１２のライセンス管理テーブル１２５に含まれるか否かを判定する（Ｓ２０２）。含まれると判定した場合、ライセンス制御部１２１は、当該選択されたノードＩＤについて、ライセンス管理テーブル１２５における更新日時よりも、他のノードのライセンス管理テーブルにおける更新日時の方が新しいか否かを判定する（Ｓ２０３）。
【００４８】
他のノードのライセンス管理テーブルにおける更新日時の方が新しいと判定した場合、ライセンス制御部１２１は、当該他のノードのライセンス管理テーブルの当該選択されたノードＩＤに対応付けられた使用ライセンス数により、ライセンス管理テーブル１２５を更新する（Ｓ２０４）。一方、ステップＳ２０３において、他のノードのライセンス管理テーブルにおける更新日時の方が古い（又は等しい）と判定した場合、再度、ステップＳ２０１へ進み、未選択のノードＩＤがなくなるまで、ステップＳ２０１〜Ｓ２０５を繰り返す。
【００４９】
また、ステップＳ２０２において、選択されたノードＩＤが自ノードであるノード１２のライセンス管理テーブル１２５に含まれないと判定した場合、ライセンス制御部１２１は、当該他のノードのライセンス管理テーブルの当該選択されたノードＩＤ及び使用ライセンス数を、ライセンス管理テーブル１２５に追加する（Ｓ２０５）。この後、再度、ステップＳ２０１へ進み、未選択のノードＩＤがなくなるまで、ステップＳ２０１〜Ｓ２０５を繰り返す。
【００５０】
そして、ステップＳ２０１において、取得済みの全ての他のノードのライセンス管理テーブルにおけるノードＩＤが全て選択済みとなった場合、当該同期処理を終了する。
【００５１】
図５に戻り説明を続ける。ステップＳ１０３の後、ライセンス制御部１２１は、同期後のライセンス管理テーブル１２５に基づいて、ライセンス検査を行う（Ｓ１０４）。ステップＳ１０４のライセンス検査処理の後、ライセンス制御部１２１は、ライセンス検査処理の結果を判定する（Ｓ１０５）。そして、結果が正常と判定した場合、ライセンス制御部１２１は、ライセンス管理テーブル１２５の自身のノードＩＤについて、使用ライセンス数を“１”として更新する（Ｓ１０６）。
【００５２】
そして、ライセンス制御部１２１は、ノード１２以外の他のノードが検出されたか否かを判定する（Ｓ１０７）。ステップＳ１０７においても、ステップＳ１０２と同様にノードが検出さたと判定され、ステップＳ１０８へ進む。そして、ライセンス制御部１２１は、検出された他のノードに対して、ライセンス管理テーブル１２５に格納されたライセンス情報を送信して、反映させる（Ｓ１０８）。これは、上述した図７のステップＳ３０５〜Ｓ３０７の処理に対応する。
【００５３】
このように、本実施の形態２にかかるソフトウェアを使用する情報システムにおいて、当該ソフトウェアを実行するノードの増減が発生した場合、最新のライセンスの使用状況が全てのノードにリアルタイムに反映される。そのため、各ノードがシステム全体のライセンス情報を保持しているため、ライセンス管理用のノード（ライセンス管理専用のサーバ等）を別途用意する必要がない。また、各ノードがシステム全体のライセンス情報を保持しているため、一部のノードに障害が発生した場合においてもライセンス情報に起因するシステム障害が発生しない。
【００５４】
また、ノードが３以上あり、そのうち一部のノードが停止している場合、ステップＳ１０１においては、複数の他のノードの一部しか検出されない。このとき、稼働中の他のノードから取得されるライセンス情報には、当時稼動中であり現在停止中である他のノードについては、使用ライセンス数が“１”となっている可能性がある。その場合、そのままライセンス情報をマージすると、本来、ライセンスを使用していない停止中の他のノードの分まで使用ライセンス総数として加算されてしまう。ここで、本実施の形態２では、自ノードのライセンス情報に含まれるノードＩＤのうち、検出されなかったノードＩＤについては、当該ノードＩＤのレコード自体をライセンス管理テーブルから削除するとよい。これにより、ライセンス管理の精度を向上させることができる。
【００５５】
＜発明の実施の形態３＞
本発明の実施の形態３は、上述した実施の形態２の変形例である。実施の形態２との違いとして、一つのノードには、ライセンス管理プログラムモジュールを含むソフトウェアが２以上インストールされており、ライセンス制御部、ノード管理部、通信制御部、ライセンス検査部及びライセンス管理テーブルが各ソフトウェアの外部に配置されている点である。
【００５６】
また、本発明の実施の形態３にかかるライセンス確認アルゴリズムは、ソフトウェアのライセンス形態に応じて異なるアルゴリズムを使用したものである。また、アルゴリズムに応じてライセンス管理テーブルの使用ライセンス数を変更しても問題ない。
【００５７】
言い換えると、本発明の実施の形態３では、複数のノードに所定のソフトウェア群がそれぞれにインストールされたものである。つまり、２以上のソフトウェアの集合であるソフトウェア群が各ノードにインストールされたものである。そして、各ノードは、全てのノードにおける前記ソフトウェア群に含まれる各ソフトウェアのライセンスの使用数が各ソフトウェアのライセンス形態に応じて算出されたライセンス情報を保持し、他のノードとの間で前記ライセンス情報の同期を取る。
【００５８】
図９は、本発明の実施の形態３にかかるライセンス管理システム２００の構成を示すブロック図である。ライセンス管理システム２００は、ネットワーク２０を介してノード２１とノード２２とが接続されている。ノード２１は、ライセンス制御部２１１と、ノード管理部２１２と、通信制御部２１３と、ライセンス検査部２１４と、ライセンス管理テーブル２１５と、ソフトウェア２１０１及び２１０２とを含む。つまり、ノード２１は、ソフトウェア２１０１及び２１０２がインストールされている。また、ライセンス制御部２１１と、ノード管理部２１２と、通信制御部２１３と、ライセンス検査部２１４とは他のソフトウェアとして実現されるか、ハードウェアとして実現しても構わない。ライセンス管理テーブル２１５は、ノード２１内のメモリ（不図示）に領域が確保されているものである。
【００５９】
ソフトウェア２１０１は、ライセンス確認アルゴリズム２１６を含み、ノード２２にインストールされたソフトウェア２２０１と同等の機能であるものとする。そして、ソフトウェア２１０１及び２２０１は、例えば、ノード単位で使用ライセンス数を加算するライセンス形態であるものとする。ここで、ライセンス確認アルゴリズム２１６（及び２２６）は、ソフトウェア２１０１及びソフトウェア２２０１のライセンス検査を行うためのソフトウェアである。
【００６０】
また、ソフトウェア２１０２は、ライセンス確認アルゴリズム２１７を含み、ノード２２にインストールされたソフトウェア２２０２と同等の機能であるものとする。そして、ソフトウェア２１０２及び２２０２は、例えば、ＣＰＵ単位で使用ライセンス数を加算するライセンス形態であるものとする。ここで、ライセンス確認アルゴリズム２１７（及び２２７）は、ソフトウェア２１０２及びソフトウェア２２０２のライセンス検査を行うためのソフトウェアである。
【００６１】
ここで、ライセンス確認アルゴリズム２１６及び２１７のそれぞれは、ライセンス検査部２１４が提供するAPI（Application Programming Interface）に準拠するものである。これにより、ライセンス検査部２１４は、ライセンス確認アルゴリズム２１６及び２１７を用いてそれぞれを含むソフトウェア２１０１及び２１０２のライセンス検査処理を実現できる。また、ライセンス制御部２１１又はライセンス検査部２１４は、ソフトウェア２１０１及び２１０２のライセンス検査処理の結果を、ライセンス管理テーブル２１５に格納する。
【００６２】
ノード２２は、ノード２１と同等である。ノード２２が備えるライセンス制御部２２１、ノード管理部２２２、通信制御部２２３、ライセンス検査部２２４及びライセンス管理テーブル２２５は、ノード２１が備える各構成要素に対応する。よって、詳細な説明は省略する。尚、ライセンス管理システム２００は、３以上のノードを備えていても良い。
【００６３】
図１０は、本発明の実施の形態３にかかるライセンス管理テーブルの例を示す図である。尚、ここでは、３つ目のノードとして２以上のＣＰＵを有するノード２３（不図示）を含むものとする。そして、“ソフトウェアＡ“は、ライセンスタイプ（ライセンス形態）がノード単位であり、ソフトウェア２１０１等に相当するものとし、”ソフトウェアＢ“はライセンスタイプがＣＰＵ単位であり、ソフトウェア２１０２等に相当するものとする。ここで、“ソフトウェアＡ“は、ノード２１及び２３のそれぞれで使用ライセンス数”１“を使用していることを示す。また、”ソフトウェアＢ“は、ノード２１及び２２のそれぞれで使用ライセンス数”１“を使用しており、ノード２３では２つのＣＰＵを用いて稼動しているため、使用ライセンス数”２“を使用していることを示す。
【００６４】
このように、本発明の実施の形態３により、１ノード当たり複数の種類のソフトウェアの使用ライセンス数を管理することができる。さらに、異なるライセンス形態に応じて使用ライセンス数を算出することができる。これは、例えば、ライセンス確認アルゴリズム２１６とライセンス確認アルゴリズム２１７とで、ライセンス検査処理のアルゴリズムをライセンス形態に応じたものへカスタマイズすることで実現できる。これにより、柔軟にライセンス数を管理できる。
【００６５】
＜発明の実施の形態４＞
本発明の実施の形態４は、上述した実施の形態２の応用例である。例えば、サービス提供事業者が上述した実施の形態２を利用するために、エンドユーザの使用状況に応じた課金を行うべく、課金システムと連携した場合を説明する。実施の形態２との違いとして、ソフトウェアライセンスの課金システムと連携したものといえる。すなわち、更新したライセンス情報を他のノードの全てへ反映させた後に、当該更新したライセンス情報を外部システムへ送信するものである。これにより、同期を取った最新の正確なライセンス情報をリアルタイムに外部システムでの処理に用いることができ、幅広い応用例を実現できる。
【００６６】
図１１は、本発明の実施の形態４にかかるライセンス管理システム３００の構成を示すブロック図である。ライセンス管理システム３００は、ネットワーク３０を介してああ１
とノード３２と課金システム３３とが接続されている。尚、ノード３１及び３２の各構成要素は、それぞれ、図３のノード１１及び１２等の各構成要素に対応する。よって、詳細な説明は省略する。尚、ライセンス管理システム３００は、３以上のノードを備えていても良い。
【００６７】
課金システム３３は、ソフトウェア３１０及び３２０の使用ライセンス数を所定の間隔で収集し、記録するものである。課金システム３３は、課金管理部３３１と、通信制御部３３２と、使用状況管理テーブル３３３とを備える。課金管理部３３１は、課金システム３３の全体の処理を制御する。通信制御部３３２は、ネットワーク３０を介したノード３１及び３２との通信を制御する。使用状況管理テーブル３３３は、ノード３１のライセンス管理テーブル３１５及びノード３２のライセンス管理テーブル３２５から定期的に収集されたライセンス情報が登録されたものである。
【００６８】
図１２は、本発明の実施の形態４にかかるライセンスチェック処理の流れを示すフローチャートである。ステップＳ５０１からＳ５０９は、上述した図５のステップＳ１０１〜Ｓ１０９と同等であるため、説明を省略する。図１２では他ノードへのライセンス管理テーブルの更新が完了後に、さらに、ライセンス制御部３１１は、課金システム３３へ自ノードのライセンス管理テーブルの更新を通知する（Ｓ５１０）。これにより、最新のノード３１及び３２等におけるライセンスの使用状況を使用状況管理テーブル３３３でリアルタイムに管理することができる。
【００６９】
図１３は、本発明の実施の形態４にかかる使用状況管理テーブル３３３の例を示す図である。例えば、課金管理部３３１は、１時間ごとにノード３１又は３２からライセンス管理テーブル３１５又は３２５に格納された使用ライセンス数を取得して、その合計値を使用者及びライセンス確認時刻と対応付けて使用状況管理テーブル３３３に格納する。そして、課金管理部３３１は、任意のタイミングで任意の期間の使用ライセンス数を集計する。図１３では、所定期間内で１２ライセンス分が使用されたことを示す。このように、使用状況に応じたソフトウェアライセンスの課金を行うこともできる。そのため、仮想マシン等におけるライセンスの使用状況を正確、リアルタイム、かつ、簡易に把握することが可能となり、実態に即した課金を実現できる。
【００７０】
＜その他の発明の実施の形態＞
尚、上述した各実施の形態のノード管理部は、ネットワーク内に存在する他ノードの検索のために、ＤＨＣＰ（Dynamic Host Configuration Protocol）サーバからの情報を用いてもよい。
【００７１】
また、本発明の各実施の形態は、クラウドコンピューティング基盤のように、ノードが動的に増減する環境におけるライセンス管理の分野に適用可能である。
【００７２】
本発明の各実施の形態は、複数ノード間で協調動作するライセンス管理方法ということもでき、ライセンス管理用のシステムを用意せず、システムを構成する全てのノードでライセンス管理情報を保持することで、リソースの効率化、耐障害性を向上させるものである。言い換えると、複数のノードにインストールされているソフトウェアのライセンス情報を、ノード間で相互に共有することで、ノードの増減に伴うシステム全体の使用ライセンス情報を動的に管理するものである。
【００７３】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。
【００７４】
非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、ＤＶＤ（Digital Versatile Disc）、ＢＤ(Blu-ray(登録商標) Disc)、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、コンピュータプログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００７５】
１０００  ライセンス管理システム
１１００  ノード
１１１０  記憶部
１１１１  ライセンス情報
１１２０  検出部
１１３０  取得部
１１４０  更新部
１１５０  反映部
１２００  ノード
１ｎ００  ノード
１００  ライセンス管理システム
１０  ネットワーク
１１  ノード
１１０  ソフトウェア
１１１  ライセンス制御部
１１２  ノード管理部
１１３  通信制御部
１１４  ライセンス検査部
１１５  ライセンス管理テーブル
１１６  ライセンス確認アルゴリズム
１２  ノード
１２０  ソフトウェア
１２１  ライセンス制御部
１２２  ノード管理部
１２３  通信制御部
１２４  ライセンス検査部
１２５  ライセンス管理テーブル
１２６  ライセンス確認アルゴリズム
２００  ライセンス管理システム
２０  ネットワーク
２１  ノード
２１０１  ソフトウェア
２１０２  ソフトウェア
２１１  ライセンス制御部
２１２  ノード管理部
２１３  通信制御部
２１４  ライセンス検査部
２１５  ライセンス管理テーブル
２１６  ライセンス確認アルゴリズム
２１７  ライセンス確認アルゴリズム
２２  ノード
２２０１  ソフトウェア
２２０２  ソフトウェア
２２１  ライセンス制御部
２２２  ノード管理部
２２３  通信制御部
２２４  ライセンス検査部
２２５  ライセンス管理テーブル
２２６  ライセンス確認アルゴリズム
２２７  ライセンス確認アルゴリズム
３００  ライセンス管理システム
３０  ネットワーク
３１  ノード
３１０  ソフトウェア
３１１  ライセンス制御部
３１２  ノード管理部
３１３  通信制御部
３１４  ライセンス検査部
３１５  ライセンス管理テーブル
３１６  ライセンス確認アルゴリズム
３２  ノード
３２０  ソフトウェア
３２１  ライセンス制御部
３２２  ノード管理部
３２３  通信制御部
３２４  ライセンス検査部
３２５  ライセンス管理テーブル
３２６  ライセンス確認アルゴリズム
３３  課金システム
３３１  課金管理部
３３２  通信制御部
３３３  使用状況管理テーブル
【図１】
2015069257.tif 000003
【図２】
2015069257.tif 000004
【図３】
2015069257.tif 000005
【図４】
2015069257.tif 000006
【図５】
2015069257.tif 000007
【図６】
2015069257.tif 000008
【図７】
2015069257.tif 000009
【図８】
2015069257.tif 000010
【図９】
2015069257.tif 000011
【図１０】
2015069257.tif 000012
【図１１】
2015069257.tif 000013
【図１２】
2015069257.tif 000014
【図１３】
2015069257.tif 000015