(57)【要約】【課題】クラスタシステムにおける可用性を向上させる。【解決手段】本発明の実施形態にかかるクラスタシステム１００のノード１０は、正常動作中において、参照先の生存情報記憶装置２０に自ノードが正常動作中である旨を示す生存情報を記録し、参照先の生存情報記憶装置と生存情報の記録の成否とを示す成否情報を他のノードに通知する。次に、ノード１０は、参照先の生存情報記憶装置に対する複数のノードによる生存情報の記録の成否に基づいて、切替条件の成否を判定する。切替条件が成立したとき、他方の生存情報記憶装置２０を参照先として設定変更する。【選択図】図１
2008299369.tif 000002
【特許請求の範囲】
【請求項１】
相互に稼働状態を監視しつつ動作する複数の計算機と、
前記計算機が正常動作中である旨を示す生存情報を記憶する第１および第２の生存情報記憶装置と、を備え、
前記複数の計算機においては、前記第１および第２の生存情報記憶装置のうちの一方の生存情報記憶装置が参照先として共通設定され、かつ、前記複数の計算機から参照される生存情報記憶装置が同一となるように参照先を変更するための共通の切替条件が設定されており、
前記計算機は、
正常動作中において、参照先の生存情報記憶装置に自計算機が正常動作中である旨を示す生存情報を記録する生存通知部と、
前記参照先の生存情報記憶装置と前記生存情報の記録の成否とを示す成否情報を他の計算機に通知する成否通知部と、
他の計算機から通知された成否情報を参照し、前記参照先の生存情報記憶装置に対する前記複数の計算機による生存情報の記録の成否に基づいて、前記切替条件の成否を判定する切替判定部と、
前記切替条件が成立したとき、前記第１および第２の生存情報記憶装置のうちの他方の生存情報記録装置を参照先として設定変更する参照先変更部と、
を備えることを特徴とするクラスタシステム。
【請求項２】
前記複数の計算機の成否情報を保持する成否情報記憶装置をさらに備え、
前記成否通知部は、前記成否情報を他の計算機に通知するために、前記成否情報を前記成否情報記憶装置に記録し、
前記切替判定部は、前記成否情報記憶装置から他の計算機の成否情報を読み出すことにより、他の計算機の成否情報を参照することを特徴とする請求項１に記載のクラスタシステム。
【請求項３】
前記切替条件は、前記参照先の生存情報記憶装置に対する生存情報の記録に失敗した計算機の数が、所定の数以上となった時に成立する条件であることを特徴とする請求項１または２に記載のクラスタシステム。
【請求項４】
前記切替判定部は、過去の所定時点以降に他の計算機から通知された成否情報に基づいて、前記切替条件の成否を判定することを特徴とする請求項１から３のいずれかに記載のクラスタシステム。
【請求項５】
他の計算機と相互に稼働状態を監視しつつ動作する計算機であって、
自計算機が正常動作中である旨を示す生存情報を記録する第１および第２の生存情報記憶装置と接続され、前記第１および第２の生存情報記憶装置のうちの一方の生存情報記憶装置が、前記他の計算機と共通の参照先として設定され、かつ、前記他の計算機と同一の生存情報記憶装置を参照するように参照先を変更するための切替条件が、前記他の計算機と共通に設定され、
正常動作中において、参照先の生存情報記憶装置に自計算機が正常動作中である旨を示す生存情報を記録する生存通知部と、
前記参照先の生存情報記憶装置と前記生存情報の記録の成否とを示す成否情報を他の計算機に通知する成否通知部と、
他の計算機から通知された成否情報を参照し、前記参照先の生存情報記憶装置に対する自計算機および前記他の計算機による生存情報の記録の成否に基づいて、前記切替条件の成否を判定する切替判定部と、
前記切替条件が成立したとき、前記第１および第２の生存情報記憶装置のうちの他方の生存情報記録装置を参照先として設定変更する参照先変更部と、
を備えることを特徴とする計算機。
【請求項６】
他の計算機と相互に稼働状態を監視しつつ動作する計算機における障害対処方法であって、
正常動作中において、前記計算機が正常動作中である旨を示す生存情報を記録する第１および第２の生存情報記憶装置のうちの一方の生存情報記憶装置を参照するように前記他の計算機と共通に設定された参照先の生存情報記憶装置に、自計算機が正常動作中である旨を示す生存情報を記録する生存通知ステップと、
前記参照先の生存情報記憶装置と前記生存情報の記録の成否とを示す成否情報を他の計算機に通知する成否通知ステップと、
他の計算機から通知された成否情報を参照し、前記参照先の生存情報記憶装置に対する自計算機および前記他の計算機による生存情報の記録の成否に基づいて、自計算機から参照する生存情報記憶装置が前記他の計算機から参照する生存情報記憶装置と同一となるように参照先を変更するために前記他の計算機と共通に設定された切替条件の成否を判定する切替判定ステップと、
前記切替条件が成立したとき、前記第１および第２の生存情報記憶装置のうちの他方の生存情報記録装置を参照先として設定変更する参照先変更ステップと、
を備えることを特徴とする障害対処方法。
【請求項７】
他の計算機と相互に稼働状態を監視しつつ動作する計算機に、
正常動作中において、前記計算機が正常動作中である旨を示す生存情報を記録する第１および第２の生存情報記憶装置のうちの一方の生存情報記憶装置を参照するように前記他の計算機と共通に設定された参照先の生存情報記憶装置に、自計算機が正常動作中である旨を示す生存情報を記録する生存通知機能と、
前記参照先の生存情報記憶装置と前記生存情報の記録の成否とを示す成否情報を他の計算機に通知する成否通知機能と、
他の計算機から通知された成否情報を参照し、前記参照先の生存情報記憶装置に対する自計算機および前記他の計算機による生存情報の記録の成否に基づいて、自計算機から参照する生存情報記憶装置が前記他の計算機から参照する生存情報記憶装置と同一となるように参照先を変更するために前記他の計算機と共通に設定された切替条件の成否を判定する切替判定機能と、
前記切替条件が成立したとき、前記第１および第２の生存情報記憶装置のうちの他方の生存情報記録装置を参照先として設定変更する参照先変更機能と、
を実現させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムにおいて可用性を向上させる技術に関する。特に、複数の計算機（以下、「ノード」と呼ぶ。）と、それらノードにより共有される外部記憶装置（以下、「共有記憶装置」と呼ぶ。）とを備えるシステム（以下、「クラスタシステム」と呼ぶ。）において、可用性を向上させるクラスタシステム、計算機、および障害対処方法に関する。
【背景技術】
【０００２】
国際商取引が盛んに行われ、また、企業間競争が激化している時代背景にあって、情報処理システムには２４時間３６５日連続の正常運転が要求されてきている。特に金融や通信等のミッションクリティカルなシステムの場合、わずかなシステムの停止が、その企業のビジネスに致命的な打撃を与えることもある。
【０００３】
そのため、ミッションクリティカルなシステムにおいては、システムの可用性を向上させるため、クラスタシステムが採用されることが多い。（例えば、特許文献１参照。）クラスタシステムにおいては、スプリットブレイン状態を回避し、クラスタシステム全体の健全性を維持するために、生存ノードを定期的に確認しておく必要がある。スプリットブレイン状態とは、クラスタシステムの各ノードが、他ノードの生存状況を確認できない状態のことである。この状態に陥ると、複数のノードによる共有記憶装置への書き込みが競合し、結果として、共有記憶装置に記憶されたデータの一貫性を喪失し、また、そのデータが破壊されるなど、クラスタシステムにおける致命的状態となることがある。
【０００４】
一のノードがクラスタシステム全体の健全性を判定するための一つの方式として、共有記憶装置の一部の領域（以下、「生存情報記憶領域」と呼ぶ。）に、各ノードが正常動作中である旨を示す生存情報を記録し、その生存情報をそれぞれのノードで確認しあう方式（以下、「クォーラムディスク方式」と呼ぶ。）がある。
【０００５】
クォーラムディスク方式の場合、生存情報記憶領域が破壊されると、各ノード上のクラスタソフトウェアは、現在のクラスタシステム内の他ノードの状態を知ることができなくなり、現在の状態が正常か否かの判断ができなくなる。そのため、クラスタソフトウェアは、スプリットブレイン状態を回避するため、自身のノードを停止させざるを得ない。その結果、クラスタシステムの全ノードが停止して、全面的な業務停止を招く場合もある。これを防止するため、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）や、ミラーリングソフトウェアを利用して、共有記憶装置を冗長構成とすることで、可用性の向上が図られることもある。
【特許文献１】特開２００５−２５２８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、共有記憶装置を冗長構成としても、共有記憶装置を制御するＯＳ（Operating System）やクラスタソフトウェア、共有記憶装置を利用するアプリケーション等のソフトウェアに不具合がある場合に、健全な生存記憶領域の維持が困難な場合がある。つまり、これらのソフトウェアが生存情報記憶領域を破壊するような命令を発した場合には、冗長化された生存情報記憶領域の全てが同様に破壊されてしまう。つまり、高い可用性が要求されるミッションクリティカルなシステムにおいては、ＲＡＩＤ等による冗長化だけでは十分でないこともある。したがって現状では、これらのリスクに対処し、可用性を担保するため、多大な運用管理コストが発生していた。
【０００７】
本発明は、本発明者による上記着目に基づいて完成された発明であり、その主たる目的は、クラスタシステムにおける可用性の向上を実現する技術を提供することである。
【課題を解決するための手段】
【０００８】
本発明のある態様は、クラスタシステムに関する。このクラスタシステムは、相互に稼働状態を監視しつつ動作する複数の計算機と、計算機が正常動作中である旨を示す生存情報を記憶する第１および第２の生存情報記憶装置とを備える。複数の計算機においては、第１および第２の生存情報記憶装置のうちの一方の生存情報記憶装置が参照先として共通設定され、かつ、複数の計算機から参照される生存情報記憶装置が同一となるように参照先を変更するための共通の切替条件が設定されている。計算機は、正常動作中において、参照先の生存情報記憶装置に自計算機が正常動作中である旨を示す生存情報を記録する生存通知部と、参照先の生存情報記憶装置と生存情報の記録の成否とを示す成否情報を他の計算機に通知する成否通知部と、他の計算機から通知された成否情報を参照し、参照先の生存情報記憶装置に対する複数の計算機による生存情報の記録の成否に基づいて、切替条件の成否を判定する切替判定部と、切替条件が成立したとき、第１および第２の生存情報記憶装置のうちの他方の生存情報記録装置を参照先として設定変更する参照先変更部とを備える。
【０００９】
本発明の別の態様は、計算機に関する。この計算機は、他の計算機と相互に稼働状態を監視しつつ動作する計算機であって、自計算機が正常動作中である旨を示す生存情報を記録する第１および第２の生存情報記憶装置と接続され、第１および第２の生存情報記憶装置のうちの一方の生存情報記憶装置が、他の計算機と共通の参照先として設定され、かつ、他の計算機と同一の生存情報記憶装置を参照するように参照先を変更するための切替条件が、他の計算機と共通に設定され、正常動作中において、参照先の生存情報記憶装置に自計算機が正常動作中である旨を示す生存情報を記録する生存通知部と、参照先の生存情報記憶装置と生存情報の記録の成否とを示す成否情報を他の計算機に通知する成否通知部と、他の計算機から通知された成否情報を参照し、参照先の生存情報記憶装置に対する自計算機および他の計算機による生存情報の記録の成否に基づいて、切替条件の成否を判定する切替判定部と、切替条件が成立したとき、第１および第２の生存情報記憶装置のうちの他方の生存情報記録装置を参照先として設定変更する参照先変更部とを備える。
【００１０】
本発明のさらに別の態様は、障害対処方法に関する。この障害対処方法は、他の計算機と相互に稼働状態を監視しつつ動作する計算機における障害対処方法であって、正常動作中において、計算機が正常動作中である旨を示す生存情報を記録する第１および第２の生存情報記憶装置のうちの一方の生存情報記憶装置を参照するように他の計算機と共通に設定された参照先の生存情報記憶装置に、自計算機が正常動作中である旨を示す生存情報を記録する生存通知ステップと、参照先の生存情報記憶装置と生存情報の記録の成否とを示す成否情報を他の計算機に通知する成否通知ステップと、他の計算機から通知された成否情報を参照し、参照先の生存情報記憶装置に対する自計算機および他の計算機による生存情報の記録の成否に基づいて、計算機から参照される生存情報記憶装置が他の計算機から参照される生存情報記憶装置と同一となるように参照先を変更するために他の計算機と共通に設定された切替条件の成否を判定する切替判定ステップと、切替条件が成立したとき、第１および第２の生存情報記憶装置のうちの他方の生存情報記録装置を参照先として設定変更する参照先変更ステップと、を備える。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、クラスタシステムにおける可用性を向上させることができる。
【発明を実施するための最良の形態】
【００１３】
本発明の実施形態を説明する前に、実施形態の概要を説明する。前述したように、クォーラムディスク方式において、共有記憶装置の生存情報記憶領域は、クラスタ内の各ノードがクラスタシステムの正常性を確認するための重要な領域であり、この領域が破壊されるとクラスタシステム内のノードが全面的に停止する場合もある。ＲＡＩＤや、ミラーリングソフトウェアを利用した、生存情報記憶領域の冗長化だけでは可用性の担保が十分でない場合もある。
【００１４】
ここでは、この課題を解決する技術として、クラスタシステムの各ノードが通常時にアクセスする正系の共有記憶装置とは別に、通常時には各ノードのＯＳおよびアプリケーション等のソフトウェアからは基本的にアクセスできない、副系の共有記憶装置を用意した構成を提案する。副系の共有記憶装置は、通常時に各ノードのソフトウェアから操作されることはないため、そこに配置される生存情報記憶領域が破壊されることはない。正系の共有記憶装置の生存情報記憶領域が壊れた場合であっても、副系の共有記憶装置の生存情報記憶領域を使用するように切替えることで、クラスタシステムの全面停止を回避できる。以下、実施形態を説明する。
【００１５】
図１は、本発明の実施形態にかかるクラスタシステムの構成例を示す図である。クラスタシステム１００は、ノード１０と総称される第１のノード１０ａと、第２のノード１０ｂと、第３のノード１０ｃと、生存情報記憶装置２０と総称される第１の生存情報記憶装置２０ａと、第２の生存情報記憶装置２０ｂと、成否情報記憶装置３０とを備える。なお、以下の説明において特に断らない限り、「生存情報記憶装置」を、いわゆる共有記憶装置としての記憶装置そのもの、および、共有記憶装置に保持される生存情報記憶領域の両方の意味で使用する。「成否情報記録装置」についても同様である。
【００１６】
ノード１０は、他の計算機と相互に稼働状態を監視しつつ動作する計算機である。それぞれのノード１０は、自ノードが正常動作中である旨を示す生存情報を定期的に記録する生存情報記憶装置２０と、その生存情報記憶装置２０への生存情報の記録の成否を示す成否情報を記録する成否情報記憶装置３０とに接続されている。また、それぞれのノード１０は、スプリットブレイン状態を回避するため、生存情報記憶装置２０のいずれか一方を参照するように設定されている。つまり、いずれのノード１０も、同じ瞬間には、第１の生存情報記憶装置２０ａまたは第２の生存情報記憶装置２０ｂのうちの、共通する一方の生存情報記憶装置２０を参照している。さらに、それぞれのノード１０は、スプリットブレイン状態を回避するため、他のノード１０と同一の生存情報記憶装置２０を参照するように参照先を変更するための共通の切替条件が設定されている。
【００１７】
また、それぞれのノード１０は、生存情報記憶装置２０に生存情報を記録し、他のノード１０が生存情報記憶装置２０に記録した生存情報を参照することにより、クラスタシステム１００の健全性を確認する。また、それぞれのノード１０は、成否情報記憶装置３０に成否情報を記録し、また、他のノード１０が成否情報記憶装置３０に記録した成否情報を参照して、切替条件の成否を判定する。切替条件が成立したとき、参照する生存情報記憶装置２０を他の生存情報記憶装置２０に変更する。
【００１８】
具体例として、いずれのノード１０とも第１の生存情報記憶装置２０ａを参照しており、切替条件が「一方の生存情報記憶装置２０に対する生存情報の記録に失敗したノード数が３以上であること。」の場合について考える。第１の生存情報記憶装置２０ａに障害が発生すると、それぞれのノード１０は、第１の生存情報記憶装置２０ａへの生存情報の記録に失敗する。この場合、それぞれのノード１０は、第１の生存情報記憶装置２０ａへの生存情報の記録に失敗した旨を示す成否情報を成否情報記憶装置３０に記録する。それぞれのノード１０は、成否情報記憶装置３０を参照して、全てのノード１０が第１の生存情報記憶装置２０ａへの生存情報の記録に失敗したことに基づき、切替条件の成否を判定する。この場合、切替条件が成立するため、それぞれのノード１０は、参照先を切替えて、以降、第２の生存情報記憶装置２０ｂを参照する。
【００１９】
図２は、図１の生存情報記憶装置２０のデータ構造の例を示す図である。生存情報記憶装置２０は、データ構造として、ノードＩＤ欄１０２と、稼働状態欄１０４と、更新時刻欄１０６とを含む。ノードＩＤ欄１０２には、生存情報を記録するノードの識別情報が、稼働状態欄１０４には、そのノードの稼働状態が、更新時刻欄１０６には、生存情報が記録された時刻が、それぞれ記録される。同図では、ノードＩＤが「００１」である第１のノード１０ａが、正常動作中である旨を示す生存情報を、５秒ごとに記録している状態を示している。なお、以降の説明においても、第１のノード１０ａのノードＩＤは「００１」とし、第２のノード１０ｂと第３のノード１０ｃについても同様に、それぞれ「００２」と「００３」とする。
【００２０】
図３は、図１の成否情報記憶装置３０のデータ構造の例を示す図である。成否情報記憶装置３０は、データ構造として、ノードＩＤ欄１１０と、参照記憶装置ＩＤ欄１１２と、アクセス成否欄１１４と、更新時刻欄１１６とを含む。ノードＩＤ欄１１０には、成否情報を記録するノードの識別情報が、参照記憶装置ＩＤ欄１１２には、そのノードが参照する生存情報記憶装置２０の識別情報が、それぞれ記録される。また、アクセス成否欄１１４には、生存情報記憶装置２０への生存情報の記録の成否が、更新時刻欄１１６には、成否情報が記録された時刻が、それぞれ記録される。
【００２１】
図３（ａ）では、各ノード１０は、識別情報が「＃１」である第１の生存情報記憶装置２０ａに生存情報を記録し、その記録は成功した旨を示す成否情報が記録された状態を示している。一方で、図３（ｂ）では、各ノード１０は、第１の生存情報記憶装置２０ａに生存情報を記録しようとしたが、その記録は失敗した旨を示す成否情報が記録された状態を示している。
【００２２】
図４は、図１のノード１０の構成例を示す機能ブロック図である。ノード１０は、設定保持部４０と、生存通知部４６と、成否通知部４８と、切替判定部５０と、参照先変更部５２とを含む。これらの構成は、ハードウェアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００２３】
設定保持部４０は、ノード１０において、他のノードと共通に設定される設定情報を保持する。設定保持部４０は、参照オブジェクト４２と、切替条件４４とを有する。参照オブジェクト４２は、本実施形態においては、第１の生存情報記憶装置２０ａと、第２の生存情報記憶装置２０ｂとを参照先として設定された参照先設定情報である。図５は、参照オブジェクト４２の構成例を示す図である。この例では、参照オブジェクト４２は、シンボリックリンクファイル６０と、デバイスファイル６２で総称される第１のデバイスファイル６２ａと、第２のデバイスファイル６２ｂとを含む。
【００２４】
デバイスファイル６２は、生存情報記憶装置２０のデバイス情報を含む設定ファイルであり、第１のデバイスファイル６２ａは第１の生存情報記憶装置２０ａのデバイス情報を含み、第２のデバイスファイル６２ｂは第２の生存情報記憶装置２０ｂのデバイス情報を含む。デバイスファイル６２は、実際にはＯＳの設定情報として、ＯＳにより保持されてもよい。シンボリックリンクファイル６０は、どちらか一方のデバイスファイル６２を参照している。後述する生存通知部４６は、シンボリックリンクファイル６０を利用して、いずれか一つのデバイスファイル６２を介して、いずれか一つの生存情報記憶装置２０にアクセスする。図４に戻る。
【００２５】
切替条件４４は、複数のノード１０から参照される生存情報記憶装置２０が同一となるように参照先を変更するための、複数のノード１０間で共通に設定された条件である。具体的な切替条件４４の例を以下に示す。
１．一方の生存情報記憶装置２０に対する生存情報の記録に失敗したノード数が３以上であること。
２．一方の生存情報記憶装置２０に対する生存情報の記録に失敗したノード数が２以上であること。
３．クラスタシステムの全ノード数における、一方の生存情報記憶装置２０に対する生存情報の記録に失敗したノード数の割合が５０％より大きいこと。
このように、切替条件４４の内容に制限はなく、クラスタシステムのノード数等の構成や運転条件や可用性の要件等に応じ、システムの総合試験等を実施する中で、適切な切替条件が定められてよい。なお、以下の例では、切替条件４４として、「一方の生存情報記憶装置２０に対する生存情報の記録に失敗したノード数が３以上であること。」が定められているものとする。
【００２６】
生存通知部４６は、ノード１０が正常動作中において、参照オブジェクト４２が参照する生存情報記憶装置２０に、図２で説明した、自ノードが正常動作中である旨を示す生存情報を記録する。
【００２７】
成否通知部４８は、図３で説明した、生存通知部４６による生存情報記憶装置２０への生存情報の記録の成否を示す成否情報を他ノードに通知する。他ノードへの通知は、一のノードから他のノードへ、成否情報をマルチキャストやブロードキャストすることにより実現されてもよい。また、各ノード同士がＰ２Ｐ（Peer to Peer）で通信をして、相互に成否情報を通知してもよい。本実施形態の説明においては、成否通知部４８は、成否情報を他ノードに通知するために、成否情報を成否情報記憶装置３０に記録する。
【００２８】
切替判定部５０は、他の計算機から通知された成否情報を参照し、各ノード１０の生存情報記憶装置２０に対する生存情報の記録の成否に基づいて、切替条件４４の成否を判定する。本実施形態の説明においては、切替判定部５０は、成否情報記憶装置３０から他のノードの成否情報を読み出すことにより、他のノードの成否情報を参照する。
【００２９】
参照先変更部５２は、切替判定部５０での判定において切替条件が成立したと判定されたとき、参照オブジェクト４２の参照先を、これまで生存情報を記録していた生存情報記憶装置２０から、他方の生存情報記憶装置２０へと変更する。例えば、図５で示した、一方のデバイスファイル６２を参照しているシンボリックリンクファイル６０を、他方のデバイスファイル６２を参照するように変更することにより、参照オブジェクトが参照する生存情報記憶装置２０を変更する。前述したように、生存通知部４６は、参照オブジェクト４２を利用して生存情報記憶装置２０にアクセスするため、参照オブジェクト４２の参照先が変更されることで、以降、生存通知部４６は、変更された参照先の生存情報記憶装置２０に生存情報を記録する。
【００３０】
ここまで説明したノード１０の各機能ブロックの連係による処理の流れを、以下フローチャートを用いて説明する。図６は、図１のノード１０の動作を示すフローチャートである。まず、生存通知部４６は、生存情報記憶装置２０に生存情報を記録する（Ｓ２）。次に、成否通知部４８は、成否情報記憶装置３０に成否情報を記録する（Ｓ４）。次に、切替判定部５０は、成否情報記憶装置３０から他のノードの成否情報を読み出すことにより、他のノードの成否情報を参照する（Ｓ６）。切替判定部５０は、生存情報の記録に失敗したノード数が所定の数、この例では３以上かを判定し、３より少ない場合（Ｓ８のＮ）、切替条件は不成立と判定されて処理を終了する。３以上の場合（Ｓ８のＹ）、切替条件が成立したと判定され、参照先変更部５２は、参照オブジェクト４２の参照先を、これまで生存情報を記録していた生存情報記憶装置２０から、他方の生存情報記憶装置２０へと変更する（Ｓ１０）。
【００３１】
切替判定部５０による判定の具体例を、図３を用いて説明する。図３（ａ）の場合、いずれのノードも生存情報記憶装置２０に対する生存情報の記録に成功しているため、切替判定部５０は、切替条件が不成立と判定する。図３（ｂ）の場合、いずれのノードも生存情報記憶装置２０に対する生存情報の記録に失敗しているため、切替判定部５０は、切替条件が成立したと判定する。
【００３２】
図７は、図３と同様に、図１の成否情報記憶装置のデータ構造の例を示す図である。切替判定部５０における判定のさらなる具体例を、図７を用いて説明する。図７（ａ）の場合、第１のノード１０ａと第２のノード１０ｂは、生存情報記憶装置２０に対する生存情報の記録に失敗しているが、第３のノード１０ｃは、生存情報記憶装置２０に対する生存情報の記録に成功している。この例では、生存情報の記録に失敗したノード数が３以上かを判定するため、切替判定部５０は、切替条件は不成立と判定する。
【００３３】
図７（ｂ）の場合、図７（ａ）と比較すると、第３のノード１０ｃが成否情報を記録した時刻、つまり更新時刻欄１１６の値が、第１のノード１０ａおよび第２のノード１０ｂに比べ、乖離の幅が大きい。この場合、第３のノード１０ｃは、機能停止している可能性があり、その場合には、切替条件の判定において、第３のノード１０ｃを考慮すべきでないことがある。なぜなら、実際には、第１の生存情報記憶装置２０ａに障害が発生しており、どのノード１０も生存情報を記録できないにもかかわらず、第３のノード１０ｃが機能停止しているため、その障害を検出できない状態であると考えられるからである。このような状況においては、第１のノード１０ａと第２のノード１０ｂの成否情報に基づき、切替条件の成否が判定されることが望ましい。
【００３４】
したがって、切替判定部５０は、過去の所定時点以降に他のノード１０から通知された成否情報に基づいて、切替条件の成否を判定してもよい。この成否情報は、例えば本実施形態においては、成否情報記憶装置３０の更新時刻欄１１６の値と現在時刻との差が所定の時間以内である成否情報である。これにより、図７（ｂ）の状況においては、切替判定部５０は、切替条件を「一方の生存情報記憶装置２０に対する生存情報の記録に失敗したノード数が２以上であること。」に変更し、第１のノード１０ａと第２のノード１０ｂの成否情報に基づき、切替条件が成立したと判定できる。
【００３５】
なお「所定の時点」は、生存情報の記録間隔や、成否情報の通知間隔等に基づき、システムの総合試験等を実施する中で、適切に設定されればよい。例えば、各ノード１０からの成否情報の通知間隔が２０秒ごとであれば、現在から３０秒過去の時点以降に他のノード１０から通知された成否情報に基づいて、切替条件の成否を判定してもよい。この例では、成否情報の通知間隔の２０秒に、所定の余裕時間として１０秒を加えて３０秒としている。この「余裕時間」についても、各ノード１０から成否情報記憶装置３０への成否情報の記録に要する時間や、各ノード１０において他の処理を実行することによる遅延時間等に基づき、システムの総合試験等を実施する中で、適切に設定されればよい。
【００３６】
図８は、前述の場合の、図１のノード１０の動作を示すフローチャートである。同図のＳ２０、Ｓ２２、Ｓ２４、Ｓ３０、およびＳ３２は、既に説明した図６のＳ２、Ｓ４、Ｓ６、Ｓ８、およびＳ１０と同じであるため、以下、Ｓ２６とＳ２８とについて説明する。切替判定部５０は、参照する成否情報について、所定時点以降に通知された成否情報かを判定し、いずれも所定の時点以降に通知された成否情報の場合（Ｓ２６のＹ）、全ての成否情報に基づいて切替条件を判定する（Ｓ３０）。所定の時点より前に通知された成否情報を含む場合（Ｓ２６のＮ）、切替判定部５０は、所定の時点以降に通知された成否情報を抽出し、抽出した成否情報を切替条件の判定の対象として（Ｓ２８）、切替条件を判定する（Ｓ３０）。
【００３７】
本実施形態によれば、クラスタシステム１００内の各ノード１０が通常時にアクセスする正系の生存情報記憶装置とは別に、通常時において各ノード１０のソフトウェアからは基本的にアクセスできない、副系の生存情報記憶装置を用意しておく。副系の生存情報記憶装置は、通常時に各ノードのソフトウェアから操作されることはないため、ソフトウェアの不具合によって、正系とともに副系の生存情報記憶装置まで破壊されることは、原理的に発生しない。したがって、正系の生存情報記憶装置に障害が発生した際の切替え先として、常に健全な副系の生存情報記憶装置を残しておくことができ、クラスタシステムの全面停止を回避できる。
【００３８】
言い換えれば、本実施形態のクラスタシステム１００は、どのレベルのソフトウェアに不具合があったとしても、クラスタシステムの全面停止を回避できる。これらのソフトウェアは、例えば、ＯＳ、クラスタソフトウェア、データベースマネジメントシステムソフトウェア、ミラーリングソフトウェア、運用管理ソフトウェア、業務アプリケーション等を含む。また、たとえ、生存情報記憶装置を二重化したとしても、二重化された生存情報記憶装置を管理するソフトウェアに不具合があれば、正系および副系の生存情報記憶装置がともに破壊される可能性がある。本実施形態のクラスタシステム１００は、ソフトウェアからは基本的に操作できない副系の生存情報記憶装置を用意しておくことで、例えばＲＡＩＤやミラーリングソフトウェアでは担保が困難な高いレベルの可用性を実現する。
【００３９】
現在、ソフトウェアモジュールの大規模化によって、不具合のないソフトウェアを製造することは日々困難になっている。実際、ＯＳや様々なアプリケーションの不具合を修正するための修正モジュールが短期間に多数提供されている現状がある。さらに、多くのシステムがインターネットを含む通信ネットワークで接続されている現在では、ソフトウェアのセキュリティホール等を介して、悪意を持つ第三者が、ノードのソフトウェアを操作し、ソフトウェアに意図しない挙動をさせることもある。本発明の実施形態によれば、ソフトウェアに不具合があり、または、悪意を持つ第三者によりソフトウェアを操作されて、正系の生存情報記憶装置を破壊された場合であっても、副系の生存情報記憶装置に切替えることで、クラスタシステムの全面停止を回避できる。ミッションクリティカルなシステムにおいて、さらなる高可用性が要求される今後、ここに開示した技術は非常に有用であると本発明者は確信する。
【００４０】
また、本実施形態によれば、正系の生存情報記憶装置から副系の生存情報記憶装置への参照先の切替えを、参照オブジェクトの参照先を変更することにより実現する。複雑なアプリケーション等の仕掛けを使うことなく、このような簡明な方法を採用することで、アプリケーション等ソフトウェアの不具合の影響を受けにくい。また、切替えの仕組みを構築する費用を低減できる。また、システムの全面停止を回避するためには、この参照オブジェクトを保護しておけばよく、セキュリティの強化範囲が限定され、システムの管理コストが低減され、結果として、セキュリティ脅威に対し堅牢で、より可用性の高いクラスタシステムを実現できる。
【００４１】
また、本実施形態によれば、生存情報の記録の成否を示す成否情報を、各ノード１０間で相互に通知することで、各ノード間で同期をとって、参照先の生存情報記憶装置を切替えることができる。これにより、スプリットブレイン状態を回避できる。また、参照先の切替えを、人手を介さず自動的に実現できる。
【００４２】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４３】
前述した実施の形態では、第１の生存情報記憶装置２０ａと、第２の生存情報記憶装置２０ｂとを備えるクラスタシステム１００について説明した。変形例として、クラスタシステム１００は、第３の生存情報記憶装置、第４の生存情報記憶装置・・とさらに多くの生存情報記憶装置を備えてもよい。各ノード１０の参照先を切替えた直後に、切替え先の生存情報記憶装置も故障した場合にも、さらに多くの生存情報記憶装置を備えることで、その生存情報記憶装置に参照先を変更し、クラスタシステムの全面停止を回避できる。言い換えれば、クラスタシステムの可用性をさらに向上できる。
【００４４】
また、前述した実施の形態では、ＲＡＩＤやミラーリングソフトウェアを利用するシステムよりも、さらに高い可用性を実現するクラスタシステム１００を説明した。ただし、ＲＡＩＤやミラーリングソフトウェアを利用したクラスタシステムを排除する趣旨ではなく、クラスタシステム１００においてＲＡＩＤやミラーリングソフトウェアを利用してもよい。例えば、第１の生存情報記憶装置２０ａと第２の生存情報記憶装置２０ｂは、それぞれＲＡＩＤを利用して冗長構成とされてもよい。これにより、クラスタシステム１００は、ＲＡＩＤを利用することによる可用性の向上に加え、本発明の技術を適用して副系の生存情報記憶装置を用意することにより、さらに可用性を向上できる。
【００４５】
例えば、冗長化された第１の生存情報記憶装置２０ａにおいて、複数の記憶装置の物理的な故障が発生した場合でも、ノード１０が参照する生存情報記憶装置を、第２の生存情報記憶装置２０ｂに切替えることで対処できる。つまり、ＲＡＩＤやソフトウェアによるミラーリングでは対応が困難な、複数の記憶装置の物理的な故障に対しても、本発明の技術により、健全な生存情報記憶装置を維持できる。
【００４６】
また、前述した実施の形態では、クォーラムディスク方式を採用するクラスタシステム１００について説明したが、通常時はネットワークハートビート方式を採用し、補助的にクォーラムディスク方式を採用するクラスタシステムに本発明の技術が適用されてもよい。このクラスタシステムの場合、ハートビート通信において異常が検出された時には、各ノードが生存情報を生存情報記憶装置に記録することで、各ノードのクラスタソフトウェアは、クラスタシステム内で継続して動作する存続ノードを決定する。生存情報の記録に失敗すると、クラスタソフトウェアは存続ノードの決定ができず、その結果、スプリットブレイン状態を回避するため、クラスタシステムが全面停止する場合もある。したがって、このようなクラスタシステムにおいても、本発明の技術を適用し、副系の生存情報記憶装置を用意しておくことで、可用性を向上できるという効果がある。
【００４７】
また、前述した実施の形態では、各ノード１０が切替判定部を有し、それぞれのノードで、切替条件の成否を判定していた。変形例として、クラスタシステム１００には、図示しない切替条件判定ノードを含み、切替条件判定ノードが各ノード１０と通信して、または、成否情報記憶装置３０を参照して、成否情報に基づき、切替条件の成否を判定してもよい。この場合、切替条件判定ノードは、判定結果に基づき、各ノードに参照先の変更指示を出してもよく、また、直接各ノードの参照オブジェクトを操作して参照先を変更してもよい。切替条件判定ノードが、一元的に切替条件の成否を判定することで、各ノード１０は切替条件を判定する負荷が軽減され、また、切替条件の変更時には、切替条件判定ノードに設定された切替条件のみを変更すればよくなり運用管理が容易となる。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施形態にかかるクラスタシステムの構成例を示す図である。
【図２】図１の生存情報記憶装置のデータ構造の例を示す図である。
【図３】図１の成否情報記憶装置のデータ構造の例を示す図である。
【図４】図１のノードの構成例を示す機能ブロック図である。
【図５】図４の参照オブジェクトの構成例を示す図である。
【図６】図１のノードの動作を示すフローチャートである。
【図７】図１の成否情報記憶装置のデータ構造の例を示す図である。
【図８】図１のノードの動作を示すフローチャートである。
【符号の説明】
【００４９】
１０  ノード、２０  生存情報記憶装置、３０  成否情報記憶装置、４０  設定保持部、４２  参照オブジェクト、４４  切替条件、４６  生存通知部、４８  成否通知部、５０  切替判定部、５２  参照先変更部、６０  シンボリックリンクファイル、６２  デバイスファイル、１００  クラスタシステム、１０２  ノードＩＤ欄、１０４  稼働状態欄、１０６  更新時刻欄、１１０  ノードＩＤ欄、１１２  参照記憶装置ＩＤ欄、１１４  アクセス成否欄、１１６  更新時刻欄。
【図１】
2008299369.tif 000003
【図２】
2008299369.tif 000004
【図３】
2008299369.tif 000005
【図４】
2008299369.tif 000006
【図５】
2008299369.tif 000007
【図６】
2008299369.tif 000008
【図７】
2008299369.tif 000009
【図８】
2008299369.tif 000010