(57)【要約】【課題】ソフトウェア毎に監視方法を変更する必要なく、ソフトウェアの稼働時間を外部装置に適切に通知し、かつ監視コストを低減することを課題とする。【解決手段】ソフトウェア稼働時間通知装置１０は、ソフトウェア稼働時間通知装置１０は、現用系ノードの故障が待機系ノードによって検知された場合に、該待機系ノードが現用系ノードの故障を検知した時刻を検出し、待機系ノードにおいて稼働時間通知対象ソフトウェア２０の起動が完了した場合に、該稼働時間通知対象ソフトウェア２０の起動が完了した時刻を検出する。そして、ソフトウェア稼働時間通知装置１０は、待機系ノードが現用系ノードの故障を検知した時刻と、待機系ノードにおいてソフトウェアの起動が完了した時刻とを外部通知先監視システム４０へ通知する。【選択図】        図３
2015082238.tif 000002
【特許請求の範囲】
【請求項１】
現用系ノードが故障した場合に、該現用系ノードで稼働するソフトウェアを待機系ノードにおいて起動させるクラスタシステムにおいて、前記ソフトウェアに関する情報を外部装置へ通知する通知装置であって、
前記現用系ノードの故障が待機系ノードによって検知された場合に、該待機系ノードが現用系ノードの故障を検知した時刻である第１時刻を検出する故障時刻検出部と、
前記待機系ノードにおいて前記ソフトウェアの起動が完了した場合に、該ソフトウェアの起動が完了した時刻である第２時刻を検出する起動時刻検出部と、
前記第１時刻と、前記第２時刻とを外部装置へ通知する通知部と、
を備えることを特徴とする通知装置。
【請求項２】
前記第１時刻を記憶する故障時刻記憶部と、
前記第２時刻を記憶する起動時刻記憶部と
をさらに備え、
前記故障時刻検出部は、前記第１時刻を検出すると、前記第１時刻を前記故障時刻記憶部に格納し、
前記起動時刻検出部は、前記第２時刻を検出すると、前記第２時刻を前記起動時刻記憶部に格納し、
前記通知部は、前記故障時刻記憶部に格納された第１時刻と前記起動時刻記憶部に格納された第２時刻とを外部装置へ通知することを特徴とする請求項１に記載の通知装置。
【請求項３】
前記故障時刻検出部は、前記現用系ノードが故障したことを示すログが記録されたことを契機に、前記第１時刻を検出することを特徴とする請求項１または２に記載の通知装置。
【請求項４】
前記起動時刻検出部は、前記待機系ノードが死活パケットを用いて前記現用系ノードの故障を検知した場合に、前記第１時刻を検出することを特徴とする請求項１〜３のいずれか一つに記載の通知装置。
【請求項５】
現用系ノードが故障した場合に、該現用系ノードで稼働するソフトウェアを待機系ノードにおいて起動させるクラスタシステムにおいて、前記ソフトウェアに関する情報を外部装置へ通知する通知装置により実行される通知方法であって、
前記現用系ノードの故障が待機系ノードによって検知された場合に、該待機系ノードが現用系ノードの故障を検知した時刻である第１時刻を検出する故障時刻検出工程と、
前記待機系ノードにおいて前記ソフトウェアの起動が完了した場合に、該ソフトウェアの起動が完了した時刻である第２時刻を検出する起動時刻検出工程と、
前記第１時刻と、前記第２時刻とを外部装置へ通知する通知工程と、
を含んだことを特徴とする通知方法。
【請求項６】
前記故障時刻検出工程は、前記第１時刻を検出すると、前記第１時刻を故障時刻記憶部に格納し、
前記起動時刻検出工程は、前記第２時刻を検出すると、前記第２時刻を起動時刻記憶部に格納し、
前記通知工程は、前記故障時刻記憶部に格納された第１時刻と前記起動時刻記憶部に格納された第２時刻とを外部装置へ通知することを特徴とする請求項５に記載の通知方法。
【請求項７】
前記故障時刻検出工程は、前記現用系ノードが故障したことを示すログが記録されたことを契機に、前記第１時刻を検出することを特徴とする請求項５または６に記載の通知方法。
【請求項８】
前記起動時刻検出工程は、待機系ノードが死活パケットを用いて前記現用系ノードの故障を検知した場合に、前記第１時刻を検出することを特徴とする請求項５〜７のいずれか一つに記載の通知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通知装置及び通知方法に関する。
【背景技術】
【０００２】
従来、ソフトウェアの冗長化クラスタを実現し、システムの可用性を高める技術として、ソフトウェアを冗長化することで、ソフトウェアが動作する現用系ハードウェアで故障が発生した場合でも、ソフトウェアが動作するハードウェアを切り替える事でシステムの動作を継続する技術が知られている（例えば、非特許文献１参照）。
【０００３】
このような技術では、現用系ハードウェアの故障を待機系のハードウェアで検知するために、同一クラスタを構成する高可用性クラスタソフトウェア同士で、死活監視のパケットを送受信し合い、それぞれのハードウェアやソフトウェアでの故障の有無を監視している。
【０００４】
また、クラスタ内の各ノードにソフトウェアの動作監視エージェントを配置し、ノード上のソフトウェアの動作状況を監視して外部装置へ通知をすることで、ソフトウェアの稼働時間を外部装置で管理させる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“サービスの可用性を向上させるOSSミドルHeartbeatの開発”、[online]、[平成２５年１０月１１日検索]、インターネット＜http://www.ntt.co.jp/journal/0903/files/jn20090346.pdf＞
【非特許文献２】“Crane  〜Management  Solution  from  NTT  R&D〜”、[online]、[平成２５年１０月１１日検索]、インターネット＜http://www.oss.ecl.ntt.co.jp/ossc/download/Crane.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、ソフトウェアの稼働時間を外部装置に適切に通知することができない場合があるという課題があった。つまり、現用系ハードウェアで故障が発生した場合には、ハードウェアが故障しているため監視エージェントの動作と、外部へ稼働状態を通知できるかが保証されないため、ソフトウェアの稼働時間を通知することができない場合があった。
【０００７】
なお、ソフトウェアの稼働状況を確認する方法として、例えば、高可用性クラスタ以外の監視システムが、論理リソースの稼働時間を測定してソフトウェアの稼働状況を監視する技術もある（非特許文献２参照）。しかし、サービスを提供するためのシステムの規模に合わせて、監視システムによるソフトウェアの稼働状況の監視に必要なコストが増加してしまう。また、ソフトウェア毎に稼働状況を監視する方法が異なるため、監視システムは冗長化対象のソフトウェア毎に監視方法を変更する必要があった。
【０００８】
そこで、この発明は、ソフトウェア毎に監視方法を変更する必要なく、ソフトウェアの稼働時間を外部装置に適切に通知し、かつ監視コストを低減することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、開示の通知装置は、現用系ノードが故障した場合に、該現用系ノードで稼働するソフトウェアを待機系ノードにおいて起動させるクラスタシステムにおいて、前記ソフトウェアに関する情報を外部装置へ通知する通知装置であって、前記現用系ノードの故障が待機系ノードによって検知された場合に、該待機系ノードが現用系ノードの故障を検知した時刻である第１時刻を検出する故障時刻検出部と、前記待機系ノードにおいて前記ソフトウェアの起動が完了した場合に、該ソフトウェアの起動が完了した時刻である第２時刻を検出する起動時刻検出部と、前記第１時刻と、前記第２時刻とを外部装置へ通知する通知部と、を備えることを特徴とする。
【００１０】
また、開示の通知方法は、現用系ノードが故障した場合に、該現用系ノードで稼働するソフトウェアを待機系ノードにおいて起動させるクラスタシステムにおいて、前記ソフトウェアに関する情報を外部装置へ通知する通知装置により実行される通知方法であって、前記現用系ノードの故障が待機系ノードによって検知された場合に、該待機系ノードが現用系ノードの故障を検知した時刻である第１時刻を検出する故障時刻検出工程と、前記待機系ノードにおいて前記ソフトウェアの起動が完了した場合に、該ソフトウェアの起動が完了した時刻である第２時刻を検出する起動時刻検出工程と、前記第１時刻と、前記第２時刻とを外部装置へ通知する通知工程と、を含んだことを特徴とする。
【発明の効果】
【００１１】
本願に開示する通知装置及び通知方法は、ソフトウェア毎に監視方法を変更する必要なく、ソフトウェアの稼働時間を外部装置に適切に通知し、かつ監視コストを低減することが可能である。
【図面の簡単な説明】
【００１２】
【図１】図１は、第一の実施形態に係るシステムの構成の一例を示す図である。
【図２】図２は、第一の実施形態に係るシステムにおける現用系ノードおよび待機系ノードの構成の一例を示す図である。
【図３】図３は、第一の実施形態に係るソフトウェア稼働時間通知装置の構成を示すブロック図である。
【図４】図４は、第一の実施形態に係る故障検知情報記憶部に記憶される情報の一例を示す図である。
【図５】図５は、第一の実施形態に係るソフトウェア起動時間記憶部に記憶される情報の一例を示す図である。
【図６】図６は、第一の実施形態に係るソフトウェア稼働時間通知装置における通知処理の概要を説明する図である。
【図７】図７は、第一の実施形態に係るソフトウェア稼働時間通知装置における通知処理の流れを説明するためのフローチャートである。
【図８】図８は、通知プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１３】
以下に図面を参照して、この発明に係る通知装置及び通知方法の実施形態を詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
【００１４】
［第一の実施形態］
以下の実施形態では、第一の実施形態に係るシステムの構成、ソフトウェア稼働時間通知装置の構成及び解析装置による処理の流れを順に説明し、最後に第一の実施形態による効果を説明する。
【００１５】
［システムの構成］
まず、第一の実施形態に係るシステムの構成の一例を説明する。図１は、第一の実施形態に係るシステムの構成の一例を示す図である。図１に示すように、第一の実施形態に係るシステムでは、ソフトウェアを冗長化させて可用性を高める複数のソフトウェアクラスタ５０Ａ、５０Ｂと、ソフトウェアクラスタ５０において稼働するソフトウェアを監視する外部通知先監視システム４０とを有し、ソフトウェアクラスタ５０Ａ、５０Ｂと外部通知先監視システム４０とはネットワーク６０を介して接続されている。
【００１６】
なお、図１では、ソフトウェアクラスタ５０Ａ、５０Ｂが２つ、外部通知先監視システム４０が一つ存在する場合を例示しているが、ソフトウェアクラスタの数および外部通知先監視システムの数は、これに限定されるものではない。また、ソフトウェアクラスタ５０Ａ、５０Ｂについて特に区別することなく説明する場合には、ソフトウェアクラスタ５０と記載する。
【００１７】
ソフトウェアクラスタ５０Ａ、５０Ｂは、現用系ノード５０ａと、待機系ノード５０ｂとをそれぞれ有する。また、現用系ノード５０ａおよび待機系ノード５０ｂは、ソフトウェア稼働時間通知装置１０ａ、１０ｂを含んでいる。ここで、現用系ノード５０ａとソフトウェア稼働時間通知装置１０ａとは、共通のハードウェア資源により構成されていてもよいし、別々のハードウェア資源により構成されていてもよい。また、待機系ノード５０ｂとソフトウェア稼働時間通知装置１０ｂについても同様である。
【００１８】
現用系ノード５０ａは、ソフトウェア（以下では、稼働時間通知対象ソフトウェア２０ａという）を動作させている。また、待機系ノード５０ｂは、現用系ノード５０ａの故障を検知すると、稼働時間通知対象ソフトウェア２０ａを起動し、故障した現用系ノード５０ａの代わりに、稼働時間通知対象ソフトウェア２０ａを動作させる。また、ソフトウェア稼働時間通知装置１０ａ、１０ｂについて特に区別することなく説明する場合には、ソフトウェア稼働時間通知装置１０と記載する。
【００１９】
ソフトウェア稼働時間通知装置１０ｂは、現用系ノード５０ａの故障が待機系ノード５０ｂによって検知された場合に、該待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を検出する。また、ソフトウェア稼働時間通知装置１０ｂは、待機系ノード５０ｂにおいてソフトウェアの起動が完了した場合に、該ソフトウェアの起動が完了した時刻を検出する。
【００２０】
そして、ソフトウェア稼働時間通知装置１０ｂは、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻と、待機系ノード５０ｂにおいてソフトウェアの起動が完了した時刻とを外部通知先監視システム４０へ通知する。
【００２１】
次に、図２を用いて、現用系ノード５０ａおよび待機系ノード５０ｂの構成について説明する。図２は、第一の実施形態に係るシステムにおける現用系ノードおよび待機系ノードの構成の一例を示す図である。なお、以下の例では、外部通知先監視システム４０とソフトウェアクラスタ５０とが一対一の関係である場合を例に説明するが、これに限定されるものではなく、一対複数や複数対複数でもよく、例えば、一つの外部通知先監視システム４０に対して複数のソフトウェアクラスタ５０が存在してもよい。
【００２２】
ソフトウェアクラスタ５０は、高可用性クラスタソフトウェア３０によって管理されるサーバの単位であり、冗長化対象のソフトウェアである稼働時間通知対象ソフトウェア２０ａが動作する現用系ノード５０ａと、稼働時間通知対象ソフトウェア２０ａが動作せず、現用系ノード５０ａで障害が発生した際に稼働時間通知対象ソフトウェアの切り替わり先となる待機系ノード５０ｂで構成される。
【００２３】
また、現用系ノード５０ａと待機系ノード５０ｂは、ソフトウェアクラスタ５０内に、それぞれ複数ノードの存在が可能である。また、ソフトウェアクラスタ５０は外部通知先監視システム４０に対して、複数のソフトウェアクラスタ５０の存在が可能である。
【００２４】
現用系ノード５０ａでは、稼働時間通知対象ソフトウェア２０ａおよび高可用性クラスタソフトウェア３０ａが稼働している。稼働時間通知対象ソフトウェア２０ａは、現用系ノード５０ａ上で稼働しているソフトウェアであり、稼働状態の監視対象となるソフトウェアである。
【００２５】
待機系ノード５０ｂでは、高可用性クラスタソフトウェア３０ｂが稼働している。また、現用系ノード５０ａに故障が発生した場合には、待機系ノード５０ｂにおいて、稼働時間通知対象ソフトウェア２０ｂが起動し、現用系ノード５０ａの代わりに稼働時間通知対象ソフトウェア２０ｂを稼働させる。
【００２６】
高可用性クラスタソフトウェア３０ａ、３０ｂは、高可用性クラスタを作成するために利用される既存のソフトウェアである。高可用性クラスタソフトウェア３０ａ、３０ｂは、ソフトウェアが動作するハードウェアとソフトウェアの稼働状態を監視し、ハードウェアとソフトウェアの故障の有無を確認する。
【００２７】
また、同一クラスタに所属する高可用性クラスタソフトウェア３０ａ、３０ｂ同士で定期的に死活監視パケットを送受信し、他のハードウェアで動作するソフトウェアの故障の有無、他のハードウェアの故障の有無、高可用性クラスタソフトウェア３０ａ、３０ｂ自身の故障の有無をお互いに監視している。
【００２８】
稼働時間通知対象ソフトウェア２０ａは冗長化対象のソフトウェアであり、本発明のソフトウェア稼働時間通知装置１０ｂによって稼働時間が、外部通知先監視システム４０へ通知される対象のソフトウェアである。
【００２９】
［ソフトウェア稼働時間通知装置の構成］
次に、図３を用いて、第一の実施形態に係るソフトウェア稼働時間通知装置の構成について説明する。図３は、第一の実施形態に係るソフトウェア稼働時間通知装置の構成を示すブロック図である。図３に示すように、ソフトウェア稼働時間通知装置１０は、通信処理部１１、記憶部１２および制御部１３を有する。
【００３０】
通信処理部１１は、接続される外部通知先監視システム４０との間でやり取りする各種情報に関する通信を制御する。例えば、通信処理部１１は、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻と、待機系ノード５０ｂにおいてソフトウェアの起動が完了した時刻とを外部通知先監視システム４０に送信する。
【００３１】
記憶部１２は、図３に示すように、故障時刻記憶部１２ａおよび起動時刻記憶部１２ｂを有する。記憶部１２は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
【００３２】
故障時刻記憶部１２ａは、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を記憶する。例えば、故障時刻記憶部１２ａは、図４に例示するように、故障した現用系ノード５０ａを一意に識別する「ノードＩＤ」と、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻である「故障検知時刻」とを対応付けて記憶する。図４は、第一の実施形態に係る故障検知情報記憶部に記憶される情報の一例を示す図である。
【００３３】
図４の例を挙げて説明すると、故障時刻記憶部１２ａは、例えば、ノードＩＤである「１」と、故障検知時刻である「２０１３／１０／１０  １０：２２」とを対応付けて記憶する。
【００３４】
起動時刻記憶部１２ｂは、待機系ノード５０ｂによりソフトウェアの起動が完了した時刻を記憶する。例えば、起動時刻記憶部１２ｂは、図５に例示するように、待機系ノード５０ｂにより起動された稼働時間通知対象ソフトウェア２０を一意に識別する「ソフトウェアＩＤ」と、待機系ノード５０ｂによりソフトウェアの起動が完了した時刻である「起動完了時刻」とを対応付けて記憶する。図５は、第一の実施形態に係るソフトウェア起動時間記憶部に記憶される情報の一例を示す図である。
【００３５】
図５の例を挙げて説明すると、起動時刻記憶部１２ｂは、例えば、ソフトウェアＩＤである「Ａ」と、起動完了時刻である「２０１３／１０／１０  １３：１０」とを対応付けて記憶する。
【００３６】
図３に戻って、制御部１３は、故障時刻検出部１３ａ、起動時刻検出部１３ｂおよび通知部１３ｃを有する。ここで、制御部１３は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路やＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路である。
【００３７】
故障時刻検出部１３ａは、現用系ノード５０ａの故障が待機系ノード５０ｂによって検知された場合に、該待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を検出する。具体的には、故障時刻検出部１３ａは、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を検出すると、該時刻を故障時刻記憶部１２ａに格納する。
【００３８】
また、故障時刻検出部１３ａは、待機系ノード５０ｂの高可用性クラスタソフトウェア３０ｂが、ハートビートパケットなどとも呼ばれる死活監視パケットを用いて現用系ノード５０ａの故障を検知した場合に、該待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を検出する。
【００３９】
ここで、待機系ノード５０ｂの高可用性クラスタソフトウェア３０ｂが死活監視パケットを用いて現用系ノード５０ａの故障を検知する方法について説明する。なお、以下の説明では、故障発生前の現用系ノード５０ａのハードウェアをハードウェアＡ、待機系ノード５０ｂのハードウェアをハードウェアＢとして説明する。また、待機系ノード５０ｂの高可用性クラスタソフトウェア３０ｂが死活監視パケットを用いて現用系ノード５０ａの故障を検知する方法として、故障したハードウェア以外の他のハードウェアにより故障が検知される方法と故障した現用系ノード５０ａ自身により自ハードウェアの故障を検知する方法とがある。
【００４０】
まず、故障したハードウェア以外の他のハードウェアにより故障が検知される方法の一例について説明する。高可用性クラスタソフトウェア３０ｂは、一定間隔で同一クラスタに属する他の高可用性クラスタソフトウェア３０ａに対して死活監視用のパケット（以下では、適宜「ハートビートパケット」と記載する）を定期的に送信する。
【００４１】
そして、ハートビートパケットを高可用性クラスタソフトウェア３０ａが受信すると、自身が動作するハードウェアやソフトウェアに関する監視結果を応答する。ここで、ハードウェアＡがハートビートパケットを受信した場合には、ソフトウェアの状態監視の結果とハードウェアＡの状態監視の結果をハートビートパケットに含めて、ハードウェアＢへ応答を返す。なお、ハードウェアＢがハートビートパケットを受信した場合にも、上記と同様に、ハードウェアＢの状態監視の結果をハードウェアＡへ応答を返す。
【００４２】
また、高可用性クラスタソフトウェア３０ｂが送信したハートビートパケットへの応答がない場合には、または、応答に故障の情報が含まれている場合には、待機系ノード５０ｂは、現用系ノード５０ａのハードウェアＡにて故障が発生したことを検知する。
【００４３】
次に、故障した現用系ノード５０ａ自身により自ハードウェアの故障を検知する方法の一例について説明する。故障した現用系ノード５０ａ自身により自ハードウェアの故障を検知する方法には、ソフトウェアによる故障検知方法とハードウェアによる故障検知方法とがある。
【００４４】
例えば、ソフトウェアによる故障検知方法として、ＨＴＴＰによるレスポンスの確認やデータベースへのコネクションの接続の確認など、冗長化対象のソフトウェアへアクセスを行い、ソフトウェアが動作していることを確認し、適切な応答が得られない場合に故障と判断をする。
【００４５】
また、ハードウェアによる故障検知方法としては、ハードウェアに対してｉｃｍｐによる監視などを実施し、ハードウェアが稼働しているかを確認し、応答が無い場合に故障と判断をする。
【００４６】
このように、故障した現用系ノード５０ａ自身により自ハードウェアの故障を検知すると、高可用性クラスタソフトウェア３０ａは、他のハードウェアへ送信するハートビートパケットや、他のハードウェアからのハートビートパケットへの応答を利用して故障を、同一クラスタ内の他の高可用性クラスタソフトウェア３０ｂへ通知する。
【００４７】
また、高可用性クラスタソフトウェア３０ｂは、ハードウェアやソフトウェアの故障を検知すると、ログとして記録した故障を検知したことを示す情報をハードウェア上に通知する。ここで、故障時刻検出部１３ａは、現用系ノード５０ａが故障したことを示すログが記録されたことを契機に、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を検出する。つまり、高可用性クラスタソフトウェア３０ｂにより故障を検知したことを示す情報がログとして記録されたことを契機に、故障時刻報記憶部１２ａへ高可用性クラスタソフトウェア３０が故障を検知した時刻を記録する。
【００４８】
起動時刻検出部１３ｂは、待機系ノード５０ｂにおいて稼働時間通知対象ソフトウェア２０ｂの起動が完了した場合に、該稼働時間通知対象ソフトウェア２０ｂの起動が完了した時刻を検出する。具体的には、起動時刻検出部１３ｂは、稼働時間通知対象ソフトウェア２０ｂの起動が完了した時刻を検出すると、該時刻を起動時刻記憶部１２ｂに格納する。
【００４９】
例えば、起動時刻検出部１３ｂは、稼働時間通知対象ソフトウェア２０ｂの起動完了を検知すると、稼働時間通知対象ソフトウェア２０の起動時刻を起動時刻記憶部１２ａに格納する。
【００５０】
通知部１３ｃは、故障時刻検出部１３ａによって検出された時刻と、起動時刻検出部１３ｂによって検出された時刻とを外部通知先監視システム４０へ通知する。例えば、通知部１３ｃは、通信処理部１１に対して外部通知先監視システム４０へ通知の実施依頼を行い、通信処理部１１を介して、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻と、待機系ノード５０ｂにおいてソフトウェアの起動が完了した時刻とを外部通知先監視システム４０へ通知する。
【００５１】
ここで、図６を用いて、ソフトウェアクラスタ５０において現用系ノード５０ａのハードウェアに故障が発生した場合において、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻と、待機系ノード５０ｂにおいてソフトウェアの起動が完了した時刻とを外部通知先監視システム４０へ通知する通知処理の全体の流れを説明する。図６は、第一の実施形態に係るソフトウェア稼働時間通知装置における通知処理の概要を説明する図である。
【００５２】
例えば、図６に例示するように、稼働時間通知対象ソフトウェア２０ａに障害が発生した場合に、上述したように、高可用性クラスタソフトウェア３０ｂは、ハートビートパケットから稼働時間通知対象ソフトウェア２０ａの障害を検知する。そして、故障時刻検出部１３ａは、現用系ノード５０ａの故障が待機系ノード５０ｂによって検知された場合に、該待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を検出する。
【００５３】
続いて、待機系ノード５０ｂでは、稼働時間通知対象ソフトウェア２０ｂを起動する。そして、起動時刻検出部１３ｂは、待機系ノード５０ｂにおいて稼働時間通知対象ソフトウェア２０ｂの起動が完了した場合に、該稼働時間通知対象ソフトウェア２０ｂの起動が完了した時刻を検出する。その後、ソフトウェア稼働時間通知装置１０ｂの通知部１３ｃは、故障時刻検出部１３ａによって検出された時刻と、起動時刻検出部１３ｂによって検出された時刻とを外部通知先監視システム４０へ通知する。
【００５４】
［ソフトウェア稼働時間通知装置による処理］
次に、図７を用いて、高可用性クラスタソフトウェア３０による稼働時間通知対象ソフトウェア２０の故障検知から、ソフトウェア稼働時間通知装置１０による外部通知先監視システム４０へ通知を実施するまでの流れを説明する。図７は、第一の実施形態に係るソフトウェア稼働時間通知装置における通知処理の流れを説明するためのフローチャートである。
【００５５】
図７に示すように、待機系ノード５０ｂの高可用性クラスタソフトウェア３０ｂが、クラスタ内の稼働時間通知対象ソフトウェア２０の故障を検知すると（ステップＳ１０１肯定）、ソフトウェア稼働時間通知装置１０の故障時刻検出部１３ａは、待機系ノード５０ｂの高可用性クラスタソフトウェア３０が現用系ノード５０ａの故障を検知した時刻を検出し、該時刻を故障時刻記憶部１２ａに記録する（ステップＳ１０２）。
【００５６】
例えば、故障時刻検出部１３ａは、現用系ノード５０ａが故障したことを示すログが記録されたことを契機に、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を検出する。つまり、高可用性クラスタソフトウェア３０ｂにより故障を検知したことを示す情報がログとして記録されたことを契機に、高可用性クラスタソフトウェア３０ｂが故障を検知した時刻を故障時刻報記憶部１２ａに記録する。
【００５７】
そして、待機系ノード５０ｂは、監視対象のソフトウェアである稼働時間通知対象ソフトウェア２０の起動、および起動時刻検出部１３ｂによる起動時刻の監視を開始する（ステップＳ１０３）。続いて、起動時刻検出部１３ｂは、ノード内で動作するプロセスを監視し、稼働時間通知対象ソフトウェア２０の起動を検知したか否かを判定する（ステップＳ１０４）。
【００５８】
この結果、起動時刻検出部１３ｂは、稼働時間通知対象ソフトウェア２０の起動を検知すると（ステップＳ１０４肯定）、監視対象のソフトウェアの起動時刻を起動時刻記憶部１２ｂに記録する（ステップＳ１０５）。その後、通知部１３ｃは、高可用性クラスタソフトウェア３０ｂが故障を検知した故障時刻と、稼働時間通知対象ソフトウェア２０の起動時刻とを外部通知先監視システム４０へ送信し（ステップＳ１０６）、ソフトウェア稼働時間通知装置１０による通知処理を終了する。
【００５９】
また、上記の一連の処理の流れの説明では、待機系ノード５０ｂにおいて、自ノードで稼働時間通知対象ソフトウェア２０の起動を行う場合を説明したが、他ノードで稼働時間通知対象ソフトウェア２０の起動を行われる場合もある。
【００６０】
このような場合には、例えば、他の待機系ノード５０ｂで稼働時間通知対象ソフトウェア２０の起動を高可用性クラスタソフトウェア３０が検知すると、検知した情報をノード内へログなどを利用して通知する。そして、他のノードでの稼働時間通知対象ソフトウェア２０の起動を起動時刻検出部１３ｂが検知し、起動時刻検出部１３ｂへ稼働時間通知対象ソフトウェア２０の監視終了を指示する。その後、ソフトウェア稼働時間通知装置１０による通知処理を終了する。
【００６１】
[第一の実施形態の効果]
上述してきたように、第一の実施形態にかかるソフトウェア稼働時間通知装置１０は、ソフトウェア稼働時間通知装置１０は、現用系ノード５０ａの故障が待機系ノード５０ｂによって検知された場合に、該待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻を検出し、待機系ノード５０ｂにおいて稼働時間通知対象ソフトウェア２０の起動が完了した場合に、該稼働時間通知対象ソフトウェア２０の起動が完了した時刻を検出する。そして、ソフトウェア稼働時間通知装置１０は、待機系ノード５０ｂが現用系ノード５０ａの故障を検知した時刻と、待機系ノード５０ｂにおいてソフトウェアの起動が完了した時刻とを外部通知先監視システム４０へ通知する。これにより、ソフトウェア毎に監視方法を変更する必要なく、ソフトウェアの稼働時間を外部装置に適切に通知し、かつ監視コストを低減することが可能である。
【００６２】
また、ソフトウェア稼働時間通知装置１０が稼働時間通知対象ソフトウェア２０の稼働時間を外部通知先監視システム４０へ通知するため、外部通知先監視システム４０の機能に依存せずに稼働時間通知対象ソフトウェアの切り替わりに要した時間を通知することが可能である。
【００６３】
また、待機系ノード５０ｂで動作するソフトウェア稼働時間通知装置１０から外部通知先監視システム４０へ通知するため、現用系ノード５０ａの通信機能に故障が発生した場合でも、外部通知先監視システム４０へ稼働時間通知対象ソフトウェア２０の稼働時間を通知することが可能である。
【００６４】
また、現用系ノード５０ａの故障発生時に、稼働時間通知対象ソフトウェア２０が切り替わった待機系ノード５０ｂで動作するソフトウェア稼働時間通知装置１０から外部通知先監視システム４０へ通知するため、ソフトウェアクラスタ５０や稼働時間通知対象ソフトウェア２０の数が増加しても監視コストが増加することがなく、監視コストを低減することが可能である。
【００６５】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、故障時刻検出部１３ａと起動時刻検出部１３ｂとを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６６】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６７】
［プログラム］
また、上記実施形態において説明したソフトウェア稼働時間通知装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係るソフトウェア稼働時間通知装置１０が実行する処理をコンピュータが実行可能な言語で記述した通知プログラムを作成することもできる。この場合、コンピュータが通知プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる通知プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録され通知プログラムをコンピュータに読み込ませて実行することにより上記第一の実施形態と同様の処理を実現してもよい。以下に、図３に示したソフトウェア稼働時間通知装置１０と同様の機能を実現する通知プログラムを実行するコンピュータの一例を説明する。
【００６８】
図８は、通知プログラムを実行するコンピュータ１０００を示す図である。図８に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００６９】
メモリ１０１０は、図８に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図８に例示するように、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、図８に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０４１に挿入される。シリアルポートインタフェース１０５０は、図８に例示するように、例えばマウス１０５１、キーボード１０５２に接続される。ビデオアダプタ１０６０は、図８に例示するように、例えばディスプレイ１０６１に接続される。
【００７０】
ここで、図８に例示するように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の通知プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０３１に記憶される。
【００７１】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【００７２】
なお、通知プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、通知プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７３】
１０、１０ａ、１０ｂ  ソフトウェア稼働時間通知装置
１１  通信処理部
１２  記憶部
１２ａ  故障時刻記憶部
１２ｂ  起動時刻記憶部
１３  制御部
１３ａ  故障時刻検出部
１３ｂ  起動時刻検出部
１３ｃ  通知部
１３  記憶部
１３ａ  故障時刻記憶部
１３ｂ  起動時刻記憶部
２０、２０ａ、２０ｂ  稼働時間通知対象ソフトウェア
３０、３０ａ、３０ｂ  高可用性クラスタソフトウェア
４０  外部通知先監視システム
【図１】
2015082238.tif 000003
【図２】
2015082238.tif 000004
【図３】
2015082238.tif 000005
【図４】
2015082238.tif 000006
【図５】
2015082238.tif 000007
【図６】
2015082238.tif 000008
【図７】
2015082238.tif 000009
【図８】
2015082238.tif 000010