(57)【特許請求の範囲】
【請求項１】
自装置の時刻をカウントする時刻カウント手段と、
送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビート受信手段と、
前記ハートビート受信手段により受信された時間的に連続する２つの前記ハートビートパケットについての前記時刻カウント手段による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更手段と、
前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを前記ハートビート受信手段が受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定手段と
を有する情報処理装置。
【請求項２】
前記タイムアウト時間変更手段は、前記タイムアウト時間を変更した場合、前記２つの受信時刻の差が、前記算出される受信間隔に等しいとき、前記タイムアウト時間を前記予め定められた時間へ戻す
請求項１に記載の情報処理装置。
【請求項３】
設定された送信時間間隔で、前記時刻カウント手段がカウントした時刻による送信時刻が含まれるハートビートパケットを送信するハートビート送信手段と、
前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更手段と
をさらに有する請求項１又は２に記載の情報処理装置。
【請求項４】
前記算出される受信間隔は、予め定められた許容誤差を含む
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記タイムアウト時間変更手段は、前記２つの受信時刻の差と前記算出される受信間隔との乖離の程度に応じた時間だけ前記タイムアウト時間を長くする
請求項１に記載の情報処理装置。
【請求項６】
送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビートパケット受信ステップと、
受信した時間的に連続する２つの前記ハートビートパケットについての、受信側の装置のカウントした時刻による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更ステップと、
前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定ステップと
を有するダウン判定方法。
【請求項７】
設定された送信時間間隔で、ハートビートパケットを送信するハートビートパケット送信ステップと、
前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更ステップと
をさらに有し、
前記ハートビートパケット送信ステップで送信されるハートビートパケットは、該ハートビートパケットを送信する装置のカウントした時刻による送信時刻を含む
請求項６に記載のダウン判定方法。
【請求項８】
複数の情報処理装置を備え、
前記複数の情報処理装置は、それぞれ、
自装置の時刻をカウントする時刻カウント手段と、
設定された送信時間間隔で、前記複数の情報処理装置のうちの他の情報処理装置に、前記時刻カウント手段がカウントした時刻による送信時刻が含まれるハートビートパケットを送信するハートビート送信手段と、
前記他の情報処理装置がカウントした時刻による送信時刻が含まれるハートビートパケットを、前記他の情報処理装置から受信するハートビート受信手段と、
前記ハートビート受信手段により受信された時間的に連続する２つの前記ハートビートパケットについての前記時刻カウント手段による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更手段と、
前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更手段と
前記タイムアウト時間内に送信側の装置からのハートビートパケットを前記ハートビート受信手段が受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定手段と
を有するクラスタシステム。
【請求項９】
送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビートパケット受信ステップと、
受信した時間的に連続する２つの前記ハートビートパケットについての、受信側の装置のカウントした時刻による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更ステップと、
前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定ステップと
を情報処理装置のコンピュータに実行させるプログラム。
【請求項１０】
設定された送信時間間隔で、前記情報処理装置のカウントした時刻による送信時刻が含まれるハートビートパケットを送信するハートビートパケット送信ステップと、
前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更ステップと
をさらに前記コンピュータに実行させる請求項９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、ダウン判定方法、クラスタシステム、及びプログラムに関する。
【背景技術】
【０００２】
ＨＡ（High Availability：高可用性）クラスタシステムにおいて、各サーバが、互いの死活監視を行う手段として、ネットワーク通信（ハートビート）を使用する方法が知られている。この方法では、各サーバは、送信の動作として、所定の時間間隔でハートビートパケットを送信し、受信の動作として、相手サーバから送信されたハートビートパケットを待ち受ける。そして、サーバは、相手サーバからのハートビートパケットを所定時間内に受信できなかった場合（すなわち、受信がタイムアウトした場合）、相手サーバがダウンしたと判断する。また、ダウンした相手サーバで業務プログラムが稼働していた場合、自サーバで業務プログラムを起動して、業務を継続する。
【０００３】
また、ネットワーク通信を使用した死活監視については、例えば、特許文献１が知られている。特許文献１では、ヘルスチェックフレームを相手サーバに送信し、これに対する応答により死活監視を行う際、負荷が掛かっているために応答が遅延するようなサーバに対するヘルスチェックフレームの送信間隔を長く設定することが開示されている。
【０００４】
ところで、近年、仮想マシン上でのＨＡクラスタシステムの構築が増えている。仮想マシンは、ＣＰＵ（Central Processing Unit）等のハードウェアをホストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）又はハイパーバイザでエミュレートしているため、ホストＯＳ又はハイパーバイザが高負荷になった場合、仮想マシンにリソースを割り当てられず、時刻のカウント（tick カウント）ですらも動作が安定しないことが多くある。時刻のカウントに遅延が生じると、上述のハートビートパケットの送信間隔を所定の時間間隔で行うことができなくなる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−０６２２４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
サーバのシステム遅延によりハートビートパケットの送信間隔を所定の時間間隔で行うことができなくなると、このサーバが実際にはダウンを起こしていないにもかかわらず、ダウンしたと誤判定される恐れがある。そして、サーバのダウンの誤判定が発生すると、両方のサーバで業務が並行して稼働してしまい、ＨＡクラスタシステムが不正な状態となる恐れがある。
【０００７】
これに対し、特許文献１では、遅延が発生したサーバに対するヘルスチェックフレームの送信間隔を長くするよう変更することにより、このサーバにかかっている負荷を増大させないようにする技術について開示しているに過ぎない。したがって、サーバのダウンの誤判定を抑制することが依然として求められている。
【０００８】
本発明の目的は、このような課題を解決するためになされたものであり、ダウンの誤判定を抑制することができる情報処理装置、ダウン判定方法、クラスタシステム、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一態様にかかる情報処理装置は、自装置の時刻をカウントする時刻カウント手段と、送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビート受信手段と、前記ハートビート受信手段により受信された時間的に連続する２つの前記ハートビートパケットについての前記時刻カウント手段による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更手段と、前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを前記ハートビート受信手段が受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定手段とを有する。
【００１０】
また、本発明の一態様にかかるダウン判定方法は、送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビートパケット受信ステップと、受信した時間的に連続する２つの前記ハートビートパケットについての、受信側の装置のカウントした時刻による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更ステップと、前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定ステップとを有する方法である。
【００１１】
また、本発明の一態様にかかるクラスタシステムは、複数の情報処理装置を備え、前記複数の情報処理装置は、それぞれ、自装置の時刻をカウントする時刻カウント手段と、設定された送信時間間隔で、前記複数の情報処理装置のうちの他の情報処理装置に、前記時刻カウント手段がカウントした時刻による送信時刻が含まれるハートビートパケットを送信するハートビート送信手段と、前記他の情報処理装置がカウントした時刻による送信時刻が含まれるハートビートパケットを、前記他の情報処理装置から受信するハートビート受信手段と、前記ハートビート受信手段により受信された時間的に連続する２つの前記ハートビートパケットについての前記時刻カウント手段による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更手段と、前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更手段と前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを前記ハートビート受信手段が受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定手段とを有する。
【００１２】
また、本発明の一態様にかかるプログラムは、送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビートパケット受信ステップと、受信した時間的に連続する２つの前記ハートビートパケットについての、受信側の装置のカウントした時刻による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更ステップと、前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定ステップとを情報処理装置のコンピュータに実行させるプログラムである。
【発明の効果】
【００１３】
本発明によれば、ダウンの誤判定を抑制することができる情報処理装置、ダウン判定方法、クラスタシステム、及びプログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態にかかる情報処理装置の概要を示すブロック図である。
【図２】実施の形態にかかる情報処理装置の概要を示すブロック図である。
【図３】実施の形態にかかるＨＡクラスタシステムの構成を示すブロック図である。
【図４】実施の形態にかかる情報処理装置の構成を示すブロック図である。
【図５】実際の時刻と、情報処理装置３０Ａの時刻カウント部による時刻と、情報処理装置３０Ｂの時刻カウント部による時刻とを比較する表であり、遅延が発生し始めた時の一例を示している。
【図６】実際の時刻と、情報処理装置３０Ａの時刻カウント部による時刻と、情報処理装置３０Ｂの時刻カウント部による時刻とを比較する表であり、本格的な遅延状態に陥った際の一例を示している。
【図７】実際の時刻と、情報処理装置３０Ａの時刻カウント部による時刻と、情報処理装置３０Ｂの時刻カウント部による時刻とを比較する表であり、遅延が解消した時の一例を示している。
【図８】実施の形態にかかる情報処理装置におけるハートビートパケットの送信処理に関わる動作について示すフローチャートである。
【図９】実施の形態にかかる情報処理装置におけるハートビートパケットの受信処理に関わる動作について示すフローチャートである。
【発明を実施するための形態】
【００１５】
＜本発明にかかる実施の形態の概要＞
実施の形態の説明に先立って、本発明にかかる実施の形態の概要を説明する。以下、本発明にかかる実施の形態の概要の説明として、情報処理装置１０（図１参照）及び情報処理装置２０（図２参照）を例として挙げる。
【００１６】
図１は、実施の形態にかかる情報処理装置の概要を示すブロック図である。情報処理装置１０は、例えば、ＨＡクラスタシステムを構成する複数のサーバのうちのいずれかである。情報処理装置１０は、一例としては、仮想マシン上に構築されるが、物理環境で構築されてもよい。
【００１７】
情報処理装置１０は、ＨＡクラスタシステムを構成する他の情報処理装置との間で、通信を行い、相互に死活監視を行う。より具体的には、情報処理装置１０及びＨＡクラスタシステムを構成する他の情報処理装置は、それぞれ、予め定められた送信時間間隔で、ハートビートパケットを相手装置に対して送信する。また、情報処理装置１０及びこの他の情報処理装置は、それぞれ、相手装置からのハートビートパケットを予め定められたタイムアウト時間内に受信できない場合、相手装置がダウンを起こしたと判定する。なお、ここでダウンは、情報処理装置（サーバ）のシステムダウンを指しており、ＨＡクラスタシステム全体のシステムダウンではない。
【００１８】
ここで、情報処理装置１０は、図１に示されるように、時刻カウント部１１と、ハートビート受信部１２と、タイムアウト時間変更部１３と、ダウン判定部１４とを有する。
【００１９】
時刻カウント部１１は、情報処理装置１０（自装置）の時刻をカウントする。また、ハートビート受信部１２は、相手装置が送信したハートビートパケットを受信する。このハートビートパケットには、送信側の装置である相手装置がカウントした時刻による、当該パケットの送信時刻が含まれている。
【００２０】
タイムアウト時間変更部１３は、ハートビート受信部１２により受信された時間的に連続する２つのハートビートパケットの受信時刻の差が、これら２つのハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くする。ここで、ハートビートパケットの受信時刻とは、ハートビートパケットの受信側である情報処理装置１０の時刻カウント部１１によりカウントされた時刻をいう。これに対し、２つのハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔は、送信側の時計に基づく送信間隔に対応しており、想定される受信間隔と言える。すなわち、タイムアウト時間変更部１３は、前回受信したハートビートパケットと今回受信したハートビートパケットについて、自装置の時計に基づく受信間隔と、想定される受信間隔とを比較する。そして、タイムアウト時間変更部１３は、自装置の時計に基づく受信間隔が、想定される受信間隔よりも大きい場合、タイムアウト時間を長くするよう変更する。
【００２１】
ダウン判定部１４は、送信側の装置である相手装置からのハートビートパケットをハートビート受信部１２がタイムアウト時間内に受信しない場合、相手装置にダウンが発生したと判定する。
【００２２】
ここで、相手装置が高負荷状態に陥り、相手装置における時刻カウントに遅延が生じた状況を想定する。この場合、相手装置は、所定の送信時間間隔Ｔ１でハートビートパケットを送信するために、当該装置の時刻カウントで送信時間間隔Ｔ１がカウントされる度に、ハートビートパケットを送信する。しかしながら、時刻カウントに遅延が生じているため、実際の送信時間間隔は、Ｔ１よりも大きいＴ２となっている。ただし、送信されるハートビートパケットには、当該装置の時計がカウントした送信時刻が付されているため、ハートビートパケットに付された送信時刻の間隔を見る限り、送信時間間隔はＴ１である。
【００２３】
このとき、情報処理装置１０のタイムアウト時間変更部１３は、相手装置から送信された時間的に連続する２つのハートビートパケットについて、以下のように判定する。すなわち、タイムアウト時間変更部１３は、両ハートビートパケットの自装置の時計に基づく受信間隔はＴ２であり、ハートビートパケットに付された送信時刻から得られる想定される受信間隔Ｔ１よりも大きいと判定する。このため、タイムアウト時間変更部１３は、タイムアウト時間を所定の時間よりも長い時間へと変更する。
【００２４】
したがって、情報処理装置１０によれば、相手装置に遅延が発生した場合に、タイムアウト時間が長くなるように変更されるので、相手装置がダウンしたとダウン判定部１４が判定することを防ぐことができる。すなわち、ダウンが発生していないにもかかわらずダウしていると判定してしまう誤判定を抑制することができる。
【００２５】
次に、本発明にかかる実施の形態の概要のもう一例について説明する。図２は、実施の形態にかかる情報処理装置の概要を示すブロック図である。情報処理装置２０も情報処理装置１０と同様、例えば、ＨＡクラスタシステムを構成する複数のサーバのうちのいずれかである。情報処理装置２０も、一例としては、仮想マシン上に構築されるが、物理環境で構築されてもよい。
【００２６】
情報処理装置２０も、ＨＡクラスタシステムを構成する他の情報処理装置との間で、通信を行い、相互に死活監視を行う。なお、具体的な死活監視方法は、上述した通りである。
【００２７】
ここで、情報処理装置２０は、図２に示されるように、時刻カウント部２１と、ハートビート受信部２２と、ハートビート送信部２３と、送信時間間隔変更部２４とを有する。
【００２８】
時刻カウント部２１は、情報処理装置２０（自装置）の時刻をカウントする。また、ハートビート受信部２２は、相手装置が送信したハートビートパケットを受信する。
【００２９】
ハートビート送信部２３は、設定された送信時間間隔で、ハートビートパケットを相手装置に対して送信する。ここで、ハートビート送信部２３が送信するハートビートパケットには、時刻カウント部２１がカウントした時刻による送信時刻が含まれる。なお、ハートビート受信部２２が受信するハートビートパケットも同様に、送信側の装置である相手装置がカウントした時刻による、当該パケットの送信時刻を含んでいる。
【００３０】
送信時間間隔変更部２４は、ハートビート受信部２２により受信された時間的に連続する２つのハートビートパケットの受信時刻の差が、これら２つのハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも小さい場合に、自装置が送信するハートビートパケットの送信時間間隔を予め定められた時間間隔よりも短くする。
【００３１】
すなわち、送信時間間隔変更部２４は、前回受信したハートビートパケットと今回受信したハートビートパケットについて、自装置の時計に基づく受信間隔と、想定される受信間隔とを比較する。そして、送信時間間隔変更部２４は、自装置の時計に基づく受信間隔が、想定される受信間隔よりも小さい場合、送信時間間隔を短くするよう変更する。
【００３２】
ここで、情報処理装置２０が高負荷状態に陥り、時刻カウント部２１による時刻カウントに遅延が生じた状況を想定する。ここで、相手装置から受信したハートビートパケットに記載されている送信時刻から算出される送信時間間隔がＴ１であるとする。しかし、時刻カウント部２１の時刻カウントには遅延が生じているため、時刻カウント部２１による連続する２つのハートビートパケットの受信間隔は、Ｔ１よりも短いＴ３となってしまう。
【００３３】
このとき、情報処理装置２０の送信時間間隔変更部２４は、相手装置から送信された時間的に連続する２つのハートビートパケットについて、以下のように判定する。すなわち、送信時間間隔変更部２４は、両ハートビートパケットの自装置の時計に基づく受信間隔はＴ３であり、ハートビートパケットに付された送信時刻から得られる想定される受信間隔Ｔ１よりも小さいと判定する。このため、送信時間間隔変更部２４は、送信時間間隔を所定の時間間隔よりも短い時間間隔へと変更する。
【００３４】
したがって、情報処理装置２０によれば、自装置に遅延が発生した場合に、自装置が送信するハートビートパケットの送信時間間隔が短くなるように変更される。これにより、実際の送信時間間隔が延びることを抑制することができる。したがって、情報処理装置２０がダウンしたと相手装置に誤判定されてしまうことを抑制することができる。
【００３５】
＜実施の形態の説明＞
以下、実施の形態の詳細について説明する。図３は、実施の形態にかかるＨＡクラスタシステム１の構成を示すブロック図である。図３に示すように、ＨＡクラスタシステム１は、情報処理装置３０Ａ、情報処理装置３０Ｂを有する。情報処理装置３０Ａ及び情報処理装置３０Ｂは、ネットワーク３１を介して、相互に通信可能に接続されている。なお、ネットワーク３１は、有線ネットワークでもよいし、無線ネットワークでもよい。以下、情報処理装置３０Ａと３０Ｂの総称として、情報処理装置３０ということがある。
【００３６】
ＨＡクラスタシステム１において、情報処理装置３０Ａ又は情報処理装置３０Ｂのいずれか一方が、稼働系として動作し、他方が待機系として動作する。例えば、ＨＡクラスタシステム１は、通常時、稼働系として動作している情報処理装置３０により所定のサービスを提供し、稼働系として動作している情報処理装置３０に異常が発生した際に、フェールオーバーを実施し、待機系であった情報処理装置３０が稼働系として動作して所定のサービスを提供する。なお、図３で示した例では、ＨＡクラスタシステム１は、２つの情報処理装置から構成されているが、３つ以上の情報処理装置から構成されてもよい。
【００３７】
情報処理装置３０Ａ及び情報処理装置３０Ｂは、ＨＡクラスタシステム１を構成するサーバであり、仮想マシン上に構築されている。したがって、情報処理装置３０Ａ及び情報処理装置３０Ｂは、コンピュータとしての機能を備えている。なお、本実施の形態では、情報処理装置３０が仮想マシン上に構築されているものとして説明するが、情報処理装置３０は物理環境で構築されてもよい。
【００３８】
情報処理装置３０Ａ及び情報処理装置３０Ｂは、通信を行い、相互に死活監視を行う。より具体的には、情報処理装置３０Ａは、予め定められた送信時間間隔で、ハートビートパケットを情報処理装置３０Ｂに対して送信する。また、情報処理装置３０Ｂも、予め定められた送信時間間隔で、ハートビートパケットを情報処理装置３０Ａに対して送信する。なお、情報処理装置３０Ａにおける送信時間間隔と、情報処理装置３０Ｂにおける送信時間間隔は、同じとは限らない。
【００３９】
また、情報処理装置３０Ａは、情報処理装置３０Ｂからのハートビートパケットを予め定められたタイムアウト時間内に受信できない場合、情報処理装置３０Ｂがダウンを起こしたと判定する。同様に、情報処理装置３０Ｂは、情報処理装置３０Ａからのハートビートパケットを予め定められたタイムアウト時間内に受信できない場合、情報処理装置３０Ａがダウンを起こしたと判定する。なお、情報処理装置３０Ａにおけるタイムアウト時間と、情報処理装置３０Ｂにおけるタイムアウト時間は、同じとは限らない。
【００４０】
以下、情報処理装置３０の具体的構成について説明するが、情報処理装置３０Ｂは情報処理装置３０Ａと同様の構成を備えるため、以下では、情報処理装置３０Ａの構成についてのみ説明し、情報処理装置３０Ｂの構成の説明を省略する。図４は、実施の形態にかかる情報処理装置３０Ａ（３０Ｂ）の構成を示すブロック図である。
【００４１】
情報処理装置３０Ａは、設定値情報記憶部３００と、時刻カウント部３０１と、ハートビート送信部３０２と、ハートビート受信部３０３と、ダウン判定部３０４と、タイムアウト時間変更部３０５と、送信時間間隔変更部３０６とを有する。
【００４２】
時刻カウント部３０１、ハートビート送信部３０２、ハートビート受信部３０３、ダウン判定部３０４、タイムアウト時間変更部３０５、及び送信時間間隔変更部３０６は、例えば、ＣＰＵの制御によって、プログラムが実行されることによって実現できる。より具体的には、メモリなどの記憶装置に格納されたプログラムを、ＣＰＵの制御によって実行して実現する。また、各構成要素は、プログラムによるソフトウェアで実現することに限ることなく、ハードウェア、ファームウェア、及びソフトウェアのうちのいずれかの組み合わせ等により実現してもよい。
【００４３】
設定値情報記憶部３００は、例えばメモリ、ストレージなどの記憶装置であり、上述の送信時間間隔の設定値及び上述のタイムアウト時間の設定値を記憶する。時刻カウント部３０１は、情報処理装置３０Ａの時刻をカウントする。ただし、時刻カウント部３０１による時刻のカウントは、情報処理装置３０Ａの負荷状況等に応じて、遅延する可能性がある。
【００４４】
ハートビート送信部３０２は、設定値情報記憶部３００に記憶された設定値を参照し、設定された送信時間間隔で、ハートビートパケットを情報処理装置３０Ｂに対して送信する。ハートビート送信部３０２が送信するハートビートパケットには、時刻カウント部３０１がカウントした時刻による送信時刻が含まれる。
【００４５】
ハートビート受信部３０３は、情報処理装置３０Ｂが送信したハートビートパケットを受信する。なお、情報処理装置３０Ｂが送信するハートビートパケットには、情報処理装置３０Ｂの時刻カウント部３０１がカウントした時刻による送信時刻が含まれている。
【００４６】
ダウン判定部３０４は、設定値情報記憶部３００に記憶された設定値を参照し、設定されたタイムアウト時間内に情報処理装置３０Ｂからのハートビートパケットをハートビート受信部３０３が受信しない場合、情報処理装置３０Ｂにダウンが発生したと判定する。
【００４７】
タイムアウト時間変更部３０５は、ハートビート受信部３０３により受信された時間的に連続する情報処理装置３０Ｂからの２つのハートビートパケットの受信時刻の差が、これら２つのハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長い時間へと変更する。すなわち、タイムアウト時間変更部３０５は、設定値情報記憶部３００に記憶されたタイムアウト時間の設定値を書き換える。
【００４８】
言い換えると、タイムアウト時間変更部３０５は、情報処理装置３０Ｂから前回受信したハートビートパケットの時刻カウント部３０１による受信時刻と情報処理装置３０Ｂから今回受信したハートビートパケットの時刻カウント部３０１による受信時刻との差が、ハートビートパケットに含まれる送信時刻から算出される想定される受信間隔よりも大きい場合に、タイムアウト時間を変更する。
【００４９】
具体的には、以下の式（１）を満たす場合に、タイムアウト時間変更部３０５は、タイムアウト時間を所定値よりも長い時間へと変更する。
【００５０】
Ｔｎ−Ｔｎ-1＞Ｔ  ・・・（１）
【００５１】
ここで、Ｔｎは今回受信したハートビートパケットの時刻カウント部３０１による受信時刻を示し、Ｔｎ-1は、前回受信したハートビートパケットの時刻カウント部３０１による受信時刻を示す。Ｔは、受信した２つのハートビートパケットに基づく、想定される受信間隔であり、例えば、以下の式（２）のように算出される。
【００５２】
Ｔ＝Ｔｍ−Ｔｍ-1  ・・・（２）
【００５３】
ここで、Ｔｍは今回受信したハートビートパケットに含まれる送信時刻を示し、Ｔｍ-1は、前回受信したハートビートパケッに含まれる送信時刻を示す。
【００５４】
このようにタイムアウト時間変更部３０５は、上記式（１）が満たされる場合、相手装置すなわち情報処理装置３０Ｂに遅延が発生していると判断し、タイムアウト時間を延ばす。
【００５５】
タイムアウト時間変更部３０５による変更後のタイムアウト時間は、例えば、予め定められた固定値であってもよいし、変更前のタイムアウト時間に対する固定倍率の時間であってもよい。すなわち、タイムアウト時間変更部３０５は、上記式（１）が満たされる場合、通常時のタイムアウト時間の例えば２倍の時間に変更してもよい。また、これに限らず、タイムアウト時間変更部３０５は、時間的に連続する２つのハートビートパケットの時刻カウント部３０１による受信時刻の差と、想定される受信間隔との乖離の程度に応じた時間だけタイムアウト時間を長くしてもよい。これにより、情報処理装置３０Ｂの遅延の度合いに応じてタイムアウト時間を変更できるため、ダウン誤検知をより減らすことが可能となる。
【００５６】
また、タイムアウト時間変更部３０５は、タイムアウト時間を所定値よりも長い時間に変更した後、情報処理装置３０Ｂの遅延が解消した際には、タイムアウト時間を所定値に戻すよう再度変更する。すなわち、情報処理装置３０Ｂから前回受信したハートビートパケットの時刻カウント部３０１による受信時刻と情報処理装置３０Ｂから今回受信したハートビートパケットの時刻カウント部３０１による受信時刻との差が、ハートビートパケットに含まれる送信時刻から算出される想定される受信間隔に等しくなった場合、タイムアウト時間変更部３０５は、タイムアウト時間を予め定められた時間へ戻す。さらに言い換えると、タイムアウト時間変更部３０５は、式（１）を満たした後、Ｔｎ−Ｔｎ-1＝Ｔとなると、タイムアウト時間を元に戻す。
【００５７】
送信時間間隔変更部３０６は、ハートビート受信部３０３により受信された時間的に連続する情報処理装置３０Ｂからの２つのハートビートパケットの受信時刻の差が、これら２つのハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも小さい場合に、ハートビートパケットの送信時間間隔を予め定められた時間間隔よりも短くする。すなわち、送信時間間隔変更部３０６は、設定値情報記憶部３００に記憶された送信時間間隔の設定値を書き換える。
【００５８】
具体的には、以下の式（３）を満たす場合に、送信時間間隔変更部３０６は、送信時間間隔を所定値よりも短い時間間隔へと変更する。
【００５９】
Ｔｎ−Ｔｎ-1＜Ｔ  ・・・（３）
【００６０】
このように送信時間間隔変更部３０６は、上記式（３）が満たされる場合、自装置すなわち情報処理装置３０Ａに遅延が発生していると判断し、送信時間間隔の設定値を小さくする。
【００６１】
送信時間間隔変更部３０６による変更後の送信時間間隔は、例えば、予め定められた固定値であってもよいし、変更前の送信時間間隔に対する固定倍率の時間間隔であってもよい。すなわち、送信時間間隔変更部３０６は、上記式（３）が満たされる場合、通常時の送信時間間隔の例えば１／２倍の時間間隔に変更してもよい。また、これに限らず、送信時間間隔変更部３０６は、時間的に連続する２つのハートビートパケットの時刻カウント部３０１による受信時刻の差と、想定される受信間隔との乖離の程度に応じた時間だけ送信時間間隔を短くしてもよい。これにより、自装置の遅延の度合いに応じて送信時間間隔を変更できるため、相手装置にダウン誤検知されることをより減らすことが可能となる。
【００６２】
また、送信時間間隔変更部３０６は、ハートビートパケットの送信時間間隔を短くするよう変更した後、自装置の遅延が解消した際には、送信時間間隔を所定値に戻すよう再度変更する。すなわち、情報処理装置３０Ｂから前回受信したハートビートパケットの時刻カウント部３０１による受信時刻と情報処理装置３０Ｂから今回受信したハートビートパケットの時刻カウント部３０１による受信時刻との差が、ハートビートパケットに含まれる送信時刻から算出される想定される受信間隔に等しくなった場合、送信時間間隔変更部３０６は、送信時間間隔を予め定められた時間間隔へ戻す。さらに言い換えると、送信時間間隔変更部３０６は、式（３）満たした後、Ｔｎ−Ｔｎ-1＝Ｔとなると、送信時間間隔を元に戻す。
【００６３】
ここで、具体例を交えて情報処理装置３０の動作について説明する。
（遅延が発生し始めた時の動作例）
まず、遅延の初期段階の動作について説明する。
情報処理装置３０Ａ及び情報処理装置３０Ｂのハートビートパケットの送信時間間隔の現在の設定値は、いずれも１であるとする。すなわち、通常時の送信時間間隔が１であるものと仮定する。また、情報処理装置３０Ａ及び情報処理装置３０Ｂのタイムアウト時間の現在の設定値は、いずれも３であるとする。すなわち、通常時のタイムアウト時間が３であるものと仮定する。ここで、情報処理装置３０Ｂに遅延が発生したとする。
【００６４】
図５は、実際の時刻と、情報処理装置３０Ａの時刻カウント部３０１による時刻と、情報処理装置３０Ｂの時刻カウント部３０１による時刻とを比較する表であり、遅延が発生し始めた時の一例を示している。
【００６５】
情報処理装置３０Ａは遅延が発生していないため、情報処理装置３０Ａにおける時刻カウント部３０１による時刻と実際の時刻との間にずれがない。このため、情報処理装置３０Ａの送信時間間は、実際の時刻を基準として見ても、１である。これに対し、情報処理装置３０Ｂは遅延が発生しているため、情報処理装置３０Ｂにおける時刻カウント部３０１による時刻は、実際の時刻に比べて遅れている。このため、情報処理装置３０Ｂは、自身の時刻カウント部３０１の時刻に従って、設定された送信時間間隔でハートビートパケットを送信するが、実際の時刻における時刻１と時刻３での送信となってしまっている。このため、情報処理装置３０Ｂの送信時間間隔は、実際の時刻を基準としてみると、２である。
【００６６】
ここで、情報処理装置３０Ａは、次のように動作する。情報処理装置３０Ａが情報処理装置３０Ｂから受信した直近の２つのハートビートパケットに含まれる時刻情報は、１と２である。これに対し、受信時刻（情報処理装置３０Ａの時刻カウント部３０１による時刻）は、１と３である。すなわち、Ｔｍ＝２、Ｔｍ−１＝１、Ｔｎ＝３、Ｔｎ−１＝１である。したがって、上記式（１）が満たされるため、情報処理装置３０Ａのタイムアウト時間変更部３０５は、タイムアウト時間の設定値を例えば６に変更する。
【００６７】
一方、情報処理装置３０Ｂは、次のように動作する。情報処理装置３０Ｂが情報処理装置３０Ａから受信した直近の２つのハートビートパケットに含まれる時刻情報は、２と３である。これに対し、受信時刻（情報処理装置３０Ｂの時刻カウント部３０１による時刻）は、１．５と２である。すなわち、Ｔｍ＝３、Ｔｍ−１＝２、Ｔｎ＝２、Ｔｎ−１＝１．５である。したがって、上記式（３）が満たされるため、情報処理装置３０Ｂの送信時間間隔変更部３０６は、ハートビートパケットの送信時間間隔の設定値を例えば０．５に変更する。
【００６８】
（遅延が拡大した時の動作例）
次に、情報処理装置３０Ｂにおいて、遅延が拡大した時の動作について説明する。すなわち、情報処理装置３０Ｂが遅延の初期段階の後の本格的な遅延状態に陥った際の動作について説明する。なお、情報処理装置３０Ａのハートビートパケットの送信時間間隔の現在の設定値は１のままである。これに対し、情報処理装置３０Ｂのハートビートパケットの送信時間間隔の現在の設定値は、０．５に変更されている。また、情報処理装置３０Ｂのタイムアウト時間の現在の設定値は、３のままである。これに対し、情報処理装置３０Ａのタイムアウト時間の現在の設定値は、６に変更されている。
【００６９】
図６は、実際の時刻と、情報処理装置３０Ａの時刻カウント部３０１による時刻と、情報処理装置３０Ｂの時刻カウント部３０１による時刻とを比較する表であり、本格的な遅延状態に陥った際の一例を示している。なお、図６では、理解を容易にするために、表中に記載の開始時刻は１としている。
【００７０】
情報処理装置３０Ａは遅延が発生していないため、情報処理装置３０Ａの送信時間間隔は、実際の時刻を基準として見ても、１である。これに対し、情報処理装置３０Ｂは遅延が拡大しているため、情報処理装置３０Ｂにおける時刻カウント部３０１による時刻は、実際の時刻に比べてさらに遅れている。このため、情報処理装置３０Ｂは、自身の時刻カウント部３０１の時刻に従って、設定された送信時間間隔（０．５）でハートビートパケットを送信するが、実際の時刻における時刻１と時刻６での送信となってしまっている。このため、情報処理装置３０Ｂの送信時間間隔は、実際の時刻を基準としてみると、５である。
【００７１】
ここで、情報処理装置３０Ａは、次のように動作する。情報処理装置３０Ａが情報処理装置３０Ｂから受信した直近の２つのハートビートパケットに含まれる時刻情報は、１と１．５である。これに対し、受信時刻（情報処理装置３０Ａの時刻カウント部３０１による時刻）は、１と６である。すなわち、Ｔｍ＝１．５、Ｔｍ−１＝１、Ｔｎ＝６、Ｔｎ−１＝１である。したがって、上記式（１）が満たされるため、情報処理装置３０Ａのタイムアウト時間変更部３０５は、タイムアウト時間の設定値を変更値である６のまま維持する。
【００７２】
ここで、情報処理装置３０Ａにおけるタイムアウト時間は６に設定されているため、情報処理装置３０Ｂの送信時間間隔が５（＝Ｔｎ−Ｔｎ−１）であるが、情報処理装置３０Ａのダウン判定部３０４は、情報処理装置３０Ｂをダウンしていると検知しない。すなわち、ダウン判定部３０４は、誤検知しない。
【００７３】
一方、情報処理装置３０Ｂは、次のように動作する。情報処理装置３０Ｂが情報処理装置３０Ａから受信した直近の２つのハートビートパケットに含まれる時刻情報は、５と６である。これに対し、受信時刻（情報処理装置３０Ｂの時刻カウント部３０１による時刻）は、１．４と１．５である。すなわち、Ｔｍ＝６、Ｔｍ−１＝５、Ｔｎ＝１．５、Ｔｎ−１＝１．４である。したがって、上記式（３）が満たされるため、情報処理装置３０Ｂの送信時間間隔変更部３０６は、ハートビートパケットの送信時間間隔の設定値を変更値である０．５のまま維持する。
【００７４】
（遅延が解消した時の動作例）
次に、情報処理装置３０Ｂにおいて、遅延が解消した時の動作について説明する。なお、情報処理装置３０Ａのハートビートパケットの送信時間間隔の現在の設定値は１のままであり、情報処理装置３０Ｂのハートビートパケットの送信時間間隔の現在の設定値は、０．５のままである。また、情報処理装置３０Ｂのタイムアウト時間の現在の設定値は、３のままであり、情報処理装置３０Ａのタイムアウト時間の現在の設定値は、６のままである。
【００７５】
図７は、実際の時刻と、情報処理装置３０Ａの時刻カウント部３０１による時刻と、情報処理装置３０Ｂの時刻カウント部３０１による時刻とを比較する表であり、遅延が解消した時の一例を示している。なお、図７では、理解を容易にするために、表中に記載の開始時刻は１としている。
【００７６】
情報処理装置３０Ａは遅延が発生していないため、情報処理装置３０Ａの送信時間間隔は、実際の時刻を基準として見ても、１である。情報処理装置３０Ｂは遅延が解消しており、情報処理装置３０Ｂにおける時刻カウント部３０１による時刻と実際の時刻との間にずれがない。ただし、情報処理装置３０Ｂの送信時間間隔は、０．５に設定されているため、情報処理装置３０Ｂは、実際の時刻を基準として見ても、０．５間隔でハートビートパケットを送信する。
【００７７】
ここで、情報処理装置３０Ａは、次のように動作する。情報処理装置３０Ａが情報処理装置３０Ｂから受信した直近の２つのハートビートパケットに含まれる時刻情報は、２．５と３である。また、受信時刻（情報処理装置３０Ａの時刻カウント部３０１による時刻）も、２．５と３である。すなわち、Ｔｍ＝３、Ｔｍ−１＝２．５、Ｔｎ＝３、Ｔｎ−１＝２．５である。したがって、Ｔｎ−Ｔｎ-1＝Ｔとなるため、情報処理装置３０Ａのタイムアウト時間変更部３０５は、タイムアウト時間の設定値を元の値である３に戻す。
【００７８】
一方、情報処理装置３０Ｂは、次のように動作する。情報処理装置３０Ｂが情報処理装置３０Ａから受信した直近の２つのハートビートパケットに含まれる時刻情報は、２と３である。また、受信時刻（情報処理装置３０Ｂの時刻カウント部３０１による時刻）も、２と３である。すなわち、Ｔｍ＝３、Ｔｍ−１＝２、Ｔｎ＝３、Ｔｎ−１＝２である。したがって、Ｔｎ−Ｔｎ-1＝Ｔとなるため、情報処理装置３０Ｂの送信時間間隔変更部３０６は、ハートビートパケットの送信時間間隔の設定値を元の値である１に戻す。
【００７９】
次に、情報処理装置３０におけるハートビートパケットの送信処理及び受信処理に関わる動作についてフローチャートに基づいて説明する。
【００８０】
図８は、情報処理装置３０におけるハートビートパケットの送信処理に関わる動作について示すフローチャートである。
【００８１】
ステップ１００（Ｓ１００）において、ハートビート送信部３０２は、ハートビートパケットに時刻カウント部３０１によりカウントされた現在の時刻情報を入れる。
【００８２】
ステップ１０１（Ｓ１０１）において、ハートビート送信部３０２は、相手サーバにハートビートパケットを送信する。
【００８３】
ステップ１０２（Ｓ１０２）において、ハートビート送信部３０２は、設定値情報記憶部３００を参照し、現在設定されている送信時間間隔だけスリープする。設定されている送信時間間隔が経過すると、再びステップ１００〜１０２の処理を行う。
【００８４】
図９は、情報処理装置３０におけるハートビートパケットの受信処理に関わる動作について示すフローチャートである。
【００８５】
ステップ２００（Ｓ２００）において、ハートビート受信部３０３は、相手サーバから送信されるハートビートパケットを待ち受ける。ハートビート受信部３０３が設定されているタイムアウト時間内に相手サーバからハートビートパケットを受信できない場合、処理はステップ２０１へ移行する。これに対し、ハートビート受信部３０３が設定されているタイムアウト時間内に相手サーバからハートビートパケットを受信した場合、処理はステップ２０２へ移行する。
【００８６】
ステップ２０１（Ｓ２０１）では、ダウン判定部３０４が、相手サーバがダウンしていると判定する。
【００８７】
一方、ステップ２０２（Ｓ２０２）では、相手サーバ又は自サーバの遅延が判定される。具体的には、ＴｎとＴｎ−１の差分とＴｍとＴｍ−１の差分とが比較され、上記式（１）又は上記式（３）が満たされるか否かが判定される。上記式（３）を満たす場合、自サーバが遅延しているとして、処理はステップ２０３へ移行する。また、上記式（１）を満たす場合、相手サーバが遅延しているとして、処理はステップ２０４へ移行する。さらに、上記式（１）も式（３）も満たさない場合、遅延が発生していなものとして、処理はステップ２０５へ移行する。なお、処理は、ステップ２０３、２０４又は２０５を実施後、再び、ステップ２００に戻る。
【００８８】
ステップ２０３（Ｓ２０３）では、送信時間間隔変更部３０６が、ハートビートパケットの送信時間間隔を予め定められた時間間隔よりも短くするよう設定値を変更する。なお、既に、予め定められた時間間隔よりも短い設定値へと変更済みである場合には、送信時間間隔変更部３０６は、変更された設定値を維持する。
【００８９】
ステップ２０４（Ｓ２０４）では、タイムアウト時間変更部３０５が、タイムアウト時間を予め定められた時間よりも長くするよう設定値を変更する。なお、既に、予め定められた時間よりも長い設定値へと変更済みである場合には、タイムアウト時間変更部３０５は、変更された設定値を維持する。
【００９０】
ステップ２０５（Ｓ２０５）では、送信時間間隔変更部３０６は、送信時間間隔の設定値を予め定められた時間間隔（通常時の送信時間間隔）へと戻す。なお、既に、設置値が通常時の送信時間間隔である場合には、送信時間間隔変更部３０６は、現在の設定値を維持する。また、タイムアウト時間変更部３０５は、タイムアウト時間の設定値を予め定められた時間（通常時のタイムアウト時間）へと戻す。なお、既に、設置値が通常時のタイムアウト時間である場合には、タイムアウト時間変更部３０５は、現在の設定値を維持する。
【００９１】
以上、実施の形態について説明した。
ところで、ダウンの誤判定を抑制する方法としては、上記の方法以外に、例えば、以下のような方法も考え得る。
【００９２】
例えば、タイムアウト時間の設定値を常に長く設定しておくことで、相手サーバに遅延が発生しても、相手サーバをサーバダウンと誤検知しにくくすることができる。しかし、この方法では、タイムアウト時間の設定値が常に長いため、実際にサーバダウンが発生した場合に、それが検知されるまでに常に多くの時間を要してしまうというデメリットがある。サーバダウンを検知するまでに多くの時間を要すると、クラスタシステムにより提供される業務プログラムはその間、停止したままの状態となってしまい好ましくない。
【００９３】
また、他の方法として、例えば、ハートビートの送信間隔の設定値を常に短く設定しておくことで、自サーバに遅延が発生しても、遅延の影響を受けにくくすることができる。すなわち、相手サーバに、サーバダウンと誤検知されることを防ぐことができる。しかし、この方法の場合、正常時も送信間隔が短いため、余計なネットワーク負荷をかけることになる。
【００９４】
また、例えば、ハートビートの受信がタイムアウトした場合、ネットワーク経由で強制的に相手サーバを電源断することで、誤検知であったとしても強制的にサーバを停止させるという方法も考えられる。これにより、両方のサーバで業務プログラムが並行して稼働してしまうことを防ぐことができる。しかし、強制的にサーバを電源断することはサーバのファイルシステムの破壊を招く可能性があるというデメリットがある。
【００９５】
また、別の方法として、例えば、システム外の第３者（例えば、ＢＭＣ（Baseboard Management Controller）や、仮想マシンを用いる場合におけるホストＯＳ等から、サーバの電源状態を確認することで、サーバの起動状態を確認することができる。しかし、システム外の第３者等の信頼性は、その第３者等のシステム構成に依存する。また、サーバの電源状態が分かったとしても、その上で動作しているクラスタの状態までは判断できない。さらに、当然ながら、システム外の第３者等が存在していないとこの方法は採用できない。
【００９６】
これに対し、上記実施の形態にかかるＨＡクラスタシステム１によれば、上述の欠点を補いつつ、ダウンの誤判定を抑制することができる。これにより複数のサーバで業務が並行して稼働してしまい、ＨＡクラスタシステムが不正な状態となることを防ぐことができる。
【００９７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記の実施の形態では、算出される受信間隔（Ｔ）は、式（２）に示される定義に限らず、予め定められた許容誤差を含んでもよい。この場合、例えば、タイムアウト時間変更部３０５において用いられる受信間隔Ｔは、以下の式（４）により表されてもよい。なお、ＴＥは、許容誤差を表す。
【００９８】
Ｔ＝Ｔｍ−Ｔｍ-1＋ＴＥ  ・・・（４）
【００９９】
また、この場合、例えば、送信時間間隔変更部３０６において用いられる受信間隔Ｔは、以下の式（５）により表されてもよい。
【０１００】
Ｔ＝Ｔｍ−Ｔｍ-1−ＴＥ  ・・・（５）
【０１０１】
また、上記の実施の形態では、情報処理装置３０は、タイムアウト時間変更部３０５及び送信時間間隔変更部３０６を備えるものとして説明したが、タイムアウト時間変更部３０５又は送信時間間隔変更部３０６のいずれか一方を備える構成としてもよい。ただし、情報処理装置３０は、タイムアウト時間変更部３０５及び送信時間間隔変更部３０６の両方を備えることが好ましい。これは、次のような理由による。
【０１０２】
送信時間間隔変更部３０６のみの場合、遅延が発生しているサーバ側の状態によっては送信間隔が短過ぎると、設定通りに動作できない可能性がある。特に、ホストＯＳ又はハイパーバイザ側の高負荷によって仮想サーバの遅延が発生している場合、エミュレートされた仮想サーバのＮＩＣ（Network Interface Card）及びネットワークも健全に動作できていない可能性がある。また、タイムアウト時間を延ばし過ぎると、本当にサーバが停止した場合に検知が遅くなるため、タイムアウト時間を際限なく長くすることはできない。このため、タイムアウト時間の変更のみに頼るのは好ましくない。したがって、タイムアウト時間変更部３０５及び送信時間間隔変更部３０６を併用することで、タイムアウト時間を際限なく長くすることなく、サーバの停止を誤検知することを防ぐことができる。
【０１０３】
また、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１０４】
また、例えば、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
自装置の時刻をカウントする時刻カウント手段と、
送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビート受信手段と、
前記ハートビート受信手段により受信された時間的に連続する２つの前記ハートビートパケットについての前記時刻カウント手段による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更手段と、
前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを前記ハートビート受信手段が受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定手段と
を有する情報処理装置。
（付記２）
前記タイムアウト時間変更手段は、前記タイムアウト時間を変更した場合、前記２つの受信時刻の差が、前記算出される受信間隔に等しいとき、前記タイムアウト時間を前記予め定められた時間へ戻す
付記１に記載の情報処理装置。
（付記３）
設定された送信時間間隔で、前記時刻カウント手段がカウントした時刻による送信時刻が含まれるハートビートパケットを送信するハートビート送信手段と、
前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更手段と
をさらに有する付記１又は２に記載の情報処理装置。
（付記４）
前記送信時間間隔変更手段は、前記送信時間間隔を変更した場合、前記２つの受信時刻の差が、前記算出される受信間隔に等しいとき、前記送信時間時間を前記予め定められた時間間隔へ戻す
付記３に記載の情報処理装置。
（付記５）
前記算出される受信間隔は、予め定められた許容誤差を含む
付記１乃至４のいずれか１項に記載の情報処理装置。
（付記６）
前記タイムアウト時間変更手段は、前記２つの受信時刻の差と前記算出される受信間隔との乖離の程度に応じた時間だけ前記タイムアウト時間を長くする
付記１に記載の情報処理装置。
（付記７）
前記信時間間隔変更手段は、前記２つの受信時刻の差と前記算出される受信間隔との乖離の程度に応じた時間だけ前記送信時間間隔を短くする
付記３に記載の情報処理装置。
（付記８）
送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビートパケット受信ステップと、
受信した時間的に連続する２つの前記ハートビートパケットについての、受信側の装置のカウントした時刻による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更ステップと、
前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定ステップと
を有するダウン判定方法。
（付記９）
設定された送信時間間隔で、ハートビートパケットを送信するハートビートパケット送信ステップと、
前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更ステップと
をさらに有し、
前記ハートビートパケット送信ステップで送信されるハートビートパケットは、該ハートビートパケットを送信する装置のカウントした時刻による送信時刻を含む
する付記８に記載のダウン判定方法。
（付記１０）
複数の情報処理装置を備え、
前記複数の情報処理装置は、それぞれ、
自装置の時刻をカウントする時刻カウント手段と、
設定された送信時間間隔で、前記複数の情報処理装置のうちの他の情報処理装置に、前記時刻カウント手段がカウントした時刻による送信時刻が含まれるハートビートパケットを送信するハートビート送信手段と、
前記他の情報処理装置がカウントした時刻による送信時刻が含まれるハートビートパケットを、前記他の情報処理装置から受信するハートビート受信手段と、
前記ハートビート受信手段により受信された時間的に連続する２つの前記ハートビートパケットについての前記時刻カウント手段による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更手段と、
前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更手段と
前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを前記ハートビート受信手段が受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定手段と
を有するクラスタシステム。
（付記１１）
送信側の装置がカウントした時刻による送信時刻が含まれるハートビートパケットを受信するハートビートパケット受信ステップと、
受信した時間的に連続する２つの前記ハートビートパケットについての、受信側の装置のカウントした時刻による２つの受信時刻の差が、該２つの前記ハートビートパケットに含まれる２つの送信時刻の差に基づいて算出される受信間隔よりも大きい場合に、タイムアウト時間を予め定められた時間よりも長くするタイムアウト時間変更ステップと、
前記タイムアウト時間内に前記送信側の装置からのハートビートパケットを受信しない場合、前記送信側の装置にダウンが発生したと判定するダウン判定ステップと
を情報処理装置のコンピュータに実行させるプログラム。
（付記１２）
設定された送信時間間隔で、前記情報処理装置のカウントした時刻による送信時刻が含まれるハートビートパケットを送信するハートビートパケット送信ステップと、
前記２つの受信時刻の差が、前記算出される受信間隔よりも小さい場合に、前記送信時間間隔を予め定められた時間間隔よりも短くする送信時間間隔変更ステップと
をさらに前記コンピュータに実行させる付記１１に記載のプログラム。
【符号の説明】
【０１０５】
１    ＨＡクラスタシステム
１０、２０、３０Ａ、３０Ｂ    情報処理装置
１１、２１、３０１    時刻カウント部
１２、２２、３０３    ハートビート受信部
１３、３０５    タイムアウト時間変更部
１４、３０４    ダウン判定部
２３、３０２    ハートビート送信部
２４、３０６    送信時間間隔変更部
３１    ネットワーク
３００    設定値情報記憶部
【図１】
0006551111.tif 000002
【図２】
0006551111.tif 000003
【図３】
0006551111.tif 000004
【図４】
0006551111.tif 000005
【図５】
0006551111.tif 000006
【図６】
0006551111.tif 000007
【図７】
0006551111.tif 000008
【図８】
0006551111.tif 000009
【図９】
0006551111.tif 000010