(57)【要約】【課題】新規にソフトウェアを起動したときのライセンスチェックを迅速に行うことができるようにする。【解決手段】複数の情報処理装置１１ａ〜１１ｚでライセンスチェックを行う情報処理システム１０において、例えば情報処理装置１１ｍが割当てライセンスを追加する場合、記憶部１３ｍに記憶された割当て済み数に追加ライセンス数を加算するとともに、最初に起動された情報処理装置１１ａと、自装置の次に起動された情報処理装置１１ｎとに追加ライセンス数を送信する。情報処理装置１１ａでは、記憶部１３ｍに記憶された割当て済み数に追加ライセンス数を加算し、情報処理装置１１ｎ以降の情報処理装置１１ｎ〜１１ｚでも、起動順に、記憶部１３ｎ〜１３ｚに記憶された割当て済み数に追加ライセンス数を加算していく。情報処理装置１１ａ〜１１ｚが自身でライセンス数の管理を行うので、ライセンスチェックを迅速に行うことができる。【選択図】図１
2017194865.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置を含む情報処理システムであって、
前記複数の情報処理装置のそれぞれが、
割当て済みのライセンス数を記憶する記憶部と、
処理部と、を備え、
前記複数の情報処理装置のうち、前記記憶部に前記複数の情報処理装置の起動順序において最初に起動された情報処理装置以外の情報処理装置の前記処理部は、
自装置において割当てライセンスを追加する場合、自装置の前記記憶部に記憶された前記割当て済みのライセンス数に、追加するライセンスの数を加算するとともに、前記最初に起動された情報処理装置と、前記起動順序において自装置の１つ後に起動された情報処理装置と、に追加で割当てを行うライセンス数を送信し、かつ、他の情報処理装置から追加で割当てを行うライセンス数を受信した場合、自装置の前記記憶部に記憶された割当て済みのライセンス数に、受信したライセンス数を加算して、受信したライセンス数を前記起動順序において自装置の１つ後に起動された情報処理装置に送信し、
前記最初に起動された情報処理装置の前記処理部は、
他の情報処理装置から追加で割当てを行うライセンス数を受信した場合、自装置の前記記憶部に記憶された割当て済みのライセンス数に、受信したライセンス数を加算する、
情報処理システム。
【請求項２】
前記最初に起動された情報処理装置の前記処理部は、前記起動順序において最初に起動された情報処理装置以外の情報処理装置から受信したライセンス数を自装置の前記記憶部に記憶された割当て済みのライセンス数に加算したライセンス数が自装置の前記記憶部に記憶された保有ライセンス数を超える場合、前記複数の情報処理装置それぞれの割り当て済みライセンス数の合計値を取得し、前記合計値で、自装置の前記記憶部に記憶された割り当て済みライセンス数を更新し、受信したライセンス数を更新後の該割当て済みのライセンス数に加算したライセンス数が前記保有ライセンス数以下であれば、ライセンス数の送信元の情報処理装置に、ライセンス割当て許可を通知し、
前記最初に起動された情報処理装置以外の情報処理装置の前記処理部は、前記最初に起動された情報処理装置に送信したライセンス数に対して、前記最初に起動された情報処理装置からライセンス割当て許可の応答を受信したときに、自装置の前記記憶部に記憶された前記割当て済みのライセンス数に、追加するライセンスの数を加算する、
請求項１記載の情報処理システム。
【請求項３】
前記起動順序において最初に起動された情報処理装置および前記起動順序において最後に起動された情報処理装置以外の情報処理装置の前記処理部は、自装置において割当てライセンスを削除する場合、自装置の前記記憶部に記憶された割当て済みのライセンス数およびライセンス使用数をそれぞれ削除するライセンス数で削減し、かつ、削除するライセンス数を前記起動順序において最初に起動された情報処理装置に送信し、
前記起動順序において最初に起動された情報処理装置の前記処理部は、自装置の前記記憶部に記憶された割当て済みのライセンス数を受信した削除するライセンス数で削減して更新し、かつ、更新された割当て済みのライセンス数を前記起動順序において最後に起動された情報処理装置に送信し、
前記起動順序において最後に起動された情報処理装置の前記処理部は、自装置の前記記憶部に記憶された割当て済みのライセンス数を受信した割当て済みのライセンス数で更新する、
請求項１または２に記載の情報処理システム。
【請求項４】
前記複数の情報処理装置に新規追加される情報処理装置の処理部は、前記複数の情報処理装置のうちのいずれかの情報処理装置にアクセスして該情報処理装置から前記起動順序において最初に起動された情報処理装置のアドレスを取得し、該情報処理装置から前記起動順序において最後に起動された情報処理装置のアドレスを取得し、該情報処理装置から割当て済みのライセンス数を取得し、取得した割当て済みのライセンス数を自装置の前記記憶部に設定し、前記起動順序において最初に起動された情報処理装置に自装置のアドレスを送信し、
前記起動順序において最初に起動された情報処理装置の前記処理部は、前記新規追加の情報処理装置からアドレスを受信した場合、自身の前記記憶部に記憶された前記起動順序において最後に起動された情報処理装置のアドレスを、受信したアドレスに更新する、
請求項１ないし３のいずれかに記載の情報処理システム。
【請求項５】
前記起動順序において自装置の１つ後に起動された情報処理装置の異常の発生を検知した情報処理装置の前記処理部は、自装置の前記記憶部に記憶された割当て済みのライセンス数の情報を、前記起動順序において異常が発生した情報処理装置の１つ後に起動した情報処理装置に送信し、
前記起動順序において最後に起動された情報処理装置以外の情報処理装置の前記処理部は、前記起動順序において自装置より前に起動した情報処理装置から割当て済みのライセンス数を受信した場合、自装置の前記記憶部に記憶されたライセンス使用数に受信した割当て済みのライセンス数を加算し、加算されたライセンス数で自装置の前記記憶部に記憶された割当て済みのライセンス数を更新し、更新された割当て済みのライセンス数を前記起動順序において自装置の１つ後に起動した情報処理装置に送信し、
前記起動順序において最後に起動された情報処理装置の前記処理部は、前記起動順序において自装置より前に起動した情報処理装置から更新された割当て済みのライセンス数を受信した場合、自装置の前記記憶部に記憶されたライセンス使用数に受信した割当て済みのライセンス数を加算し、加算されたライセンス数で自装置の前記記憶部に記憶された割当て済みのライセンス数を更新し、更新された割当て済みのライセンス数を前記起動順序において最初に起動した情報処理装置に送信し、
前記起動順序において最初に起動された情報処理装置の前記処理部は、割当て済みのライセンス数を受信した場合、受信した割当て済みのライセンス数で自装置の前記記憶部に記憶された割当て済みのライセンス数を更新する、
請求項１ないし４のいずれかに記載の情報処理システム。
【請求項６】
前記起動順序において最後に起動された情報処理装置の異常を検出した情報処理装置の前記処理部は、前記起動順序において最初に起動された情報処理装置から順に、前記起動順序に従って情報処理装置のアドレスを取得し、前記起動順序において最初に起動された情報処理装置の１つ後に起動した情報処理装置に前記起動順序において最後に起動された情報処理装置に異常が発生したことを通知し、
前記起動順序において最初に起動された情報処理装置の前記処理部は、前記任意の情報処理装置から問い合せに対して自装置の前記記憶部に記憶された前記起動順序において最後に起動された情報処理装置および前記起動順序において自装置の１つ後に起動された情報処理装置のアドレスを送信し、前記起動順序において自装置の１つ後に起動された情報処理装置の稼働確認を行い、
前記起動順序において自装置の１つ前に起動された情報処理装置から稼働確認を受けた情報処理装置の前記処理部は、自装置の前記記憶部に記憶された前記起動順序において自装置の１つ後に起動された情報処理装置の情報をもとに前記起動順序において自装置の１つ後に起動された情報処理装置の稼働確認を行い、
前記起動順序において最後に起動された情報処理装置の１つ前に起動された情報処理装置の前記処理部は、前記起動順序において自装置の１つ前に起動された情報処理装置から稼働確認を受けた場合、自装置の前記記憶部に記憶された情報を、前記起動順序において最後に起動されたときの情報に更新する、
請求項１ないし５のいずれかに記載の情報処理システム。
【請求項７】
前記起動順序において最後に起動された情報処理装置の前記処理部は、前記起動順序において最初に起動された情報処理装置に異常が発生した場合、前記起動順序において２番目に起動された情報処理装置に、自装置の前記記憶部に記憶された割当て済みのライセンス数を通知し、
前記起動順序において２番目に起動された情報処理装置の前記処理部は、前記起動順序において最後に起動された情報処理装置から受信した割当て済みのライセンス数を、自装置の前記記憶部に記憶する、
請求項１ないし６のいずれかに記載の情報処理システム。
【請求項８】
クラウドの管理を行うクラウド管理部を備え、
前記クラウド管理部は、あらかじめシステム構築済みのマスタイメージを前記起動順序において最初に起動された情報処理装置として設定された構成で作成し、クラウド環境に新たに情報処理装置を配備する場合には前記マスタイメージを前記クラウド環境に配備する、
請求項１ないし７のいずれかに記載の情報処理システム。
【請求項９】
前記記憶部は、リンク情報とライセンス管理情報とを記憶し、前記リンク情報は、自装置を表すＣｕｒｒｅｎｔ、起動した情報管理装置のアドレスを起動した順に累積して記憶する起動順、最初に起動した情報管理装置のアドレスを記憶するＨｅａｄ、最後に起動した情報管理装置のアドレスを記憶するＴａｉｌ、自装置の１つ前に起動された情報処理装置のアドレスを記憶するＰｒｅｖｉｏｕｓおよび自装置の１つ後に起動された情報処理装置のアドレスを記憶するＮｅｘｔの情報を有し、前記ライセンス管理情報は、ソフトウェア名、保有ライセンス数、割当て済み数および使用数の情報を有している、
請求項１ないし８のいずれかに記載の情報処理システム。
【請求項１０】
コンピュータが、
起動順にリンク情報によって繋げられた複数の情報処理装置のうち、起動順序において最初に起動された情報処理装置以外の情報処理装置において割当てライセンスを追加する場合に、自装置の割当て済みのライセンス数に、追加で割当てを行うライセンス数を加算し、
前記最初に起動された情報処理装置と起動順序において自装置の１つ後に起動された情報処理装置とに追加で割当てを行うライセンス数を送信し、
前記最初に起動された情報処理装置では自装置の割当て済みのライセンス数に、受信した追加で割当てを行うライセンス数を加算し、
割当てライセンスを追加する装置の１つ後に起動された情報処理装置では自装置の割当て済みのライセンス数に、受信した追加で割当てを行うライセンス数を加算するとともに、自装置の１つ後に起動された情報処理装置に受信した追加で割当てを行うライセンス数を送信し、
受信した追加で割当てを行うライセンス数の加算および送信を、起動順序において最後から１つ前に起動された情報処理装置に達するまで繰り返し、
起動順序において最後に起動された情報処理装置では自装置の割当て済みのライセンス数に、受信した追加で割当てを行うライセンス数を加算する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理システムおよび情報処理方法に関する。
【背景技術】
【０００２】
クラウドコンピューティングサービスでは、ネットワーク上で同時に使用できるアプリケーションソフトウェアの最大数でライセンス数を許諾するようなライセンス契約の形態が多くなっている。このようなライセンス契約が結ばれるアプリケーションでは、そのライセンス数の範囲内でのみアプリケーションの同時使用が可能になる。
【０００３】
この場合、ネットワーク上で同時に使用されるアプリケーションの数がライセンス数を超えないようなライセンス管理が行われる。このためには、ライセンス管理専用のライセンス管理サーバを設置してライセンス数を管理することが一般に行われている。
【０００４】
ライセンス管理サーバでライセンス数の管理を行う場合、そのライセンス管理サーバがダウンしたときには、すべてのライセンス管理情報が消失したり、すべての可動サーバでライセンス数の管理ができなくなったりする。
【０００５】
これに対し、ライセンス管理サーバを設けないでライセンス数の管理を行うライセンス認証方法が提案されている。この提案によれば、ソフトウェアの管理番号にライセンス数情報を入れ込んでインストールする。そして、コンピュータは、ソフトウェア起動時にネットワーク接続されたすべてのコンピュータからソフトウェアの管理番号を取得し、起動するソフトウェアと同一の管理番号を有するコンピュータの台数がライセンス数未満であれば使用を許可する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−３５５４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ソフトウェアを起動しようとするコンピュータにライセンス情報を設定し、システム内で同じソフトウェアを使用しているコンピュータの台数を確認することで、ライセンス管理サーバは使用せずに済む。その結果、特定のコンピュータの故障により、すべてのライセンス管理ができなくなることが抑止できる。その一方、システム内のすべてのコンピュータから、管理番号のようなライセンス情報を取得することになるため、ネットワーク上のコンピュータ台数の増加に応じて、ライセンス情報の取得に要する時間が増加する。その結果、ライセンスチェックの完了までの時間が長くなり、新規に稼働したソフトウェアが利用できるまでの時間も長くなってしまう。
【０００８】
１つの側面では、新規にソフトウェアを起動したときのライセンスチェックを迅速に行うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、複数の情報処理装置を含む情報処理システムが提供される。複数の情報処理装置のそれぞれは、割当て済みのライセンス数を記憶する記憶部と、処理部と、を備える。複数の情報処理装置のうち、記憶部に複数の情報処理装置の起動順序において最初に起動された情報処理装置以外の情報処理装置の処理部は、自装置において割当てライセンスを追加する場合、自装置の記憶部に記憶された割当て済みのライセンス数に、追加するライセンスの数を加算するとともに、最初に起動された情報処理装置と、起動順序において自装置の１つ後に起動された情報処理装置と、に追加で割当てを行うライセンス数を送信する。また、複数の情報処理装置のうち、記憶部に複数の情報処理装置の起動順序において最初に起動された情報処理装置以外の情報処理装置の処理部は、他の情報処理装置から追加で割当てを行うライセンス数を受信した場合、自装置の記憶部に記憶された割当て済みのライセンス数に、受信したライセンス数を加算して、受信したライセンス数を起動順序において自装置の１つ後に起動された情報処理装置に送信する。最初に起動された情報処理装置の処理部は、他の情報処理装置から追加で割当てを行うライセンス数を受信した場合、自装置の記憶部に記憶された割当て済みのライセンス数に、受信したライセンス数を加算する。
【発明の効果】
【００１０】
１つの側面によれば、新規にソフトウェアを起動したときのライセンスチェックを迅速に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る情報処理装置システムの機能の一例を示す図である。
【図２】第２の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。
【図３】第２の実施の形態に係るライセンス管理システムを示す構成図である。
【図４】サーバリンク情報の構成例を示す図である。
【図５】ライセンス管理情報の構成例を示す図である。
【図６】新規にソフトウェアを起動した時のライセンス追加処理の流れを示したライセンス情報の処理シーケンスを示す図である。
【図７】新規にソフトウェアを起動した時のライセンス追加処理の流れを例示した説明図である。
【図８】新規にソフトウェアを起動した時のライセンス更新処理の流れを示したライセンス情報の処理シーケンスを示す図である。
【図９】新規にソフトウェアを起動した時のライセンス更新処理の流れを例示した説明図である。
【図１０】ソフトウェアを停止した時のライセンス削除処理の流れを示したライセンス情報の処理シーケンスを示す図である。
【図１１】ソフトウェアを停止した時のライセンス削除処理の流れを例示した説明図である。
【図１２】新規にサーバを追加した時のサーバリンク情報の処理の流れを示したフローチャートである。
【図１３】Ｈｅａｄサーバのサーバリンク情報の初期設定の例を示す図である。
【図１４】新規にサーバを追加した時のサーバリンク情報の更新処理の流れを例示した説明図である。
【図１５】稼働中サーバを停止する時のサーバリンク情報の処理の流れを示したフローチャートである。
【図１６】稼働中のサーバを停止する時のサーバリンク情報の更新処理の流れを例示した説明図である。
【図１７】ＨｅａｄサーバおよびＴａｉｌサーバ以外の中間のサーバで異常が発生した場合のサーバリンク修復処理の流れを示したフローチャートである。
【図１８】ＨｅａｄサーバおよびＴａｉｌサーバ以外の中間のサーバで異常が発生した場合のサーバリンク修復処理の流れを例示した説明図である。
【図１９】ＨｅａｄサーバおよびＴａｉｌサーバ以外の中間のサーバで異常が発生した場合のライセンス情報修復処理の流れを例示した説明図である。
【図２０】Ｔａｉｌサーバで異常が発生した場合の処理の流れを示した処理シーケンスを示す図である。
【図２１】Ｔａｉｌサーバで異常が発生した場合の処理の流れを例示した説明図である。
【図２２】Ｈｅａｄサーバで異常が発生した場合の処理の流れを示した処理シーケンスを示す図である。
【図２３】ＨｅａｄサーバとＴａｉｌサーバの両方で異常が発生した場合の処理の流れを示した処理シーケンスを示す図である。
【図２４】ＨｅａｄサーバとＴａｉｌサーバの両方で異常が発生した場合の処理の流れを例示した説明図である。
【図２５】クラウド環境でのサーバリンク情報の更新の流れの処理シーケンス（その１）である。
【図２６】クラウド環境でのサーバリンク情報の更新の流れの処理シーケンス（その２）である。
【図２７】クラウド環境でのサーバリンク情報の更新の流れを示すフローチャートである。
【図２８】Ｈｅａｄサーバがある場合のクラウド環境でのイメージ配備例を示す説明図である。
【図２９】Ｈｅａｄサーバが異常、かつ、稼働中のサーバがある場合のクラウド環境でのイメージ配備例を示す説明図である。
【図３０】Ｈｅａｄサーバがない場合のクラウド環境でのイメージ配備例を示す説明図である。
【図３１】Ｈｅａｄサーバおよび稼働中のサーバがあるクラウド環境でのイメージ配備中にＨｅａｄサーバが異常になった例を示す説明図である。
【図３２】Ｈｅａｄサーバおよび稼働中のサーバがあるクラウド環境でのイメージ配備例を示す説明図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお、各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置システムの機能の一例を示す図である。情報処理システム１０は、複数の情報処理装置１１ａ〜１１ｚを備えている。ここで、複数の情報処理装置１１ａ〜１１ｚは、図示では、起動した順に並べてある。それぞれの情報処理装置１１ａ〜１１ｚは、それぞれ処理部１２ａ〜１２ｚおよび記憶部１３ａ〜１３ｚを備えている。
【００１３】
処理部１２ａ〜１２ｚは、自装置が割当てライセンスを追加する場合、および、他装置から追加で割当てを行うライセンス数を受信した場合に、割当て済みライセンス数の更新処理を行う。記憶部１３ａ〜１３ｚは、ソフトウェアライセンスの割当て済みのライセンス数を記憶する。また記憶部１３ａ〜１３ｚそれぞれは、保有ライセンス数も記憶している。
【００１４】
以上の構成の情報処理システム１０において、最初に起動された情報処理装置１１ａは、この情報処理システム１０を代表する装置として機能し、システム全体のライセンス数の管理を行う。このため、他の情報処理装置１１ｂ〜１１ｚ（情報処理装置１１ｂは２番目に起動した装置とする）は、自装置で割当てライセンスの追加をする場合には、必ず、代表の情報処理装置１１ａに追加ライセンス数が送信される。
【００１５】
ここで、ｍ番目に起動した情報処理装置１１ｍが新規にソフトウェアを、例えば、２ライセンスを追加する場合の動作について説明する。まず、情報処理装置１１ｍにおいては、その処理部１２ｍが追加ライセンス数の「２」を情報処理装置１１ａに送信する処理を行う。
【００１６】
情報処理装置１１ａでは、その記憶部１３ａに割当て済みのライセンス数（以下、割当て済み数という。）が記憶されていて、図示の例では、割当て済み数として「１０」が記憶されているとする。情報処理装置１１ａの処理部１２ａは、情報処理装置１１ｍから追加で割当てを行うライセンス数の「２」を受信すると、記憶部１３ａに記憶された割当て済み数に、受信したライセンス数を加算する。図示の例では、処理部１２ａは、割当て済み数の「１０」に、受信したライセンス数「２」を加算し、記憶部１３ａの割当て済み数を「１２」に更新する処理を行う。処理部１２ａは、更新後の割当て済み数が、保有ライセンス数以下であれば、情報処理装置１１ｍに使用可能を通知する。
【００１７】
使用可能の通知を受けた情報処理装置１１ｍでは、その処理部１２ｍが自身の記憶部１３ｍに記憶された割当て済み数に追加のライセンス数を加算する。図示の例では、処理部１２ｍは、割当て済み数の「８」に、追加のライセンス数「２」を加算し、記憶部１３ｍの割当て済み数を「１０」に更新する処理を行う。そして、処理部１２ｍは、自装置の１つ後に起動された情報処理装置１１ｎに追加ライセンス数の「２」を送信する処理を行う。
【００１８】
次に、情報処理装置１１ｍから追加ライセンス数の「２」を受信した情報処理装置１１ｎでは、その処理部１２ｎが記憶部１３ｎに記憶された割当て済み数に追加のライセンス数を加算する。図示の例では、処理部１２ｎは、割当て済み数の「１０」に、追加のライセンス数「２」を加算し、記憶部１３ｎの割当て済み数を「１２」に更新する処理を行う。そして、処理部１２ｎは、自装置の１つ後に起動された情報処理装置に追加ライセンス数の「２」を送信する処理を行う。この自装置の１つ後に起動された情報処理装置に向けて追加ライセンス数を送信する処理は、起動順で最後に起動された情報処理装置１１ｚが割当て済み数の更新処理を行うまで繰り返される。
【００１９】
この処理により、システム全体としての総割当て済みライセンス数は、起動順に繋がっている情報処理装置１１ａ〜１１ｚの先頭の情報処理装置１１ａと最後尾の情報処理装置１１ｚとに記憶されることになる。その他の情報処理装置１１ｂ〜１１ｙ（情報処理装置１１ｙは最後から２番目に起動した装置とする）に記憶される割当て済み数は、割当てライセンスの追加を行った情報処理装置から自装置までの装置に割当てられた累積ライセンス数になる。
【００２０】
この情報処理システム１０では、情報処理装置１１ｍにて新規にソフトウェアを追加するときの処理が自装置での割当て済み数の更新処理と、先頭の情報処理装置１１ａおよび自装置の次に起動された情報処理装置１１ｎへの追加ライセンス数の送信処理だけである。このため、この情報処理システム１０は、新規にソフトウェアを起動したときのライセンスチェックを短時間で行うことができ、新規ソフトウェアを迅速に起動することができる。
【００２１】
さらに情報処理システム１０は、起動順序において先頭の情報処理装置１１ａがライセンスを管理するものと決められている。そのため、ライセンスを管理していた情報処理装置１１ａに障害が発生した場合、ライセンス管理処理を引き継ぐのは、起動順序において２番目の情報処理装置１１ｂである。このようにライセンス管理処理を引き継ぐ情報処理装置が一意に決定できるため、ライセンス管理処理の引き継ぎを迅速に行うことができる。しかも先頭の情報処理装置１１ａに障害が発生しても、システム全体としての総割当て済みライセンス数を最後尾の情報処理装置１１ｚが保持している。そのため情報処理装置１１ｚから、起動順序において２番目の情報処理装置１１ｂへ、総割当て済みライセンス数を送信することで、情報処理装置１１ｂは、迅速にライセンスの管理を開始することができる。
【００２２】
なお、情報処理装置１１ａ〜１１ｚが有する処理部１２ａ〜１２ｚは、例えば情報処理装置１１ａ〜１１ｚが有するプロセッサである。また、情報処理装置１１ａ〜１１ｚが有する記憶部１３ａ〜１３ｚは、例えば情報処理装置１１ａ〜１１ｚが有するメモリまたはストレージ装置である。
【００２３】
〔第２の実施の形態〕
図２は、第２の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。コンピュータ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００２４】
メモリ１０２は、コンピュータ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に用いる各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００２５】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００２６】
ストレージ装置１０３は、内蔵した記憶媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）またはＳＳＤ（Solid State Drive）を使用することができる。
【００２７】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００２８】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００２９】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３０】
機器接続インタフェース１０７は、コンピュータ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３１】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３２】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した情報処理システム１０の複数の情報処理装置１１ａ〜１１ｚは、コンピュータ１００による物理サーバに構築された仮想化環境で稼働する複数の仮想サーバにより実現することができる。したがって、第１の実施の形態に示した情報処理システム１０の複数の情報処理装置１１ａ〜１１ｚが有する処理部１２ａ〜１２ｚは、プロセッサ１０１に相当し、記憶部１３ａ〜１３ｚは、メモリ１０２およびストレージ装置１０３に相当する。
【００３３】
図３は、第２の実施の形態に係るライセンス管理システムを示す構成図、図４は、サーバリンク情報の構成例を示す図、図５は、ライセンス管理情報の構成例を示す図である。ライセンス管理システム３０は、複数の仮想サーバ、すなわち、第１ないし第ｎ仮想サーバ３１〜３４を備えている。第１仮想サーバ３１（以下、サーバ１と言うことがある。）は、ネットワーク３５を介して、第２仮想サーバ３２（以下、サーバ２と言うことがある。）、第３仮想サーバ３３（以下、サーバ３と言うことがある。）、・・・、第ｎ仮想サーバ３４と接続されている。
【００３４】
この第１ないし第ｎ仮想サーバ３１〜３４は、それぞれ同じ構成を有している。したがって、ここでは、第１ないし第ｎ仮想サーバ３１〜３４の構成を、第１仮想サーバ３１の構成により代表して説明する。
【００３５】
第１仮想サーバ３１は、ソフトウェアの起動／停止を制御するソフトウェア制御部４１、仮想環境内のネットワーク３５を介して、他の仮想サーバとの通信を行う通信制御部４２、および、ライセンス管理を行うライセンス管理部５１を備えている。通信制御部４２は、また、物理サーバとしてのコンピュータ１００のネットワークインタフェース１０８にも接続されている。
【００３６】
ライセンス管理部５１は、２つの機能、すなわち、サーバ間のサーバリンク情報を管理するサーバリンク機能およびソフトウェアのライセンス情報を管理するライセンス管理機能を有している。
【００３７】
サーバリンク機能は、サーバリンク参照部４３、サーバリンク検査部４４、サーバリンク更新部４５およびサーバリンク情報格納部４６を備えている。このサーバリンク機能が管理するサーバリンク情報は、サーバリンク情報格納部４６に格納されており、例えば図４に示す情報を有している。すなわち、サーバリンク情報は、Ｃｕｒｒｅｎｔサーバ、起動順／ＩＰアドレス、Ｈｅａｄサーバ、Ｔａｉｌサーバ、ＰｒｅｖｉｏｕｓサーバおよびＮｅｘｔサーバの情報を有している。Ｃｕｒｒｅｎｔサーバの情報は、配備された自サーバのアドレス（ＩＰアドレス）を表すサーバ情報である。起動順／ＩＰアドレスの情報は、各サーバが起動された順序と各サーバのアドレス（ＩＰアドレス）とを表すサーバ情報である。Ｈｅａｄサーバの情報は、最初に起動されたサーバのアドレス（ＩＰアドレス）を表すサーバ情報である。Ｔａｉｌサーバの情報は、最後に起動されたサーバのアドレス（ＩＰアドレス）を表すサーバ情報である。Ｐｒｅｖｉｏｕｓサーバの情報は、自サーバの前に起動されたサーバのアドレス（ＩＰアドレス）を表すサーバ情報である。そして、Ｎｅｘｔサーバの情報は、自サーバの次に起動されたサーバのアドレス（ＩＰアドレス）を表すサーバ情報である。
【００３８】
なお、図４に例示したサーバリンク情報によれば、Ｃｕｒｒｅｎｔサーバの情報から自サーバがサーバ３であり、起動順／ＩＰアドレスの情報からは、自サーバが起動するまでにサーバ１およびサーバ２がこの順で起動していることが分かる。Ｈｅａｄサーバの情報からは、最初に起動されたサーバがサーバ１であり、Ｔａｉｌサーバの情報から最後に起動されたサーバがサーバ５であり、すでに５台サーバが起動していることが分かる。そして、ＰｒｅｖｉｏｕｓサーバおよびＮｅｘｔサーバの情報からは、自サーバの前後に起動されたサーバが、サーバ２およびサーバ４であることが分かる。
【００３９】
ライセンス管理部５１のサーバリンク機能において、サーバリンク参照部４３は、ライセンスチェック時にＨｅａｄサーバやＴａｉｌサーバなどのサーバ情報を参照する。サーバリンク検査部４４は、サーバリンク情報格納部４６に格納されている各サーバリンク情報のチェックを実施する。サーバリンク更新部４５は、サーバリンク情報に変更があった場合にサーバリンク情報を更新する。サーバリンク情報格納部４６は、各サーバ間のリンク情報を格納する。
【００４０】
一方、ライセンス管理部５１のライセンス管理機能は、ライセンス情報参照部４７、ライセンス情報検査部４８、ライセンス情報更新部４９およびライセンス管理情報格納部５０を備えている。ライセンス情報参照部４７は、ソフトウェア起動時にソフトウェアの保有ライセンスや割当て済みのライセンスなどの情報を参照する。ライセンス情報検査部４８は、ソフトウェア起動時にソフトウェアの保有ライセンスや割当て済みのライセンスなどの情報をチェックする。ライセンス情報更新部４９は、ソフトウェア起動時にソフトウェアの保有ライセンスや割当て済みのライセンスなどの情報を更新する。ライセンス管理情報格納部５０は、ソフトウェアの保有ライセンス、割当て済みのライセンスなどを管理し、ソフトウェアの保有ライセンスや割当て済みのライセンスなどの情報を格納している。
【００４１】
ライセンス管理情報格納部５０に格納されていてこのライセンス管理機能が管理するライセンス管理情報は、例えば図５に示す情報を有している。すなわち、ライセンス管理情報は、ソフトウェア名、保有ライセンス数、割当て済み数および当サーバ使用数の情報がソフトウェア別に管理されている。ここで、ライセンス管理情報のソフトウェア名は、管理対象のソフトウェアの名称である。保有ライセンス数は、管理対象のソフトウェアの保有ライセンス数である。割当て済み数は、管理対象のソフトウェアの割当て済みのライセンス数（プロセッサの割当て数）である。当サーバ使用数は、管理対象のソフトウェアの本サーバで使用するライセンス数である。
【００４２】
以下、このライセンス管理システムにおいて、ライセンス管理に係る各種処理について説明する。まず、新規にソフトウェアを起動した時の使用ライセンスの追加処理、更新処理および削除処理について説明する。
【００４３】
＜新規にソフトウェアを起動した時のライセンス管理処理＞
図６は、新規にソフトウェアを起動した時のライセンス追加処理の流れを示したライセンス情報の処理シーケンスを示す図、図７は、新規にソフトウェアを起動した時のライセンス追加処理の流れを例示した説明図である。なお、図６において、左側に示したサーバは、ＨｅａｄサーバからＴａｉｌサーバまでをまとめて表しており、中央に示したライセンス管理部は、それらサーバのライセンス管理部を表している。
【００４４】
まず、ライセンス管理システムとして、図７に示したように、サーバ１〜サーバ５がこの順序で起動している場合を例に説明する。このとき、最初に起動したサーバ１がＨｅａｄサーバ、最後に起動したサーバ５がＴａｉｌサーバとなる。ここで、サーバ４がソフトウェアＡを新規に起動するとする。また、このライセンス管理システムでは、ソフトウェアＡの保有ライセンス数が「２０」、サーバ４が起動した時点でのソフトウェアＡの割当て済み数が「８」であるとする。また、サーバ４での当サーバ使用数が「０」、サーバ４が新規に起動するソフトウェアＡのライセンス数が「２」であるとしている。
【００４５】
このライセンス追加処理は、サーバ４がソフトウェアＡを起動することによって開始される。サーバ４のライセンス管理部５１のサーバリンク参照部４３は、サーバリンク情報格納部４６に格納しているＨｅａｄサーバのアドレスを取得する。次に、サーバ４は、ソフトウェアＡが新規に２ライセンス起動することをＨｅａｄサーバに通知する。
【００４６】
このとき、Ｈｅａｄサーバでは、ライセンス管理情報格納部５０に格納されたソフトウェアＡの保有ライセンス数が「２０」、現時点でのソフトウェアＡの割当て済み数が「１０」であるとする。サーバ４から２ライセンスの新規使用の問い合せがあると、Ｈｅａｄサーバは、まず、ライセンス情報参照部４７がライセンス管理情報格納部５０の割当て済み数および当サーバ使用数を参照する。そして、割当て済み数および当サーバ使用数に基づいて、ライセンス情報検査部４８が使用ライセンス数の割当て可否を確認する。この例では、ソフトウェアＡの保有ライセンス数の「２０」と割当て済み数の「１０」と、要求ライセンス数の「２」とから、割当て済み数が「１２」に増えても保有ライセンス数の「２０」に達することはない。このため、Ｈｅａｄサーバは、要求ライセンス数の「２」が使用可能であると判断し、サーバ４に判断結果を通知する。次に、Ｈｅａｄサーバでは、ライセンス情報更新部４９がライセンス管理情報格納部５０の割当て済み数を「１２」に更新する。
【００４７】
一方、ライセンス使用可が通知されたサーバ４においては、ライセンス情報更新部４９がライセンス管理情報格納部５０の割当て済み数を「８」から「１０」に更新し、当サーバ使用数を「０」から「２」に更新する。
【００４８】
次に、サーバ４のライセンス管理部５１は、サーバリンク参照部４３がサーバリンク情報格納部４６に格納しているＮｅｘｔサーバのアドレスを取得し、Ｎｅｘｔサーバに割当て済み数の追加を通知する。
【００４９】
その後、Ｎｅｘｔサーバとして確認されたサーバでは、割当て済み数が「２」増えたことを通知され、自身のライセンス管理情報の割当て済み数を「２」だけ増やした値に更新する。この割当て済み数の更新処理は、ソフトウェアＡが新規に起動したサーバ４を起点にして後続のサーバに対して起動順にそれぞれ割当て済み数を「２」ずつ増やした値に順次更新する処理を繰り返し行う。
【００５０】
そして、ＮｅｘｔサーバとしてＴａｉｌサーバが確認されると、Ｔａｉｌサーバは、自身のライセンス管理情報の割当て済み数を「２」だけ増やした値に更新する。なお、図７に示す例では、サーバ４のＮｅｘｔサーバがＴａｉｌサーバであるので、Ｔａｉｌサーバの割当て済み数を「１０」から「１２」に更新した時点でこの使用ライセンスの追加処理は終了する。
【００５１】
次に、新規にソフトウェアを起動した時の使用ライセンスの更新処理について説明する。この更新処理は、あるサーバで新規にソフトウェアを起動したときに上記のようなライセンス追加処理が行われるが、新規にソフトウェアを追加することによってＨｅａｄサーバで管理されている割当て済み数が保有ライセンス数を超過する場合に行われる。この処理は、使用ライセンスの削除処理では、すべてのサーバが割当て済み数の更新処理は行わないために、Ｈｅａｄサーバで管理されている割当て済み数がその時点での真の割当て済み数ではない場合があることによる。このため、新規にソフトウェアを起動するときに、割当て済み数と要求ライセンスとの和が保有ライセンス数を超過する場合、システムとして最新の割当て済み数にするべく、割当て済み数の更新処理を一括して行うようにしている。この更新処理で、割当て済み数が削減されると、保有ライセンス数の範囲内でのライセンスの追加が可能になる。
【００５２】
図８は、新規にソフトウェアを起動した時のライセンス更新処理の流れを示したライセンス情報の処理シーケンスを示す図、図９は、新規にソフトウェアを起動した時のライセンス更新処理の流れを例示した説明図である。
【００５３】
ここで、ライセンス管理システムでは、ソフトウェアＡの保有ライセンス数および割当て済み数がともに「２０」であるとする。サーバ４がソフトウェアＡを新規に起動し、２ライセンスを要求した場合について説明する。
【００５４】
このライセンス更新処理は、サーバ４にてソフトウェアＡが起動することによって開始される。サーバ４のライセンス管理部５１のサーバリンク参照部４３は、サーバリンク情報格納部４６に格納しているＨｅａｄサーバのアドレスを取得する。次に、サーバ４は、ソフトウェアＡが新規に２ライセンス起動することをＨｅａｄサーバに通知する。
【００５５】
サーバ４から問い合せを受けたＨｅａｄサーバでは、そのライセンス情報参照部４７がライセンス管理情報格納部５０の割当て済み数および当サーバ使用数を参照し、ライセンス情報検査部４８が使用ライセンス数の割当て可否を確認する。この例では、すでに割当て済み数が保有ライセンス数に達しているので、ライセンス情報検査部４８は、ライセンス使用不可と判断する。このライセンス使用不可の判断結果は、ソフトウェアＡが起動したサーバ４に通知される。これにより、サーバ４では、ソフトウェア制御部４１がソフトウェアＡの使用を保留する。
【００５６】
次に、Ｈｅａｄサーバでは、ライセンス情報参照部４７がライセンス管理情報格納部５０の当サーバ使用数を取得し、サーバリンク参照部４３がＮｅｘｔサーバのサーバリンク情報を取得する。取得した当サーバ使用数は、取得したＮｅｘｔサーバ、図示の例では、サーバ２に通知される。
【００５７】
サーバ２では、ライセンス情報参照部４７がライセンス管理情報格納部５０の当サーバ使用数を取得し、ライセンス情報更新部４９が当サーバ使用数とＨｅａｄサーバの当サーバ使用数との和の数で割当て済み数を更新（最新化）する。次に、サーバリンク参照部４３がＮｅｘｔサーバのサーバリンク情報を取得し、サーバ２の当サーバ使用数をＮｅｘｔサーバに通知する。
【００５８】
次に、サーバ３では、同様にして、サーバ２から通知された当サーバ使用数とサーバ３の当サーバ使用数との和の数でサーバ３の割当て済み数を更新（最新化）し、サーバ３の当サーバ使用数をサーバ３のＮｅｘｔサーバに通知する。
【００５９】
この割当て済み数の更新（最新化）は、サーバ２からＴａｉｌサーバまで順次実施されていく。
Ｔａｉｌサーバは、割当て済み数の更新が行われると、その割当て済み数は、ソフトウェアＡの総割当て済み数に最新化される。次に、Ｔａｉｌサーバは、サーバリンク参照部４３がＨｅａｄサーバのサーバリンク情報を取得し、更新されたＴａｉｌサーバの割当て済み数をＨｅａｄサーバに通知する。これにより、Ｈｅａｄサーバは、全サーバそれぞれの割り当て済みライセンス数の合計値を取得することができる。
【００６０】
Ｈｅａｄサーバでは、ライセンス情報更新部４９がライセンス管理情報格納部５０の割当て済み数をＴａｉｌサーバから通知された割当て済み数で更新（最新化）する。その後、Ｈｅａｄサーバは、サーバ４が要求していたライセンス数の割当て可否を確認し、割当て可能と判断した場合にサーバ４にライセンス使用可になったことを通知する。
【００６１】
この新規にソフトウェアを起動した時のライセンス更新処理によれば、Ｈｅａｄサーバの割当て済み数のライセンス情報と要求ライセンスとの和が保有ライセンス数を超過した場合、割当て済み数で更新処理が行われる。これにより、例えばライセンスの削除の処理結果が、Ｈｅａｄサーバの割当て済み数に反映されていない場合に、最新化により、Ｈｅａｄサーバの割当て済み数を最新にして、ライセンス数の割当て可否が再確認される。これにより、使用ライセンスの削除の処理のたびに、Ｈｅａｄサーバの割当て済み数を更新しなくてもよくなる。使用ライセンスの削除の際のＨｅａｄサーバの割当て済み数の更新処理を省略すれば、ライセンスを削除したときの処理量を削減することができる。
【００６２】
次に、起動しているソフトウェアを停止する時の使用ライセンスの削除処理について説明する。以下の説明では、使用ライセンスの削除処理時に、ＨｅａｄサーバとＴａｉｌサーバとの割当て済み数を更新するものとする。
【００６３】
図１０は、ソフトウェアを停止した時のライセンス削除処理の流れを示したライセンス情報の処理シーケンスを示す図、図１１は、ソフトウェアを停止した時のライセンス削除処理の流れを例示した説明図である。
【００６４】
ここで、ライセンス管理システムでは、ソフトウェアＢの保有ライセンス数が「２０」、割当て済み数が「１７」であるとする。サーバ４では、そのライセンス情報の割当て済み数が「１５」、当サーバ使用数が「４」であるときに、ソフトウェアＢの２ライセンスを削減する場合について説明する。
【００６５】
このライセンス削除処理は、サーバ４にてソフトウェアＢが停止することによって開始される。サーバ４のライセンス管理部５１のライセンス情報更新部４９がライセンス管理情報格納部５０の割当て済み数および当サーバ使用数を更新する。図示の例では、割当て済み数は、「１５」から「１３」に削減され、当サーバ使用数は、「４」から「２」に削減されている。
【００６６】
次に、サーバ４は、サーバリンク参照部４３がサーバリンク情報格納部４６に格納されているＨｅａｄサーバのサーバリンク情報を取得する。次に、サーバ４は、Ｈｅａｄサーバにアクセスし、ソフトウェアＢの削減数を通知する。
【００６７】
次に、サーバ４のライセンス管理部５１は、サーバリンク参照部４３がサーバリンク情報格納部４６に格納しているＮｅｘｔサーバのアドレスを取得し、Ｎｅｘｔサーバに割当て済み数の削減を通知する。
【００６８】
その後、Ｎｅｘｔサーバとして確認されたサーバでは、割当て済み数が「２」減ったことを通知され、自身のライセンス管理情報の割当て済み数を「２」だけ減らした値に更新する。この割当て済み数の更新処理は、ソフトウェアＢを停止したサーバ４を起点にして後続のサーバに対して起動順にそれぞれ割当て済み数を「２」ずつ減らした値に順次更新する処理を繰り返し行う。
【００６９】
Ｈｅａｄサーバでは、ライセンス情報更新部４９がライセンス管理情報格納部５０の割当て済み数を更新する。図示の例では、Ｈｅａｄサーバで管理されている割当て済み数が「１７」であるので、「１５」に削減されることになる。
【００７０】
次に、Ｈｅａｄサーバは、サーバリンク参照部４３によってＴａｉｌサーバのサーバリンク情報を取得し、更新された割当て済み数をＴａｉｌサーバに通知する。
次に、Ｈｅａｄサーバから更新情報が通知されたＴａｉｌサーバは、ライセンス情報更新部４９がライセンス管理情報格納部５０の割当て済み数を更新する。図示の例では、Ｈｅａｄサーバで更新された割当て済み数が「１５」であるので、Ｔａｉｌサーバの割当て済み数も、そのまま「１５」に更新される。
【００７１】
このソフトウェアを停止した時のライセンス削除処理によれば、ソフトウェアを停止したサーバ、ＨｅａｄサーバおよびＴａｉｌサーバだけしか更新しないので、ライセンス削除処理を短時間で終了させることができる。
【００７２】
次に、サーバの構成が変更されたときの処理について説明する。
＜新規にサーバを追加した時のサーバリンク情報の処理＞
図１２は、新規にサーバを追加した時のサーバリンク情報の処理の流れを示したフローチャート、図１３は、Ｈｅａｄサーバのサーバリンク情報の初期設定の例を示す図である。
【００７３】
［ステップＳ１１］例えばオペレータによって、新規にサーバが起動された場合、起動されたサーバ（起動サーバ）は、同報送信により問い合せをし、応答があるかどうかによって、最初の起動サーバであるかどうかを判断する。起動サーバが最初の起動サーバである場合、処理は、ステップＳ１２に進み、すでに１以上のサーバが稼働している場合、処理は、ステップＳ１３に進む。
【００７４】
［ステップＳ１２］起動されたサーバが最初の起動サーバの場合、起動サーバは、自サーバをＨｅａｄサーバとしてサーバリンク情報を初期設定する。Ｈｅａｄサーバとしてのサーバリンク情報は、例えば、図１３に示した情報が設定される。すなわち、ＣｕｒｒｅｎｔサーバおよびＨｅａｄサーバには、自サーバ（サーバ１）を設定し、起動順番は、「１」とする。Ｔａｉｌサーバ、ＰｒｅｖｉｏｕｓサーバおよびＮｅｘｔサーバには、それぞれ０（初期値）を設定する。
【００７５】
［ステップＳ１３］起動サーバは、問い合せに対する応答があった任意のサーバにアクセスする。
［ステップＳ１４］任意のサーバは、サーバリンク情報格納部４６からＨｅａｄサーバのアドレスを取得し、起動サーバに返す。
【００７６】
［ステップＳ１５］起動サーバは、任意のサーバから取得したサーバリンク情報からＨｅａｄサーバにアクセスし、Ｔａｉｌサーバのアドレスを取得する。
［ステップＳ１６］起動サーバは、Ｔａｉｌサーバにアクセスし、起動サーバが新Ｔａｉｌサーバになることを通知する。
【００７７】
［ステップＳ１７］通知を受けたＴａｉｌサーバは、ＮｅｘｔサーバおよびＴａｉｌサーバのサーバリンク情報をそれぞれ起動サーバに更新する。
［ステップＳ１８］起動サーバは、自サーバを新Ｔａｉｌサーバとして設定する。
【００７８】
［ステップＳ１９］起動サーバは、Ｈｅａｄサーバに通知し、Ｈｅａｄサーバは、Ｔａｉｌサーバのサーバリンク情報を起動サーバに更新する。
図１４は、新規にサーバを追加した時のサーバリンク情報の更新処理の流れを例示した説明図である。図示の例では、４台のサーバ（サーバ１〜４）が稼働しているところに新規にサーバ５を起動した場合を示している。この場合、サーバ５は、任意のサーバ（ここでは、サーバ２）にアクセスしてＨｅａｄサーバ（サーバ１）のアドレスを取得する。次に、サーバ５は、Ｈｅａｄサーバ（サーバ１）にアクセスしてＴａｉｌサーバ（サーバ４）のアドレスを取得する。
【００７９】
次に、サーバ５は、Ｔａｉｌサーバ（サーバ４）にアクセスしてサーバ５がＴａｉｌサーバになることを通知する。次に、Ｔａｉｌサーバ（サーバ４）は、サーバリンク情報を更新する。すなわち、Ｔａｉｌサーバ（サーバ４）は、そのＮｅｘｔサーバおよびＴａｉｌサーバのサーバリンク情報をそれぞれサーバ５に設定する。
【００８０】
次に、サーバ５は、Ｔａｉｌサーバとしての設定をする。すなわち、サーバ５は、Ｔａｉｌサーバのサーバリンク情報をサーバ５に設定し、Ｐｒｅｖｉｏｕｓサーバのサーバリンク情報をサーバ４に設定する。また、サーバ５は、Ｃｕｒｒｅｎｔサーバのサーバリンク情報をサーバ５に設定し、起動順のサーバリンク情報には、サーバ４から取得したサーバリンク情報に起動順およびサーバ５の情報を追加する。
【００８１】
最後に、サーバ５のＴａｉｌサーバのサーバリンク情報がＨｅａｄサーバ（サーバ１）に通知され、Ｈｅａｄサーバ（サーバ１）では、Ｔａｉｌサーバのサーバリンク情報がサーバ５に更新される。これにより、稼働しているすべてのサーバには、新規に起動したサーバを含めたサーバリンク情報が作成される。
【００８２】
なお、以上の説明は、３番目以降に新規に起動したサーバの場合についてのものであるが、２番目に新規に起動したサーバの場合は、図１２のステップＳ１５〜Ｓ１７の処理が不要になる。すなわち、起動サーバは、Ｔａｉｌサーバとしての設定をし、Ｈｅａｄサーバ（サーバ１）は、そのＴａｉｌサーバのサーバリンク情報が「０」であるため、ＴａｉｌサーバとＮｅｘｔサーバのサーバリンク情報に起動サーバのアドレスを設定する。
【００８３】
次に、稼働中のサーバを停止する時のサーバリンク情報の処理について説明する。
＜稼働中のサーバを停止する時のサーバリンク情報の処理＞
図１５は、稼働中サーバを停止する時のサーバリンク情報の処理の流れを示したフローチャートである。
【００８４】
［ステップＳ２１］停止しようとするサーバは、自身のサーバリンク情報からＰｒｅｖｉｏｕｓサーバとＮｅｘｔサーバのアドレスを検知して自サーバの停止をそれぞれのサーバに通知する。
【００８５】
［ステップＳ２２］Ｐｒｅｖｉｏｕｓサーバは、そのサーバリンク情報のＮｅｘｔサーバを停止しようとするサーバのＮｅｘｔサーバに更新する。
［ステップＳ２３］Ｎｅｘｔサーバは、そのサーバリンク情報のＰｒｅｖｉｏｕｓサーバを停止しようとするサーバのＰｒｅｖｉｏｕｓサーバに更新する。
【００８６】
［ステップＳ２４］停止しようとするサーバは、自身のサーバリンク情報からＨｅａｄサーバのアドレスを検知してアクセスし、当サーバ使用数を通知する。
［ステップＳ２５］Ｈｅａｄサーバは、そのライセンス管理情報の割当て済み数を停止しようとするサーバの当サーバ使用数を差し引いた数に更新する。
【００８７】
［ステップＳ２６］Ｈｅａｄサーバは、そのサーバリンク情報からＴａｉｌサーバのアドレスを検知してＴａｉｌサーバにアクセスし、更新された割当て済み数を通知する。
［ステップＳ２７］Ｔａｉｌサーバは、そのライセンス管理情報の割当て済み数を通知された割当て済み数に更新する。
【００８８】
図１６は、稼働中のサーバを停止する時のサーバリンク情報の更新処理の流れを例示した説明図である。図示の例では、稼働している４台のサーバ（サーバ１〜４）のうち、サーバ３が停止する場合を示している。この場合、サーバ３は、起動順で前後のサーバ（ＰｒｅｖｉｏｕｓサーバおよびＮｅｘｔサーバ）のサーバリンク情報およびライセンス管理情報と、Ｈｅａｄサーバのライセンス管理情報とを変更する。
【００８９】
そのために、まず、停止するサーバ３は、そのサーバリンク情報からＰｒｅｖｉｏｕｓサーバとＮｅｘｔサーバのアドレスを検知する。次に、サーバ３は、Ｐｒｅｖｉｏｕｓサーバ（サーバ２）にアクセスし、サーバ２のＮｅｘｔサーバがサーバ３のＮｅｘｔサーバ（サーバ４）になることを通知する。サーバ２は、その通知を受けて、サーバリンク情報のＮｅｘｔサーバをサーバ４に更新する。
【００９０】
次に、サーバ３は、Ｎｅｘｔサーバ（サーバ４）にアクセスし、サーバ３が停止することを通知する。サーバ４は、その通知を受けて、サーバリンク情報のＰｒｅｖｉｏｕｓサーバをサーバ２に更新し、サーバリンク情報の起動順の情報からサーバ３の情報を削除する。
【００９１】
次に、サーバ３は、そのサーバリンク情報からＨｅａｄサーバのアドレスを検知し、Ｈｅａｄサーバにアクセスして、停止するサーバ３におけるライセンス管理情報のソフトウェアＡの当サーバ使用数を通知する。Ｈｅａｄサーバは、この通知を受けて、ライセンス管理情報のソフトウェアＡの割当て済み数を更新する。図示の例では、Ｈｅａｄサーバの割当て済み数が「１２」であり、停止するサーバ３の当サーバ使用数が「２」であることから、Ｈｅａｄサーバの割当て済み数は、「１０」に更新される。
【００９２】
次に、Ｈｅａｄサーバは、そのサーバリンク情報からＴａｉｌサーバのアドレスを検知し、Ｔａｉｌサーバにアクセスして、Ｈｅａｄサーバの更新された割当て済み数の「１０」を通知する。Ｔａｉｌサーバ（サーバ４）は、その通知を受けて、サーバ４の割当て済み数を「１０」に更新する。
【００９３】
これにより、停止するサーバ３を除いたすべてのサーバのサーバリンク情報およびライセンス管理情報が再構成され、サーバ３のサーバリンク情報が設定されたサーバは、存在しなくなり、サーバ３の停止の準備が整ったことになる。
【００９４】
次に、サーバに異常が発生していることを判明した場合に、正常に稼働しているサーバのサーバリンク情報およびライセンス管理情報を修復する手順について説明する。このサーバリンク情報およびライセンス管理情報の修復は、サーバが起動順にリンクされ、かつ、起動順に情報を累積する構成を利用している。すなわち、サーバリンク情報は、最初に起動したＨｅａｄサーバから起動順で最後に稼働したＴａｉｌサーバまでをＰｒｅｖｉｏｕｓサーバとＮｅｘｔサーバという形式で数珠つなぎ式に形成されている。また、起動サーバの情報は、サーバが起動した順番に累積して格納される。これらの管理情報は、ＨｅａｄサーバとＴａｉｌサーバの両方に格納している。このため、サーバリンク内のいずれかのサーバで異常が発生した場合、数珠つなぎ式に格納したサーバリンク情報およびライセンス管理情報をもとにこれらの情報を復元することになる。
【００９５】
なお、サーバリンク情報およびライセンス管理情報の修復処理は、例えば保有ライセンス数を超えるライセンス数の使用要求があったタイミングで実施される。また、サーバの異常は、サーバリンク内のいずれかのサーバから何らかのアクセスがあった際に応答がないことによって発見されることもある。
【００９６】
＜ＨｅａｄサーバおよびＴａｉｌサーバ以外のサーバで異常が発生した場合の処理＞
図１７は、ＨｅａｄサーバおよびＴａｉｌサーバ以外の中間のサーバで異常が発生した場合のサーバリンク修復処理の流れを示したフローチャートである。このサーバリンク修復処理は、例えば異常が発生したサーバ（以下、異常サーバという）にアクセスしたサーバがサーバの稼働を確認できなかった場合に開始される。
【００９７】
［ステップＳ３１］異常サーバを検出したサーバは、自身のサーバリンク情報からＴａｉｌサーバのアドレスを取得し、Ｔａｉｌサーバにアクセスし、サーバリンクの修復を要求する。
【００９８】
［ステップＳ３２］Ｔａｉｌサーバは、自身のサーバリンク情報からＰｒｅｖｉｏｕｓサーバのアドレスを取得し、ＰｒｅｖｉｏｕｓサーバにアクセスしてＰｒｅｖｉｏｕｓサーバの稼働を確認する。
【００９９】
［ステップＳ３３］Ｔａｉｌサーバよりも起動順で１つ前のサーバは、自身のサーバリンク情報からＰｒｅｖｉｏｕｓサーバのアドレスを取得し、ＰｒｅｖｉｏｕｓサーバにアクセスしてＰｒｅｖｉｏｕｓサーバの稼働を確認する。
【０１００】
［ステップＳ３４］Ｐｒｅｖｉｏｕｓサーバにアクセスしたサーバは、異常サーバが確認されたかどうかを判断する。サーバの稼働を確認できた場合、処理は、ステップＳ３３に戻る。これは、ＰｒｅｖｉｏｕｓサーバにアクセスしてＰｒｅｖｉｏｕｓサーバの稼働を確認するという処理が起動順をさかのぼって順次実施され、異常サーバが確認されるまで、繰り返される。異常サーバが確認された場合、異常サーバを確認したサーバは、Ｔａｉｌサーバに通知して、処理をステップＳ３５に進める。
【０１０１】
［ステップＳ３５］Ｔａｉｌサーバは、その起動順のスタック情報から異常サーバの前に起動したサーバを確認する。
［ステップＳ３６］Ｔａｉｌサーバは、異常サーバの前に起動したサーバにアクセスして、そのサーバの稼働を確認し、起動順で次のサーバが異常サーバであることを通知する。
【０１０２】
［ステップＳ３７］異常サーバの前に起動したサーバは、自身のサーバリンク情報のＮｅｘｔサーバを、異常サーバの次に起動したサーバに更新し、異常サーバの次に起動したサーバに通知する。
【０１０３】
［ステップＳ３８］異常サーバの次に起動したサーバ（異常サーバを確認したサーバ）は、自身のサーバリンク情報のＰｒｅｖｉｏｕｓサーバを、異常サーバの前に起動したサーバに更新する。
【０１０４】
［ステップＳ３９］異常サーバの前に起動したサーバは、自身のサーバリンク情報からＰｒｅｖｉｏｕｓサーバのアドレスを取得し、ＰｒｅｖｉｏｕｓサーバにアクセスしてＰｒｅｖｉｏｕｓサーバの稼働を確認する。
【０１０５】
［ステップＳ４０］稼働確認が行われたサーバは、自身のサーバリンク情報からＰｒｅｖｉｏｕｓサーバのアドレスを取得し、そのアドレスが初期値の「０」であるかどうかにより、Ｈｅａｄサーバを検出したかどうかを判断する。Ｈｅａｄサーバが検出されない場合、処理は、ステップＳ３９に戻される。このサーバリンクをさらにさかのぼってサーバの稼働を確認するステップＳ３９およびステップＳ４０の処理は、Ｈｅａｄサーバが検出されるまで、繰り返される。
【０１０６】
［ステップＳ４１］異常サーバを検出したサーバは、異常サーバ以降に起動したサーバのサーバリンク情報の中で、起動順のスタック情報から異常サーバの情報を削除する。その異常サーバの情報の削除は、Ｔａｉｌサーバがその起動順のスタック情報から異常サーバの情報を削除するまで順次繰り返し行われる。
【０１０７】
［ステップＳ４２］Ｔａｉｌサーバは、起動順のスタック情報をＨｅａｄサーバに送信し、Ｈｅａｄサーバは、そのＴａｉｌサーバの起動順のスタック情報を自身の起動順のスタック情報に反映させる。
【０１０８】
図１８は、ＨｅａｄサーバおよびＴａｉｌサーバ以外の中間のサーバで異常が発生した場合のサーバリンク修復処理の流れを例示した説明図である。図示の例では、稼働している５台のサーバ（サーバ１〜５）のうち、サーバ３が異常となった場合を示している。また、このサーバ３の異常は、例えばサーバ２がサーバ３にアクセスしたときにサーバ３の稼働を確認することができないことによって検知される。この場合、サーバ２は、自身のサーバリンク情報からＴａｉｌサーバのアドレスを取得し、Ｔａｉｌサーバに異常サーバの存在を通知する。
【０１０９】
次に、Ｔａｉｌサーバ（サーバ５）は、自身のサーバリンク情報からＰｒｅｖｉｏｕｓサーバ（サーバ４）のアドレスを取得し、Ｐｒｅｖｉｏｕｓサーバ（サーバ４）にアクセスしてＰｒｅｖｉｏｕｓサーバ（サーバ４）の稼働を確認する。
【０１１０】
次に、サーバ４においても、自身のサーバリンク情報からＰｒｅｖｉｏｕｓサーバ（サーバ３）のアドレスを取得し、Ｐｒｅｖｉｏｕｓサーバ（サーバ３）にアクセスしてＰｒｅｖｉｏｕｓサーバ（サーバ３）の稼働を確認する。
【０１１１】
この場合、サーバ４は、サーバ３の稼働を確認することができないので、自身のサーバリンク情報からＴａｉｌサーバのアドレスを取得し、Ｔａｉｌサーバにサーバ３の異常を通知する。
【０１１２】
次に、Ｔａｉｌサーバは、起動順のスタック情報から異常となっているサーバ３のＰｒｅｖｉｏｕｓサーバがサーバ２であることを求め、サーバ２にアクセスしてサーバ２の稼働を確認し、Ｎｅｘｔサーバがサーバ４であることを通知する。
【０１１３】
サーバ２は、サーバリンク情報のＮｅｘｔサーバをサーバ４に更新し、サーバ４に通知する。通知を受けたサーバ４は、Ｐｒｅｖｉｏｕｓサーバをサーバ２に更新する。
次に、サーバ２は、そのＰｒｅｖｉｏｕｓサーバであるサーバ１にアクセスする。サーバ１では、Ｐｒｅｖｉｏｕｓサーバが初期値の「０」に設定されているので、ＴａｉｌサーバからＨｅａｄサーバへたどってサーバリンク情報を修復する作業は終了する。
【０１１４】
ただ、異常サーバ（サーバ３）以降の起動順のスタック情報には、サーバ３の情報が残っている。このため、まず、サーバ４がその起動順のスタック情報からサーバ３の情報を削除し、サーバ５（Ｔａｉｌサーバ）がその起動順のスタック情報からサーバ３の情報を削除する。
【０１１５】
最後に、Ｔａｉｌサーバは、その起動順のスタック情報をＨｅａｄサーバに通知し、Ｈｅａｄサーバは、その起動順のスタック情報をＴａｉｌサーバの起動順のスタック情報に更新し、起動順の最新情報をＨｅａｄサーバとＴａｉｌサーバとで共有する。
【０１１６】
図１９は、ＨｅａｄサーバおよびＴａｉｌサーバ以外の中間のサーバで異常が発生した場合のライセンス情報修復処理の流れを例示した説明図である。このライセンス情報の修復は、上記のサーバリンクの修復に合わせて実施される。
【０１１７】
すなわち、ライセンス情報の修復は、サーバ３で異常が発生した場合、サーバ２の割当て済み数に基づいて、サーバ３より後に起動されたサーバの割当て済み数を、リンクをたどりながらそれぞれサーバ３の使用ライセンス数（当サーバ使用数）だけ減らしていく。
【０１１８】
ここで、サーバ２の割当て済み数が「４」、サーバ３の使用ライセンス数が「３」、サーバ４の使用ライセンス数が「３」、サーバ５の使用ライセンス数が「２」だとする。サーバ３に異常が発生したことによりＮｅｘｔサーバをサーバ４に更新したサーバ２は、サーバ４に、サーバ２の割当て済み数の「４」を送信する。サーバ４は、サーバ４の割当て済み数を、サーバ２の割当て済み数の「４」とサーバ４の使用ライセンス数の「３」との和「７」に更新する。そしてサーバ４は、更新後のサーバ４の割当て済み数の「７」を、サーバ５に送信する。サーバ５は、サーバ５の割当て済み数を、サーバ４の割当て済み数の「７」とサーバ５の使用ライセンス数の「２」との和「９」に更新する。そしてサーバ５は、更新後のサーバ５の割当て済み数の「９」を、Ｈｅａｄサーバであるサーバ１に送信する。サーバ１は、サーバ５の割当て済み数の「９」を、サーバ１の割当て済み数に設定する。これにより、ＨｅａｄサーバとＴａｉｌサーバとでライセンスの最新情報が共有される。
【０１１９】
次に、Ｔａｉｌサーバで異常が発生した場合の処理について説明する。
＜Ｔａｉｌサーバで異常が発生した場合の処理＞
図２０は、Ｔａｉｌサーバで異常が発生した場合の処理の流れを示した処理シーケンスを示す図、図２１は、Ｔａｉｌサーバで異常が発生した場合の処理の流れを例示した説明図である。
【０１２０】
Ｔａｉｌサーバで異常が発生した場合には、ＨｅａｄサーバからＮｅｘｔサーバの稼働を起動順にたどって確認していき、Ｔａｉｌサーバの直前に起動したサーバをＴａｉｌサーバに設定する処理をすることになる。
【０１２１】
すなわち、図２０に示したように、まず、異常サーバを検出したサーバは、Ｈｅａｄサーバを確認して、ＨｅａｄサーバからＴａｉｌサーバのアドレスを取得する。次に、Ｔａｉｌサーバにアクセスして、Ｔａｉｌサーバが稼働していないことを確認する。
【０１２２】
次に、ＨｅａｄサーバのＮｅｘｔサーバを確認して、ＨｅａｄサーバからＮｅｘｔサーバのアドレスを取得する。以下、Ｎｅｘｔサーバの稼働を確認して、そのサーバからＮｅｘｔサーバのアドレスを取得するという処理を繰り返していくことで、Ｈｅａｄサーバから稼働しているサーバを起動順に確認していく。
【０１２３】
最後に、Ｔａｉｌサーバの直前に起動したサーバをＴａｉｌサーバに設定する。
このように、Ｔａｉｌサーバで異常が発生した場合、Ｔａｉｌサーバの直前に起動したサーバのライセンス情報には、Ｔａｉｌサーバが起動する前のライセンス情報がすべて格納されているため、ライセンス情報の修復処理は不要である。
【０１２４】
Ｔａｉｌサーバで異常が発生した場合の具体的な処理の例を図２１に示す。ここでは、サーバ４がＴａｉｌサーバであり、そのＴａｉｌサーバで異常が発生したとし、Ｔａｉｌサーバの異常発生は、新規にサーバを追加するときに、Ｔａｉｌサーバを確認するときに検出される場合を示している。
【０１２５】
まず、新規サーバは、任意のサーバに問い合せをしてＨｅａｄサーバのアドレスを取得し、Ｈｅａｄサーバにアクセスする。新規サーバは、Ｈｅａｄサーバから取得したＴａｉｌサーバ（サーバ４）にアクセスするが稼働を確認することができない。
【０１２６】
次に、Ｈｅａｄサーバからサーバ２へ、サーバ２からサーバ３へと起動順にサーバの稼働を順次確認していくことにより、サーバ４が異常サーバであり、サーバ３がリンクで繋がっている最後のサーバであることが確認される。
【０１２７】
次に、新規サーバは、サーバ３にアクセスし、サーバ３は、自身のＮｅｘｔサーバを「０」に更新し、サーバ３のＴａｉｌサーバにサーバ３を設定して、サーバリンクを修復する。最後に、サーバ１は、サーバリンク情報のＴａｉｌサーバをサーバ３に更新する。
【０１２８】
次に、Ｈｅａｄサーバで異常が発生した場合の処理について説明する。
＜Ｈｅａｄサーバで異常が発生した場合の処理＞
図２２は、Ｈｅａｄサーバで異常が発生した場合の処理の流れを示した処理シーケンスを示す図である。Ｈｅａｄサーバの異常は、他のサーバからアクセスできなくなることによって検出される。
【０１２９】
この場合、Ｈｅａｄサーバの異常を検出したサーバは、任意のサーバからＨｅａｄサーバのアドレスを取得し、ＨｅａｄサーバにアクセスしてＨｅａｄサーバが稼働していないことを確認する。Ｈｅａｄサーバの異常を検出したサーバは、任意のサーバからＮｅｘｔサーバのアドレスを取得し、任意のサーバの次に起動したサーバの稼働を確認する。このＮｅｘｔサーバの稼働の確認は、ＮｅｘｔサーバとしてＴａｉｌサーバの稼働確認が行われるまで繰り返し行われる。
【０１３０】
Ｔａｉｌサーバの稼働確認まで進んだら、Ｔａｉｌサーバは、そのサーバリンク情報の起動順のスタック情報から２番目に起動したサーバ（サーバ２）を取得し、そのサーバ２に、Ｈｅａｄサーバの異常の発生を通知する。
【０１３１】
Ｈｅａｄサーバの異常が通知されたサーバ２は、Ｈｅａｄサーバとしての設定を行う。次に、新Ｈｅａｄサーバ以降の情報、すなわち、サーバリンク情報の起動順、Ｈｅａｄサーバ、Ｐｒｅｖｉｏｕｓサーバと、ライセンス管理情報の割当て済み数をそれぞれ起動順に更新する。
【０１３２】
次に、Ｔａｉｌサーバの情報の更新が終わると、Ｔａｉｌサーバは、そのライセンス管理情報の割当て済み数を新Ｈｅａｄサーバに通知する。新Ｈｅａｄサーバは、新Ｈｅａｄサーバのライセンス管理情報の割当て済み数を、通知されたＴａｉｌサーバの割当て済み数に更新する。
【０１３３】
次に、ＨｅａｄサーバとＴａｉｌサーバの両方が異常になった場合の処理について説明する。
＜ＨｅａｄサーバとＴａｉｌサーバの両方で異常が発生した場合の処理＞
図２３は、ＨｅａｄサーバとＴａｉｌサーバの両方で異常が発生した場合の処理の流れを示した処理シーケンスを示す図、図２４は、ＨｅａｄサーバとＴａｉｌサーバの両方で異常が発生した場合の処理の流れを例示した説明図である。
【０１３４】
あるサーバが任意のサーバにアクセスし、任意のサーバからそのサーバリンク情報を取得し、その取得したサーバリンク情報をもとにＨｅａｄサーバにアクセスする。その結果、Ｈｅａｄサーバが稼働していないことが検出されると、Ｈｅａｄサーバに異常が発生したと判断される。また、あるサーバが取得したサーバリンク情報をもとにＴａｉｌサーバにアクセスした結果、Ｔａｉｌサーバが稼働していないことが検出されると、Ｔａｉｌサーバに異常が発生したと判断される。
【０１３５】
このように、ＨｅａｄサーバとＴａｉｌサーバの両方で異常が発生した場合には、サーバリンク情報を提供したサーバから、そのサーバリンク情報のＮｅｘｔサーバにもとづいて起動順にサーバの稼働を確認していく。Ｎｅｘｔサーバにもとづきアクセスしたサーバの稼働を確認できなくなると、サーバリンク情報の最後尾のサーバが検出される。その最後尾のサーバは、Ｔａｉｌサーバとして設定される。
【０１３６】
次に、サーバリンク情報を提供したサーバから、サーバリンク情報のＰｒｅｖｉｏｕｓサーバにもとづいて起動順をさかのぼってサーバの稼働を順次確認していく。最後に稼働が確認されたサーバがＨｅａｄサーバとして設定される。そして、新Ｈｅａｄサーバから新Ｔａｉｌサーバに向かってＨｅａｄサーバおよびＮｅｘｔサーバの情報が新Ｈｅａｄサーバおよび新Ｎｅｘｔサーバの情報に順次更新されていく。
【０１３７】
このようにして新Ｈｅａｄサーバから新Ｔａｉｌサーバまでサーバリンク情報が復元される。新Ｈｅａｄサーバと新Ｔａｉｌサーバとは、図９に示した割り当て済み数の更新（最新化）処理を行い、各サーバの割当て済み数の合計値を取得し、自装置の割当て済み数として設定する。
【０１３８】
ＨｅａｄサーバとＴａｉｌサーバの両方で異常が発生した場合の具体的な処理の例を図２４に示す。ここでは、サーバ５がＴａｉｌサーバであり、そのＴａｉｌサーバで異常が発生し、かつ、Ｈｅａｄサーバでも異常が発生したとし、これらの異常が新規にサーバを追加する場合に、ＴａｉｌサーバとＨｅａｄサーバを確認するときに検出される場合を例示している。
【０１３９】
まず、新規サーバは、任意のサーバ（ここでは、サーバ３）に問い合せをしてＨｅａｄサーバのアドレスを取得し、Ｈｅａｄサーバにアクセスする。しかし、Ｈｅａｄサーバの稼働を確認できないので、次に、新規サーバは、サーバ３から取得したＴａｉｌサーバのアドレスをもとにＴａｉｌサーバにアクセスする。しかし、ここでも、Ｔａｉｌサーバの稼働を確認できない。
【０１４０】
このような場合、新規サーバは、問い合せをしたサーバ３の次に起動したサーバ４の稼働を確認し、サーバ４は、次に起動したサーバ５の稼働を確認しようとする。サーバ４は、サーバ５の稼働を確認できないので、Ｔａｉｌサーバに設定される。
【０１４１】
新規サーバは、また、問い合せをしたサーバ３の前に起動したサーバ２の稼働を確認し、サーバ２は、その前に起動したサーバ１の稼働を確認しようとする。サーバ２は、サーバ１の稼働を確認できないので、Ｈｅａｄサーバに設定される。
【０１４２】
なお、ＨｅａｄサーバとＴａｉｌサーバの両方で異常が発生した場合に、ＨｅａｄサーバとＴａｉｌサーバの直近に起動されたサーバを検知する方法として、上記の方法では、サーバリンクをたどっていくことによって検出している。しかし、ＨｅａｄサーバとＴａｉｌサーバの直近に起動されたサーバを検知する方法として、例えば、ＤＨＣＰ（Dynamic Host Configuration Protocol server）サーバでの管理情報を利用することができる。例えば、ＤＨＣＰサーバが管理するＩＰアドレスのリリース日時、ユーザ管理しているＩＰアドレスの数値をもとに、新Ｈｅａｄサーバと新Ｔａｉｌサーバのアドレスを獲得することができる。
【０１４３】
次に、クラウド環境でのサーバリンク情報の設定の例について説明する。
＜クラウド環境でのサーバリンク情報の設定の例＞
図２５は、クラウド環境でのサーバリンク情報の更新の流れの処理シーケンス（その１）、図２６は、クラウド環境でのサーバリンク情報の更新の流れの処理シーケンス（その２）である。
【０１４４】
まず、クラウド環境に新規にサーバを配備するときの初期処理について説明する。この場合、クラウド管理部６０がシステム構築済みのマスタイメージを作成し、これをクラウド環境に配備してシステムを構築する。このような環境では、事前に設計したシステム構成でマスタとなるシステム（マスタイメージ）を作成する。マスタイメージの設計時には、Ｈｅａｄサーバのアドレスをあらかじめ決めておき、このアドレスをマスタイメージのサーバリンク情報のＨｅａｄサーバに設定しておく。
【０１４５】
クラウド環境に配備されたマスタイメージは、まず、起動して、Ｈｅａｄサーバの有無を確認し、Ｈｅａｄサーバが稼働していないことを確認する。次に、稼働中のサーバの有無を確認し、稼働中のサーバがないことを確認する。このように、Ｈｅａｄサーバも稼働中のサーバも存在しない場合、このマスタイメージは、最初に配備されたサーバであり、しかも、Ｈｅａｄサーバとしての設定がすでになされているので、そのままＨｅａｄサーバとして稼働することができる。
【０１４６】
マスタイメージがクラウド環境に配備されたときにすでに何台かのサーバが稼働していて、Ｈｅａｄサーバが異常の場合には、マスタイメージは、まず、稼働中のサーバを確認する。次に、マスタイメージは、任意のサーバからＴａｉｌサーバのアドレスを取得する。次に、マスタイメージは、Ｔａｉｌサーバにアクセスし、Ｔａｉｌサーバの起動順の情報を取得する。次に、マスタイメージは、Ｔａｉｌサーバの起動順の情報から２番目に起動したサーバをＨｅａｄサーバとし、さらに、各サーバのサーバリンク情報を更新する。これにより、マスタイメージを除くサーバのサーバリンク情報が復元される。
【０１４７】
次に、マスタイメージは、クラウド管理部６０に対し、マスタイメージのＨｅａｄサーバアドレスの更新を依頼する。クラウド管理部６０は、マスタイメージのＨｅａｄサーバアドレスを、２番目に起動したサーバのアドレスに更新し、新規サーバの追加処理に備える。
【０１４８】
次に、クラウド環境に配備されたマスタイメージをＴａｉｌサーバとして設定し、Ｈｅａｄサーバのサーバリンク情報のＴａｉｌサーバを更新する。
次に、複数台のサーバがすでに稼働しているクラウド環境にマスタイメージを配備する通常処理では、マスタイメージは、ＨｅａｄサーバおよびＴａｉｌサーバの稼働を確認し、Ｔａｉｌサーバとしての設定を行う。
【０１４９】
図２７は、クラウド環境でのサーバリンク情報の更新の流れを示すフローチャートである。
［ステップＳ５１］クラウド管理部６０において、システム構築済みのマスタイメージが作成される。
【０１５０】
［ステップＳ５２］クラウド管理部６０は、マスタイメージにＨｅａｄサーバとしての情報を設定する。
［ステップＳ５３］クラウド管理部６０は、マスタイメージを仮想イメージとしてクラウド環境に配備する。
【０１５１】
［ステップＳ５４］マスタイメージは、クラウド環境に配備された後に起動し、配備先のクラウド環境にＨｅａｄサーバが存在するかどうかを判断する。Ｈｅａｄサーバが存在する場合、処理は、ステップＳ５５に進み、Ｈｅａｄサーバが存在しない場合には、処理は、ステップＳ５９に進む。
【０１５２】
［ステップＳ５５］マスタイメージは、イメージに設定されたサーバリンク情報からＨｅａｄサーバを検知する。
［ステップＳ５６］マスタイメージは、Ｈｅａｄサーバにアクセスし、Ｈｅａｄサーバのサーバリンク情報からＴａｉｌサーバを検知する。
【０１５３】
［ステップＳ５７］マスタイメージは、Ｔａｉｌサーバにアクセスしてサーバリンク情報におけるＴａｉｌサーバおよびＮｅｘｔサーバの情報を更新させ、配備した自身のイメージを新Ｔａｉｌサーバとして設定する。
【０１５４】
［ステップＳ５８］マスタイメージは、Ｈｅａｄサーバにアクセスし、ＨｅａｄサーバのＴａｉｌサーバの情報を新Ｔａｉｌサーバの情報に更新させる。
［ステップＳ５９］他に稼働中のサーバがあるかどうかを判断する。Ｈｅａｄサーバは存在しないが、稼働中のサーバがある場合、処理は、ステップＳ６０に進み、Ｈｅａｄサーバも稼働中のサーバも存在しない場合には、処理はステップＳ６４に進む。
【０１５５】
［ステップＳ６０］マスタイメージは、任意の稼働サーバからＴａｉｌサーバのアドレスを取得する。
［ステップＳ６１］マスタイメージは、Ｔａｉｌサーバにアクセスし、Ｔａｉｌサーバの起動順の情報から２番目に起動したサーバのアドレスを取得し、２番目に起動したサーバに通知する。
【０１５６】
［ステップＳ６２］２番目の起動サーバは、自装置をＨｅａｄサーバとするようサーバリンク情報を更新し、３番目以降の起動サーバについても、自イメージを含めた各サーバのサーバリンク情報のＨｅａｄサーバを順次更新する。
【０１５７】
［ステップＳ６３］マスタイメージは、自イメージのＨｅａｄサーバのアドレスを新Ｈｅａｄサーバのアドレスに更新する。
［ステップＳ６４］Ｈｅａｄサーバも他に稼働中のサーバがない場合、マスタイメージは、配備した自イメージをそのままＨｅａｄサーバとして設定する。
【０１５８】
次に、マスタイメージのクラウド環境への配備例について説明する。
図２８は、Ｈｅａｄサーバがある場合のクラウド環境でのイメージ配備例を示す説明図である。Ｈｅａｄサーバが存在しているクラウド環境に、新規サーバとしてＨｅａｄサーバに設定されたマスタイメージを配備する場合、マスタイメージは、まず、Ｈｅａｄサーバの存在を確認する。このＨｅａｄサーバの存在は、例えば、マスタイメージが自身に設定されたＨｅａｄサーバのアドレスを指定してｐｉｎｇコマンドを実行し、応答が返ってくるかどうかによって確認することができる。応答が返ってくれば、すでにＨｅａｄサーバが存在していることになる。
【０１５９】
この場合、マスタイメージは、Ｔａｉｌサーバをサーバ３から自イメージに切り換える処理を行う。次に、マスタイメージは、新しくＴａｉｌサーバになったことをＨｅａｄサーバに通知し、ＨｅａｄサーバのＴａｉｌサーバの情報を更新させる。
【０１６０】
図２９は、Ｈｅａｄサーバが異常、かつ、稼働中のサーバがある場合のクラウド環境でのイメージ配備例を示す説明図である。Ｈｅａｄサーバが異常、かつ、稼働中のサーバがある場合のクラウド環境に、新規サーバとしてＨｅａｄサーバに設定されたマスタイメージを配備する場合、マスタイメージは、まず、Ｈｅａｄサーバの存在を確認する。
【０１６１】
この場合、Ｈｅａｄサーバからの応答がないので、次に、マスタイメージは、稼働中のサーバの存在を確認する。この稼働中のサーバの存在は、例えば、相手先を指定しないで問い合せを行う一斉同報送信を行い、これに対して応答が返ってくるかどうかによって確認することができる。応答が返ってくれば、Ｈｅａｄサーバではない稼働中のサーバが存在していることになる。
【０１６２】
Ｈｅａｄサーバがなく、かつ、稼働中のサーバがある場合、マスタイメージは、応答が返ってきた任意のサーバからＴａｉｌサーバのアドレスを取得し、Ｔａｉｌサーバのサーバリンク情報から２番目に起動したサーバのアドレスを取得する。次に、マスタイメージは、２番目に起動したサーバ２に対し、Ｈｅａｄサーバへの設定およびサーバ３へのＨｅａｄサーバのリンク情報の更新依頼を通知する。次に、マスタイメージは、Ｈｅａｄサーバのリンク情報をサーバ２のリンク情報に更新し、新Ｔａｉｌサーバに設定し、Ｔａｉｌサーバのリンク情報をＨｅａｄサーバに通知する。
【０１６３】
図３０は、Ｈｅａｄサーバがない場合のクラウド環境でのイメージ配備例を示す説明図である。Ｈｅａｄサーバも稼働中のサーバもない場合、マスタイメージは、Ｈｅａｄサーバのアドレスを指定したｐｉｎｇコマンドを実行しても、相手先を指定しない一斉同報送信を行っても、まったく応答が返ってくることはない。このような場合、マスタイメージは、配備されたクラウド環境にサーバが存在しないと判断し、Ｈｅａｄサーバとしてそのまま配備することになる。
【０１６４】
図３１は、Ｈｅａｄサーバおよび稼働中のサーバがあるクラウド環境でのイメージ配備中にＨｅａｄサーバが異常になった例を示す説明図である。すでに、Ｈｅａｄサーバおよび稼働中のサーバがあるクラウド環境にマスタイメージを連続して追加配備しているときに、Ｈｅａｄサーバ（サーバ１）に異常があった場合、サーバ１からＴａｉｌサーバのサーバリンク情報を取得することができない。このため、マスタイメージは、任意のサーバからＴａｉｌサーバのサーバリンク情報を取得し、取得した起動順の情報からＨｅａｄサーバのサーバリンク情報を削除する。また、マスタイメージは、自身のＨｅａｄサーバのサーバリンク情報を２番目に起動したサーバ２のサーバリンク情報に更新し、Ｔａｉｌサーバのサーバリンク情報をサーバ５に更新する。
【０１６５】
次に、このサーバ５において、起動順の情報からＨｅａｄサーバのサーバリンク情報を削除し、ＨｅａｄサーバおよびＴａｉｌサーバのサーバリンク情報をサーバ５に更新する処理は、稼働中の他のサーバにおいても行われる。すなわち、サーバ５での処理は、サーバ５の前に配備されたサーバ４から始まり、起動順をさかのぼってサーバ２まで繰り返し行われる。
【０１６６】
図３２は、Ｈｅａｄサーバおよび稼働中のサーバがあるクラウド環境でのイメージ配備例を示す説明図である。すでに、Ｈｅａｄサーバおよび稼働中のサーバがあるクラウド環境にマスタイメージを連続して追加配備する場合、新規に配備されたマスタイメージは、Ｔａｉｌサーバに設定する処理をする。
【０１６７】
すなわち、マスタイメージは、サーバリンク情報からＨｅａｄサーバにアクセスしてＴａｉｌサーバのサーバリンク情報を取得し、この取得した情報をもとにＴａｉｌサーバのサーバリンク情報をサーバ４に更新する。これとともに、Ｈｅａｄサーバでも、Ｔａｉｌサーバのサーバリンク情報をサーバ４に更新する。
【符号の説明】
【０１６８】
１０  情報処理システム
１１ａ〜１１ｚ  情報処理装置
１２ａ〜１２ｚ  処理部
１３ａ〜１３ｚ  記憶部
２０  ネットワーク
２１  モニタ
２２  キーボード
２３  マウス
２４  光ディスク
２５  メモリ装置
２６  メモリリーダライタ
２７  メモリカード
３０  ライセンス管理システム
３１  第１仮想サーバ
３２  第２仮想サーバ
３３  第３仮想サーバ
３４  第ｎ仮想サーバ
３５  ネットワーク
４１  ソフトウェア制御部
４２  通信制御部
４３  サーバリンク参照部
４４  サーバリンク検査部
４５  サーバリンク更新部
４６  サーバリンク情報格納部
４７  ライセンス情報参照部
４８  ライセンス情報検査部
４９  ライセンス情報更新部
５０  ライセンス管理情報格納部
５１  ライセンス管理部
６０  クラウド管理部
１００  コンピュータ
１０１  プロセッサ
１０２  メモリ
１０３  ストレージ装置
１０４  グラフィック処理装置
１０５  入力インタフェース
１０６  光学ドライブ装置
１０７  機器接続インタフェース
１０８  ネットワークインタフェース
１０９  バス
【図１】
2017194865.tif 000003
【図２】
2017194865.tif 000004
【図３】
2017194865.tif 000005
【図４】
2017194865.tif 000006
【図５】
2017194865.tif 000007
【図６】
2017194865.tif 000008
【図７】
2017194865.tif 000009
【図８】
2017194865.tif 000010
【図９】
2017194865.tif 000011
【図１０】
2017194865.tif 000012
【図１１】
2017194865.tif 000013
【図１２】
2017194865.tif 000014
【図１３】
2017194865.tif 000015
【図１４】
2017194865.tif 000016
【図１５】
2017194865.tif 000017
【図１６】
2017194865.tif 000018
【図１７】
2017194865.tif 000019
【図１８】
2017194865.tif 000020
【図１９】
2017194865.tif 000021
【図２０】
2017194865.tif 000022
【図２１】
2017194865.tif 000023
【図２２】
2017194865.tif 000024
【図２３】
2017194865.tif 000025
【図２４】
2017194865.tif 000026
【図２５】
2017194865.tif 000027
【図２６】
2017194865.tif 000028
【図２７】
2017194865.tif 000029
【図２８】
2017194865.tif 000030
【図２９】
2017194865.tif 000031
【図３０】
2017194865.tif 000032
【図３１】
2017194865.tif 000033
【図３２】
2017194865.tif 000034