JP4339763B2 - フェイルオーバ方法及び計算機システム - Google Patents

フェイルオーバ方法及び計算機システム Download PDF

Info

Publication number
JP4339763B2
JP4339763B2 JP2004259403A JP2004259403A JP4339763B2 JP 4339763 B2 JP4339763 B2 JP 4339763B2 JP 2004259403 A JP2004259403 A JP 2004259403A JP 2004259403 A JP2004259403 A JP 2004259403A JP 4339763 B2 JP4339763 B2 JP 4339763B2
Authority
JP
Japan
Prior art keywords
node
nodes
takeover
cluster
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004259403A
Other languages
English (en)
Other versions
JP2006079161A (ja
Inventor
信之 雑賀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004259403A priority Critical patent/JP4339763B2/ja
Priority to US10/985,937 priority patent/US7428210B2/en
Publication of JP2006079161A publication Critical patent/JP2006079161A/ja
Application granted granted Critical
Publication of JP4339763B2 publication Critical patent/JP4339763B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Description

本発明は、複数のノードを備えた計算機システムにおいて、障害の発生したノードの処理を引き継ぐ技術に関する。
複数の計算機(ノード)を論理的に一つの計算機として機能させるクラスタ技術が知られており、例えば、複数のサーバを一つのサーバとして機能させるクラスタサーバが知られている。
このクラスタサーバでは、一つの計算機に障害が発生すると、他の計算機が障害が発生した計算機の処理を引き継いで、サービスを続行するフェイルオーバ処理を行うものが知られている(例えば、特許文献1)。これは、フェイルオーバにより処理を引き継いだ後に自身の負荷が高くなると、他の計算機に処理を依頼するものである。
特開2003−256399号
しかし、上記従来の技術では、フェイルオーバにより処理を引き継いだ計算機(ノード)は、自身の負荷が高くなるまで他の計算機(ノード)に処理を依頼しないため、処理能力に余裕のある他の計算機を利用することができず、負荷が偏った状態が継続するという問題がある。
また、上記従来例では、処理の引き継ぎを多段で行うものの、複数のノードで処理の引き継ぎを行う際に、一つのリソースをどのように引き継ぐかという思想はない。このため、一つのノードに障害が発生して複数のノードで処理を引き継ぐ多段フェイルオーバを行う場合では、一つのリソースを複数のノードで引き継ごうとするリソースの競合が発生する可能性がある。
そこで本発明は、上記問題点に鑑みてなされたもので、フェイルオーバ後の複数の計算機の負荷を均一にすることを目的とし、さらに、リソースの競合を防ぐことを目的とする。
本発明は、複数のノードからなるクラスタを有し、複数のノードのいずれかに障害が発生したときに、障害の発生したノードの処理を他のノードへ引き継ぐフェイルオーバ方法であって、前記複数のノードのいずれかに障害が発生したときに、障害の発生したノードの処理を他のノードへ引き継ぐ引き継ぎ情報を、複数のノードで共有する記憶装置に予め格納する。複数のノードは相互に稼動状態を監視し、障害の発生を検知したときには、障害が発生したノードを除くクラスタ内の各ノードが、前記共有記憶装置から引き継ぎ情報を読み込んで、障害のパターンと引き継ぎ情報に基づいて障害が発生したノードの処理を引き継ぐ。前記引き継ぎ情報は、各ノードの処理毎に引き継ぐ回数の上限が設定され、また、現在の引き継ぎ回数と前記引き継ぐ回数の上限に基づいて選択された他のノードに引き継ぐ処理が含まれる。
したがって、本発明は、フェイルオーバ時の引継ぎ対象を分割して、複数のノードに対して、分散してフェイルオーバを行うことで、フェイルオーバ後の複数のノード間の負荷の偏りを抑えることができる。
また、多段フェイルオーバになった場合には、引き継ぐリソースを絞り込むことで、負荷増加を抑えることができる。
また、フェイルオーバでの引継ぎ処理で、複数のノードが1つのリソースを引き継ごうとするリソースの競合が発生せず、なおかつフェイルオーバまたはフェイルバックを並列的に行うことができるので、引き継ぎまたは回復を高速かつ正確に行うことができる。
以下、本発明の一実施形態を添付図面に基づいて説明する。
図1は、本発明を適用する計算機システムの全体的な構成を示すブロック図で、図2は計算機システムのソフトウェア構成を示すブロック図である。
図1において、クラスタ100を構成する複数のノード1〜4は、それぞれサーバ20、30、40、50より構成され、ネットワーク5を介して接続されたクライアントコンピュータ80からは単一のサーバとして認識される。
ネットワーク5には、クラスタ100を管理する管理サーバ10が接続される。この管理サーバ10は、後述するように、クラスタ100の構成や各種設定情報を管理するもので、管理者などにより運用される。
管理サーバ(管理ノード)10は、CPU11、メモリ12、データ転送コントローラ13、ネットワークインターフェース14及びストレージ用のインターフェース15が設けられている。そして、ネットワークインターフェース14を介して管理サーバ10がネットワーク5に接続される。また、インターフェース15を介してCPU11などが設定情報などを格納するディスク装置16にアクセスを行うことができる。なお、メモリ12にデータキャッシュ(図示省略)を設けても良く、あるいは、データキャッシュをデータ転送コントローラ13側に設けても良い。
メモリ12には制御プログラム(図3参照)がロードされており、CPU11が制御プログラムを呼び出して実行することによって後述する各種処理が行われる。
データ転送コントローラ13は、CPU11、ネットワークインターフェース14、ストレージインターフェース15及びメモリ12の間でデータを転送する。
クラスタ100を構成するノード1〜4は、相互に接続されており、所定のサービスを並列的に提供し、いずれかのノードに障害が発生するとフェイルオーバ処理を行って他のノードへサービスを引き継ぎ、また、障害から復旧するとフェイルバック処理を行って、他のノードからサービスを引き継ぐものである。なお、本実施形態では、クラスタ100はファイルの共有サービスを提供する場合について説明する。
まず、ノード1のサーバ20には、CPU21、メモリ22、データ転送コントローラ23、ネットワークインターフェース24及びストレージ用のインターフェース25が設けられている。
そして、ネットワークインターフェース24を介してサーバ20がネットワーク5に接続される。また、インターフェース25を介してCPU21などがファイルを格納するディスク装置16にアクセスを行う。さらに、インターフェース25は、サーバ20の外部に設けられて、他のノード(サーバ)と共有する共有ストレージ装置6に接続され、各ノード間で情報の共有を行う。
なお、メモリ22にデータキャッシュ(図示省略)を設けても良く、あるいは、データキャッシュをデータ転送コントローラ23側に設けても良い。
メモリ22には制御プログラム(図4参照)がロードされており、CPU21が制御プログラムを呼び出して実行することによって後述する各種処理が行われる。
データ転送コントローラ23は、CPU21、ネットワークインターフェース24、ストレージインターフェース25及びメモリ22の間でデータを転送する。
ノード2のサーバ30もノード1のサーバ20と同様に構成され、CPU31、メモリ32、データ転送コントローラ33、ネットワークインターフェース34及びストレージ用のインターフェース35が設けられ、ネットワークインターフェース34はネットワーク5に接続され、インターフェース35はディスク装置36と共有ストレージ装置6に接続される。
メモリ32にはノード1のサーバ20と同様の制御プログラム(図4参照)がロードされており、CPU31が制御プログラムを呼び出して実行することによって後述する各種処理が行われる。
ノード3のサーバ40、ノード4のサーバ50もノード1のサーバ20と同様に構成され、CPU41、51、メモリ42、52、データ転送コントローラ43、53、ネットワークインターフェース44、54及びストレージ用のインターフェース45、55が設けられ、ネットワークインターフェース44、54はネットワーク5に接続され、インターフェース45、54はディスク装置46、56と共有ストレージ装置6に接続される。
クラスタ100に設けられた共有ストレージ装置6は、各サーバ20〜50から物理的に独立したストレージ装置で構成しても良いし、各サーバ20〜50(以下、ノード1〜4)で相互に参照及び更新可能な共有論理ディスクで構成しても良い。
図2は、管理サーバ10とクラスタ100のでそれぞれ実行される制御プログラムの機能ブロックを示す。
管理サーバ10では、OS101上で引き継ぎ情報作成機能110が実行される。この引き継ぎ情報作成機能110は、クラスタ100の各ノード1〜4を監視し、この監視結果と予め設定した設定情報111に基づいてフェイルオーバを行う際の引き継ぎ情報を作成し、クラスタ100の共有ストレージ装置6に格納する。管理サーバ10が作成した引き継ぎ情報は共有ストレージ装置6上で各ノード1〜4で参照可能となる。
ノード1〜4では、OS210がファイル共有機能をクライアントコンピュータ80へ提供し、OS210上ではフェイルオーバ機能(処理)220が実行される。フェイルオーバ機能220は、一つのノードが障害などにより停止すると、他のノードが共有ストレージ装置6上の引き継ぎ情報を参照して、停止したノードが提供していたサービス(ファイル共有サービス)を各ノードの負荷が均等になるように引き継ぎを行うフェイルオーバ処理と、提供していたノードが復旧したときには、他のノードが引き継いでいたサービスを元のノードへ引き継ぐフェイルバック処理とを含む。
各ノード1〜4のディスク装置26〜56には、それぞれ異なる内容のデータが格納され、クライアントコンピュータ80にファイル共有サービスを提供する。各ディスク装置26〜56には、後述するように、ノード1〜4毎に複数のファイルシステムが格納され、各ファイルシステムにデータが格納される。
図3は、管理サーバ10で実行される引き継ぎ情報作成機能110の詳細な構成を示し、引き継ぎ情報作成機能110は状態別引き継ぎ情報作成処理112を含む。この状態別引き継ぎ情報作成処理112は、後述するように、ノード1〜4の状態を監視し、停止したノードの状態に応じて他のノードへ引き継ぐ処理を決定するものである。
図4は、ノード1〜4で実行されるフェイルオーバ機能220の詳細な構成を示す。フェイルオーバ機能220は、各ノード1〜4の状態を監視するクラスタ状態監視処理221と、他のノードに状態を問い合わせる状態確認要求処理222と、停止した他のノードが提供するサービスを引き継ぐフェイルオーバ処理223と、引き継いでいたサービスを復旧した元のノードへ引き継ぐフェイルバック処理224とから構成される。
<全体的な処理の概要>
次に、管理サーバ10及び各ノード1〜4で行われる処理の概要について以下に説明する。
まず、管理サーバ10は、各ノード1〜4からフェイルオーバに関連するリソース(ファイルシステムやネットワークに関するもの)の情報を収集し、さらに管理者が入力した設定情報111(引継ぎ回数の上限、ノード番号、ノード毎のIPアドレス等)を管理サーバ10のメモリやディスク装置に格納する(図2のSA)。
管理サーバ10で収集/入力された情報に基づき、管理サーバ10上では、多段フェイルオーバ時に引き継がれるリソースと各ノード1〜4のキャパシティを検証する。この検証が完了した後、引き継ぎに関する情報(状態別引き継ぎ情報)を出力し、各ノード1〜4で共有可能な共有ストレージ装置6に格納する(図2のSB)。
各ノード1〜4で実行されるフェイルオーバ機能220は、各ノード1〜4を互いに監視し、停止したノードや復旧したノードがあれば、引継ぎに関する定義情報(状態別引き継ぎ情報)に基づいて、フェイルオーバ/フェイルバックを自動的に行う(図2のSC)。なお、各ノード1〜4が行う相互の監視は、各ノード1〜4が共有ストレージ装置6を定期的に更新しているかどうかで稼動状態を確認する。
<状態別引き継ぎ情報作成処理112の概要>
次に、管理サーバ10の引き継ぎ情報作成機能110で行われる状態別引き継ぎ情報作成処理112の概要について以下に説明する。
{STEP1}
管理サーバ10は、各ノード1〜4のサービス(ファイル共有)の負荷を計るため、図5で示すように、各ノード1〜4が提供しているファイルシステム毎の利用者数を集計し、ファイルシステム名に対応する利用者数(current_usr_num)をノード1〜4毎にまとめたファイルシステム利用者数リストを作成する。このリストは、管理サーバ10のメモリ12やディスク装置16あるいは共有ストレージ装置6に格納する。
ファイルシステム毎の利用者数(クライアント数)は、各ノードからアクセスログを取得し、ファイルシステム毎にアクセスユーザ数をカウントする。
{STEP2}
管理サーバ10は、管理者などのユーザが設定した設定情報111から、各ノード1〜4のファイルシステム毎のフェイルオーバ時の引き継ぎ回数(上限値)を読み込む。引き継ぎ回数は、図6で示すように、各ノード1〜4に設けたファイルシステム名に対応する引き継ぎ回数の上限が設定され、「3」はフェイルオーバを3回まで行うことを示し、「0」はフェイルオーバを禁止することを示す。
なお、ファイルシステム毎のフェイルオーバ時引き継ぎ回数は、管理者などが予め設定したものである。また、図6のリストは引き継ぎ回数リストとして共有ストレージ装置6に格納される。
この引き継ぎ回数リストにより、フェイルオーバを行った回数に応じて、他のノードに引き継ぐファイルシステムを選択する。つまり、フェイルオーバの回数が増加すると、引き継ぎ先のノードは減少するため、引き継ぎ可能なリソースを減少させることで、多段フェイルオーバを行ってサービスの続行を継続することができる。
ここでは、ファイルシステム毎のフェイルオーバ時引き継ぎ回数を予め設定した例を示したが、上記STEP1で求めたファイルシステム毎の利用者数と予め設定したしきい値を比較して自動的に引き継ぎ回数を決定するようにしても良い。
例えば、
利用者数>100人 → 引き継ぎ回数=3
50<利用者数≦100 → 引き継ぎ回数=2
10<利用者数≦50 → 引き継ぎ回数=1
利用者数≦10 → 引き継ぎ回数=0
のように決定する。
すなわち、利用者数や利用頻度の高いファイルシステムの引き継ぎ回数の上限を高くし、利用者数が少なく、あるいは利用頻度が低いファイルシステムについては引き継ぎ回数の上限を低く設定する。
{STEP3}
次に、管理サーバ10は、設定した設定情報111からノード1〜4毎の最大利用者数(ユーザ数)を取得する。この最大利用者数は、各ノード1〜4の処理能力などの要件に基づいて管理者などが予め設定したものであり、図7で示すように、各ノード1〜4へ同時に接続可能な利用者数を示す。なお、図7は、ノードの番号と、各ノードに設定された最大利用者数のテーブルである。
{STEP4}
管理サーバ10は、各ノード1〜4の稼動状態に基づいて、クラスタ100の状態を設定する。ここでは、図8で示すように、4つのノード1〜4の稼動/停止を全てのパターンについて検討する。ここでは、4ビットのビット列でクラスタ100の状態を示す例について説明する。
後述するように、共有ストレージ装置6の更新状況に基づいて各ノード1〜4の稼動状態を判定する。そして、稼働中のノードに「0」をセットし、停止中のノードに「1」をセットする。
ここで、4ビットのビット列を(b1、b2、b3、b4)とすると、b1がノード1の状態を示し、b2がノード2の状態を、b3がノード3の状態を、b4がノード4の状態をそれぞれ示す。
そして、4つのノード1〜4が全て稼動している状態は、ビット列=(0、0、0、0)であり、この状態を0段目(フェイルオーバが0段の意味)とし、この状態名を図8で示すようにS0とする。
次に、4つのノードのうちひとつが停止している状態を1段目とする。この1段目では、4通りのパターンがあり、ノード1が停止している状態名をS8、ノード2が停止している状態名をS4、ノード3が停止している状態名をS2、ノード4が停止している状態名をS1とする。ここで、状態名は、ビット列を10進化した値に基づくものである。
次に、4つのノードのうち2つが停止している状態を2段目とする。この2段目では、6通りのパターンがあり、ノード1、ノード4が停止している状態名をS9、ノード1、ノード3が停止している状態名をS10、ノード1、ノード2が停止している状態名をS12、ノード2、ノード4が停止している状態名をS5、ノード2、ノード3が停止している状態名をS6、ノード3、ノード4が停止している状態名をS3とする。
同様に、4つのノードのうち3つが停止している状態を3段目とする。この4段目では、4通りのパターンがあり、ノード1、ノード2、ノード3が停止している状態名をS14、ノード1、ノード2、ノード4が停止している状態名をS13、ノード1、ノード3、ノード4が停止している状態名をS11、ノード2、ノード3、ノード4が停止している状態名をS7とする。
最後に、4つのノード1〜4が全て停止している状態を4段目とする。
以上のように、クラスタ100の状態を0〜4段目で示し、各ノード1〜4の具体的な状態を状態名とビット列で示したクラスタ状態リストを図8のように作成し、共有ストレージ装置6に格納する。すなわち、クラスタ状態リストは、クラスタ100で発生しうる各ノード1〜4の全ての障害発生パターンを示したものである。
ここで、ノード1が停止した場合を例にして説明する。
いま、クラスタ100が図5で示す状態でサービスを提供しているときに、ノード1が停止すると、図8のクラスタ状態リストにおいて1段目のS8となり、図6の引き継ぎ回数リストから、引き継ぎ回数=3、2のファイルシステム名fs11、fs12、fs13を他のノード2〜4へ引き継ぐ(割り当てる)ことになる。このフェイルオーバ処理の結果、引き継ぎ回数リストは、全てのファイルシステムについて引き継ぎ回数を1ずつ減算し、図9のようになる。
ここで、引き継がれるファイルシステムの利用者数は、図5より、
fs11 100
fs12 80
fs13 60
であり、引き継ぐノード2〜4の利用者数と最大利用者数は、図5、図7より、
ノード2 利用者数=295 最大利用者数=400
ノード3 利用者数=248 最大利用者数=350
ノード4 利用者数=125 最大利用者数=400
となる。
(リソースの割当)
fs11〜13をノード2〜4に割り当てる方法の一例としては、ノード2〜ノード4の空きユーザ数(最大利用者数−利用者数)が大きい順に、fs11〜fs13の利用者数が大きいものから割当てる。
まず、各ノード2〜4の空きユーザ数は、
ノード2=115
ノード3=102
ノード4=275
であるので、空きユーザ数の大きい順にソートを行うと、ノード4、2、3となる。そして、引き継ぐファイルシステムを大きい順にソートすると、fs11、12、13となる。
したがって、図10で示すように、fs11をノード4に割り当て、fs12をノード2に、fs13をノード3に割り当てる。この結果、各ノード2〜4には利用者数の偏りを抑制して、引き継ぐリソースを割り当てることができる。
なお、上記割り当てに際しては、ノード2〜4の空きユーザ数が最大利用者数の10%以上となるように制限を設けても良い。この制限を設けることで、各ファイルシステムのデータの増加に対応することができる。
また、割当に失敗したときには、引き継ぎ回数や最大利用者数を見直して、再度STEP1からやり直す。
また、上記の割り当ては、状態名S1のときについて説明したが、状態名S2〜S14についても、同様にファイルシステムの割り当てを検証する。
{STEP5}
上記STEP4の結果、状態名S0〜S14について、図11で示すような、リソースの引き継ぎリストを得ることができる。
このリソース引き継ぎリストは、全てのノード1〜4が稼動している状態S0から一つのノードのみが稼動している状態名S14までのそれぞれについて、各ノードに割り当てるリソース(ファイルシステム)が各ノード1〜4に許容された最大値(最大利用者数)を超えない範囲で、割り当てた場合をフェイルオーバまたはフェイルバックが発生する以前に作成したものである。
そして、上記STEP4の例のように、ノード1が停止して状態名S0からS8に移行する場合には、図中S8のようにノード2〜4にfs11〜13が割り当てることが記載される。
{STEP6}
以上のSTEP4、5で作成した図11のリソース引き継ぎリストを、共有ストレージ装置6に格納する。
{STEP7}
次に、リソースの割り当てが完了すると、フェイルオーバ時のアドレス(例えば、IPアドレス)の引き継ぎ状態を作成する。
例えば、上記の例のように、ノード1が停止した状態名S8では、ノード1のIPアドレスを他のノード2〜4に割り当てる。
あるいは、2つのノードが停止する場合、例えば、状態名S5のようにノード2、4が停止してノード1、3が引き継ぐ場合、以下のようにする。
まず、現在のクラスタ100の状態から稼動しているノード及びその個数と、停止しているノード及びその個数を取得する。そして、稼動しているノードのリストを図12のようにノードリスト・アライブとして、稼動しているノードを列記したリストを作成する。
同様に、停止しているノードのリストを図13のようにノードリスト・ダウンとして、停止しているノードを列記したリストを作成する。
次に、ノードリスト・アライブ内の各ノードに対して、リストの上位から順に、1個ずつノードリスト・ダウン内のノードのIPアドレスを割り当てていく。
ノードリスト・ダウンのノードが余ったら、ノードリスト・アライブの先頭のノードに戻って再びリストの上位から順にノードリスト・ダウンのノードのIPアドレスを割り当てていく。
上記状態名S5の場合、図12、図13から、
ノード1:ノード2のIPアドレス
ノード3:ノード4のIPアドレス
をそれぞれ割り当てる。
以上の処理を状態名S1〜S14についてそれぞれ行って、状態名S0〜S14について、フェイルオーバ時のアドレスの引き継ぎリストを図14のように作成し、このアドレス引き継ぎリストを共有ストレージ装置6に格納する。
以上のSTEP1〜7が状態別引き継ぎ情報作成処理112の概要であり、この処理を所定の周期(例えば、数秒おきなど)で実行することにより、共有ストレージ装置6上には、最新の引き継ぎ回数リスト、クラスタ状態リスト、リソースの引き継ぎリスト、アドレス引き継ぎリストが更新されるのである。なお、クラスタ状態リスト、リソースの引き継ぎリスト、アドレス引き継ぎリストが状態別引き継ぎ情報を構成する。
<クラスタ状態監視処理221の概要>
各ノード1〜4で実行される、フェイルオーバ機能220を構成するクラスタ状態監視処理221の概要について、説明する。
各ノード1〜4は、共有ストレージ装置6に設定された確認テーブル(図15参照)を所定の周期(監視間隔、例えば30秒ないし1分)で参照し、他のノードが定期的に確認テーブルを更新しているかどうかを相互に監視する。
また、他ノードから状態確認通知を受信した場合も監視を行う。
確認テーブルの更新間隔が予め設定した設定値(障害判定時間、例えば10分)よりも大きくなった場合は、該当するノードで障害が発生していると判断する。各ノードは、自身以外の各ノードに関して稼動/停止の判定を行い、クラスタの状態(S0〜S14)を特定する。また、自身が生きていること通知するため、共有ストレージ装置6の確認テーブルで自身のノードに該当する領域を更新する。この更新は、図15で示すように、タイムスタンプと状態(稼動/停止(ダウン))を書き込むことで行われる。
共有ストレージ装置6の確認テーブルを各ノード1〜4が参照することにより、各ノードはクラスタ100の状態を特定し、前回特定した状態と最新の状態を比較し、状態の変化を検知した場合、ノード障害発生か障害ノード回復かを判断し(図8のビット列のビット数の増減で判定する)、フェイルオーバ処理またはフェイルバック処理中でなければ、ビット数の増大(オンビットの増大)でフェイルオーバ処理を起動し、ビット数の減少(オンビットの減少)でフェイルバック処理を起動する。
<フェイルオーバ処理223の概要>
各ノード1〜4で実行される、フェイルオーバ機能220を構成するフェイルオーバ処理223の概要について、説明する。
{Step1} マスタ/スレーブの決定
フェイルオーバ時にマスタとなるノードを決定するため、共有ストレージ装置6上の確認テーブルを参照して、自身のノード番号(例:Node X)が最も小さい場合、自身がマスタとなり、そうでない場合はスレーブとなる。
{Step2−マスタ}
自ノードがマスタの場合には、停止しているノードに対して、シャットダウン要求を行い、ノードを停止する。その後、後述の状態確認要求処理222を呼び出し、他のノードに引き継ぎ状態を確認する。
そして、管理サーバ10が更新した共有ストレージ装置6上の状態別引き継ぎ情報から解放すべきリソースと、引き継ぐべきリソースを取得し、解放すべきリソースを解放した後にリソースの引継ぎを行う。
{Step2−スレーブ}
自ノードがスレーブの場合には、マスタとなったノードから状態確認要求を受けて、フェイルオーバ処理を再開する。
以上の処理により共有ストレージ装置6上の状態別引き継ぎ情報に基づいてフェイルオーバ処理が行われる。
すなわち、管理サーバ10は、所定の周期で状態別引き継ぎ情報作成処理112を実行し、クラスタ100の稼働中に共有ストレージ装置6上へ状態別引き継ぎ情報を更新しておく。そして、各ノード1〜4は、いずれかのノードが停止すると、管理サーバ10が作成した状態別引き継ぎ情報に基づいて、リソースとアドレスの引き継ぎを行うのである。
したがって、フェイルオーバ時に各ノード1〜4は、引き継ぎに関して割り当ての調停等の演算を行う必要がなく、極めて高速にフェイルオーバ処理を完了することができる。また、状態別引き継ぎ情報は、フェイルオーバを行う必要のある全ての状態について、管理サーバ10が予め作成し、検証したものであるため、引き継ぐリソースがノード間で大きく偏るのを防止し、各ノード1〜4の負荷が均一になるよう調整できる。
<フェイルバック処理224の概要>
各ノード1〜4で実行される、フェイルオーバ機能220を構成するフェイルバック処理224の概要について、説明する。
{Step1} マスタ/スレーブの決定
フェイルバック時にマスタとなるノードを決定するため、共有ストレージ装置6上の確認テーブルを参照して、自身のノード番号(例:Node X)が最も小さい場合、自身がマスタとなり、そうでない場合は、スレーブとなる。
{Step2−マスタ}
自ノードがマスタの場合には、稼働中の他のノードに対して後述の状態確認要求処理222を呼び出し、他のノードに引き継ぎ状態を確認する。
そして、管理サーバ10が更新した共有ストレージ装置6上の状態別引き継ぎ情報から解放すべきリソースと引き継ぐべきリソースを取得し、解放すべきリソースを解放後にリソースの引継ぎを行う。
{Step2−スレーブ}
自ノードがスレーブの場合には、マスタとなったノードから状態確認要求を受けて、フェイルバック処理を再開する。
フェイルバック処理の場合も、上記フェイルオーバ処理と同様に、各ノード1〜4は、引き継ぎに関して割り当ての調停等の演算を行う必要がなく、共有ストレージ装置6上へ状態別引き継ぎ情報を参照するだけでよいので、極めて高速にフェイルバック処理を完了することができる。
<状態確認要求処理222の概要>
各ノード1〜4で実行される、フェイルオーバ機能220を構成する状態確認要求処理222の概要について、説明する。
この処理は、スレーブのノードに対して、マスタのノードが認識している状態(S0〜S14)を送信する。そして、全てのスレーブから応答を受信し、全ノードで状態が一致していることを確認する処理である。
以上、管理サーバ10の引き継ぎ情報作成機能110と、各ノード1〜4のフェイルオーバ機能220の各処理の概要について説明した。
次に、各処理の詳細な動作について、フローチャートを参照しながら以下に説明する。
<状態別引き継ぎ情報作成処理112の詳細>
管理サーバ10の引き継ぎ情報作成機能110で行われる状態別引き継ぎ情報作成処理112の詳細な処理内容について、図16のフローチャートを参照しながら以下に説明する。このフローチャートは、所定の周期(例えば、数秒)で実行されるものである。
S201〜S210では、上記STEP1で述べたように、管理サーバ10が各ノード1〜4のファイルシステム毎の利用者数を取得する処理である。
まず、S201では、ノードを特定する変数kを1に初期化する。そして、S202で管理サーバ10は、変数kで指示されるノード(k)に接続する。
次に、S203では各ノードのファイルシステムを特定する変数lを1に初期化する。そして、S204で管理サーバ10は、変数iで指示されるファイルシステム(i)を指定し、S205でファイルシステム(l)の名称と利用者数をノード(k)から取得する。ノード(k)は、アクセスログからファイルシステム毎にアクセスユーザ数をカウントし、ファイルシステム名と現在の利用者数を管理サーバ10に通知する。なお、変数lはノード(k)内のファイルシステムの先頭などから順次スキャンするための変数である。
S206では、管理サーバ10がノード(k)から取得したファイルシステム名と現在の利用者数をメモリ12等に出力する。
そして、S207ではノード(k)の最後のファイルシステムに達したか否かを判定する。最後でない場合にはS210へ進んで変数lをインクリメントした後S204へ進んで、次のファイルシステムについて利用者数を取得する。
一方、最後のファイルシステムに達した場合は、S208へ進んでクラスタ100の最後のノードに達したか否かを判定する。最後のノードでない場合には、S209に進んで、変数kをインクリメントした後S202へ戻って、次のノード(k)についてファイルシステムを調査する。
最後のノードに達した場合には、S211へ進む。
この時点で、全ノード1〜4の全ファイルシステムについて、ファイルシステム名と現在の利用者数を取得したので、管理サーバ10のメモリ12上には、図5で示したようなファイルシステム利用者数リストが作成され、現在クラスタ100が提供しているリソースの一覧が作成される。
上記S201〜S210の処理で、ファイルシステム利用者数リストを作成した後には、S211以降でクラスタ100の状態S0〜S14に応じたフェイルオーバ時の引き継ぎ情報の作成を行う。
S211では、設定情報111に基づく各ノード1〜4の引き継ぎ回数リスト(図6参照)を読み込み、また、設定情報111から各ノード1〜4毎の最大利用者数(図7参照)を読み込む。なお、引き継ぎ回数リストは、初回の処理で設定情報111から読み込んだ値を共有ストレージ装置6に書き込み、その後、フェイルオーバやフェイルバックに応じて更新するものである。
次に、S212でクラスタ100の状態S0〜S14を設定する変数xを0に初期化する。
S213では、上記STEP4及び図8で示したように、状態S(x)の場合に引き継ぎ先となるノードを取得し、S214では上記引き継ぎ回数リストとファイルシステム利用者数リストから、引き継ぎ先のノード毎のファイルシステム名と利用者数を取得する。
S215では、上記S211で読み込んだ設定情報111から引き継ぎ先ノード毎の最大利用者数を取得する。
そして、S216では、状態S(x)の引き継ぎ情報を、上記STEP4、5で示したように作成する。なお、この処理については、後に詳述する。
S217では、上記S216の引き継ぎ情報作成処理でエラーが発生したか否かを判定し、エラーがあればS223へ進んで、管理サーバ10へエラーが生じたことを通知する。
エラーがなければ、S218に進んで、予め設定した最後の状態S(x)となったか否かを判定する。本実施形態では、x=14が最後の状態となる。最後の状態でない場合には、S222へ進んで変数xをインクリメント(1を加算)した後、S213に戻って次の状態S(x)について引き継ぎ情報を作成する。
全ての状態S(x)について引き継ぎ情報が作成されたS218では、上記図11で示したように、状態S(x)を状態名とし、引き継ぎ先ノード毎に引き継ぐファイルシステム名を記載したリソース引き継ぎリストを共有ストレージ装置6に出力(更新)する。
次に、S220では上記STEP7で示したように、各状態S(x)毎にIPアドレスの引き継ぎ情報を作成し、S221では上記図14で示したように、状態S(x)を状態名とし、引き継ぎ先ノード毎に引き継ぐIPアドレスを記載したアドレス引き継ぎリストを共有ストレージ装置6に出力(更新)する。
以上の処理により、管理サーバ10は、所定の周期で各ノード1〜4の負荷(利用者数)を検出し、フェイルオーバが生じた場合の引き継ぎ情報を、負荷に応じて配分するリソース及びアドレスのリストとして共有ストレージ装置6に出力し、更新する。
{状態S(x)別リソース引き継ぎ情報作成処理}
次に、上記S216で行われる状態S(x)毎のリソース引き継ぎ情報の作成処理について、図17のサブルーチンを参照しながら詳述する。
S31では、上記S214で取得した引き継ぎ先のノードのファイルシステム名と利用者数から、現在のノードの利用者数をcurrent_userとして求める。また、上記S211で取得した最大利用者数をmax_userに設定する。
そして、各ノード毎に空きユーザ数を、max_user−current_userとして演算する。
図7で示したクラスタ100のノードのテーブルをメモリ12などに読み込んで、テーブルnodeとし、求めた空きユーザ数の大きい順で、ノード番号をソートする。
次に、S32では、上記図5のファイルシステム利用者数リストをメモリ12などに読み込んで、テーブルfilesystemとして、上記S213で取得したノード毎のファイルシステムと利用者数から、利用者数(user_num)の大きい順位ファイルシステム名をソートする。
S33以降は、ループ処理により現在の状態S(x)のリソース引き継ぎ情報を作成する。
まず、S33ではループカウンタiを0にセットして、所定値mまでループを行う。なお、所定値mは各ノード毎のファイルシステム数などに設定される。
S34では、現在の状態S(x)で引き継ぎ先となるノード数をnとして、変数jを、
j=(i mod n)+1
として演算する。なお、modはi/nの余りを求める演算子である。
この演算の結果、ループカウンタiの増加に応じて、変数jは0〜nの間で循環する。
S35では、変数jでノードを指定し(node[j])、ノードの利用者数current_userに、ループカウンタiで指し示すファイルシステム名(filesystem[i])のユーザ数(user_num)を加算する。
S36では、指定したノード(node[j])にファイルシステム名(filesystem[i])を追加したリストnode[j].listに追加する。このリストnode[j].listは、図11のリソース引き継ぎリストのノード番号とファイルシステム名の部分に相当するもので、管理サーバ10のメモリ12などに設定される。
S37では、変数jが引き継ぎ先のノード数に相当する値nに達したか否かを判定し、達していなければS39に進み、達していればS38へ進んで、テーブルnode[j]を再び空きユーザ数の大きい順でソートする。
S39では、ループカウンタiが所定の最大値mに達したか否かを判定し、i<mの場合には、S33へ戻ってi=i+1として次のノードについてファイルシステム名の設定を行う。i=mの場合には、S40に進んで、各ノードの利用者数が図7で設定された最大利用者数を超えていないかを判定する。超えていなければ、S41で現在の状態S(x)における引き継ぎ先のノード毎に、ファイルシステム名割り当てたリストnode[j].listをメモリ12などに出力する。
一方、各ノードの利用者数が最大利用者数を超えている場合には、S42で上記図16のS223でエラー通知を行うためのエラー処理を行う。
以上のサブルーチンにより、ノードを収容可能な空きユーザ数(最大利用ユーザ数−既に利用しているユーザ数)が大きい順でソートする。そして、引き継ぐリソース(ファイルシステム)を利用ユーザ数の大きい順でソートする。
ソートした順序で、各ノードにファイルシステムを1個ずつ割当て、各ノードの利用ユーザ数を更新する。
そして、未割当てのファイルシステムがなくなるまでファイルシステムの割り当てを行って、各ノードの利用者数と最大利用者数を比較し、全てが最大利用ユーザ数に納まっているか、または許容範囲(例えば、最大利用ユーザ数×20%など)に収まっていれば、この割当てを状態別引継ぎ情報へ出力する。そうでなければ、処理を中断して、入力情報(引継ぎ回数設定情報や最大利用者数)などを見直して、再実行する。
{状態S(x)別リソース引き継ぎ情報作成処理}
次に、上記S220で行われる状態S(x)毎のアドレス引き継ぎ情報の作成処理について、図18のサブルーチンを参照しながら詳述する。
S51では、状態S1〜S14(x=1〜14)のそれぞれについて、稼動しているノードを集計し、図12のNode_list_alive(図中alive_list)を作成する。
S52では、状態S1〜S14(x=1〜14)のそれぞれについて、停止しているノードを集計し、図13のNode_list_down(図中down_list)を作成する。
S53では、上記作成したNode_list_aliveとNode_list_downをメモリ12などに出力する。
S54では、Node_list_downのノードの総数をyにセットし、S55で変数Zを1に初期化する。
S56では、変数zが指し示すNode_list_downから順次ノード番号を読み込み、S57でノード番号に対応するIPアドレスを設定情報111から取得する。
次に、S58では、変数zが指し示すNode_list_aliveから順次ノード番号を読み込み、S59では上記S57で取得したIPアドレスを変数zが指し示すNode_list_aliveのノード番号に割り当てる。
S60では、Node_list_downの最後に到達したかを判定し、到達していなければS61で変数zをインクリメントしてS56に戻り、Node_list_downに記載されたノードのIPアドレスを、Node_list_aliveに記載されたノードの先頭から順次割り当てる。
以上のサブルーチンにより、図14に示すアドレスの引き継ぎリストが作成される。
<クラスタ状態監視処理221の詳細>
各ノード1〜4のフェイルオーバ機能220で行われるクラスタ状態監視処理221の詳細な処理内容について、図19のフローチャートを参照しながら以下に説明する。このフローチャートは、時分割処理などにより繰り返して実行されるものである。
S70では、現在の状態を示す変数S及び前回の状態を示す変数S_oldを0にリセットすると共に、カウンタiを1に設定する。
S71では、現在時刻をOS210などから取得し、共有ストレージ装置6の確認テーブルから自ノードのタイムスタンプを取得する。また、管理サーバ10の設定情報111から監視間隔及び障害判定時間を取得する。
S72では、自ノードのタイムスタンプに所定の監視間隔(例えば、30秒〜1分)を加算した値よりも、現在時刻の方が大きいか否かを判定する。現在時刻>タイムスタンプ+監視間隔の場合はS75に進み、現在時刻≦タイムスタンプ+監視間隔の場合はS73に進む。
S73では、他のノードから状態確認通知を受信したか否かを判定し、受信した場合にはS74で自ノードをスレーブに設定する。受信しない場合にはS71に戻って、監視間隔が経過するか、他ノードから状態確認要求を受信するまで待機するループを繰り返す。
S75では、カウンタiに応じたノード(i)のタイムスタンプを共有ストレージ装置6の確認テーブルから取得する。
S76では、現在時刻から取得したタイムスタンプを差し引いた値が、障害判定時間を超えているか否かを判定する。現在時刻−タイムスタンプ>障害判定時間の場合には、このノード(i)に障害が発生している疑いがあるのでS77に進んで、変数Sを更新する。現在時刻−タイムスタンプ≦障害判定時間の場合は、正常に稼動していると判定できるため、S78に進む。
S77では、上記図8のビット列に対応するクラスタ状態を示す変数Sを、
S=S+(2^(ノード数−ノード番号))
として更新する。この演算により、障害の生じたノードに対応するビットがオン(=1)に変更される。
S78では、カウンタiをインクリメントして、S79でカウンタiがクラスタ100のノードの総数を超えたか否かを判定し、超えていなければS75に戻って次のノードを監視し、超えていれば全ノードを監視したので、S60に進む。
S60では、クラスタ100の状態を示すSが前回値S_oldから変化しているかを判定する。
S=S_oldの場合には、各ノードに変化がないのでS88で変数Sを0に戻してからS89で共有ストレージ装置6上の確認テーブルにおいて、自ノードのタイムスタンプを現在時刻で更新する。
一方、S≠S_oldの場合には、S81に進んでクラスタ100の状態の変化を検出する。すなわち、現在の状態を示す変数Sで、オンとなっているビットの数(停止しているノード数)から前回の状態を示す変数S=S_oldで、オンとなっているビットの数を差し引いた変化量ΔSを求める。
S82では、変化量ΔSが0より大きければ、停止したノードが増加したのでフェイルオーバ処理を行う必要があるのでS83に進み、変化量ΔSが0より小さければ、停止したノードが減少(復旧)したのでフェイルバック処理を行う必要があるのでS85に進む。
S83では、現在フェイルオーバ処理中またはフェイルバック処理中であるか否かを判定し、いずれかの処理を行っている場合には、フェイルオーバ処理を行わずにS87へ進み、どちらの処理も行っていない場合には、S84でフェイルオーバ処理を起動する。なお、フェイルオーバ処理またはフェイルバック処理中の判定は、自ノードがスレーブの場合、他のノードに問い合わせて処理中であるか否かを取得する。
S84では、後述するようにフェイルオーバ処理を実施し、S87に進む。
S85では、現在フェイルオーバ処理中またはフェイルバック処理中であるか否かを判定し、いずれかの処理を行っている場合には、フェイルバック処理を行わずにS87へ進み、どちらの処理も行っていない場合には、S86でフェイルバック処理を起動する。S86では、後述するようにフェイルバック処理を実施し、S87に進む。
S87では、前回値S_oldを現在の状態Sで更新し、S88に進む。
このように、各ノード1〜4では、共有ストレージ装置6上の確認テーブルから読み込んだタイムスタンプに基づいて他ノードの稼動/停止を監視し、変数Sのビット列の変化があったときには、フェイルオーバ処理またはフェイルバック処理を実施する。ただし、既にフェイルオーバ処理またはフェイルバック処理が実施されている場合には、前回値S_oldの更新のみを行う。
<フェイルオーバ処理223の詳細>
各ノード1〜4のフェイルオーバ機能220で行われるフェイルオーバ処理223の詳細な処理内容について、図20のフローチャートを参照しながら以下に説明する。このフローチャートは、上記図19のS84で起動されるもので、クラスタ状態監視処理221とは別のプロセスで起動されるものである。なお、この図20の処理を上記S84のサブルーチンとすることも可能である。
S91では、自ノードがマスターとスレーブのいずれであるかを判定する。マスターであればS92へ進み、スレーブであればS94に進む。
S92では、停止していると判定されたノードにシャットダウンを要求する。その後、S93では、他のノード(自ノードを除く引き継ぎ先のノード)に状態確認要求を行う。
その後、S94では、共有ストレージ装置6上の状態別引き継ぎ情報からリソース引き継ぎリスト及びアドレス引き継ぎリストを読み込む。読み込んだリストと現在の状態(上記図19の変数S)から解放するリソースと引き継ぐリソースを決定する。
そして、S95では、上記S94で決定したリソースを解放し、次いで、S96でリソースを引き継ぐ(ファイルシステムのマウントなど)とともに、IPアドレスを引き継いで処理を終了する。
このように、フェイルオーバ処理では、現在の状態Sが分かれば、この状態Sに応じたリソース引き継ぎリストとアドレス引き継ぎリストを読み込むだけで、リソースとIPアドレスの引き継ぎを決定でき、極めて高速にフェイルオーバ処理を行うことができる。
また、フェイルオーバ処理は、引き継ぐノードで並列的に行われるので、さらに高速な処理を実現することができる。
<フェイルバック処理224の詳細>
各ノード1〜4のフェイルオーバ機能220で行われるフェイルバック処理224の詳細な処理内容について、図21のフローチャートを参照しながら以下に説明する。このフローチャートは、上記図19のS85で起動されるもので、クラスタ状態監視処理221とは別のプロセスで起動されるものである。なお、この図21の処理を上記S85のサブルーチンとすることも可能である。
S101では、自ノードがマスターとスレーブのいずれであるかを判定する。マスターであればS102へ進み、スレーブであればS103に進む。
S102では、他のノード(自ノードを除く引き継ぎ先のノード)に状態確認要求を行う。
その後、S103では、共有ストレージ装置6上の状態別引き継ぎ情報からリソース引き継ぎリスト及びアドレス引き継ぎリストを読み込む。読み込んだリストと現在の状態Sから引き継ぐリソースと解放するリソースを決定する。
そして、S104では、上記S103で決定したリソースを解放し、次いで、S104でリソースを引き継ぐ(ファイルシステムのマウントなど)とともに、IPアドレスの引き継ぎを行って処理を終了する。
このように、フェイルバック処理の場合も、フェイルオーバ処理と同様に、現在の状態Sが分かれば、この状態Sに応じたリソース引き継ぎリストとアドレス引き継ぎリストを読み込むだけで、リソース(処理)とIPアドレスの引き継ぎを決定でき、極めて高速にフェイルバック処理を行うことができる。
また、フェイルバック処理は、引き継ぐノードで並列的に行われるので、さらに高速な処理を実現することができる。
<状態確認要求処理222の詳細>
各ノード1〜4のフェイルオーバ機能220で行われる状態確認要求処理222の詳細な処理内容について、図22のフローチャートを参照しながら以下に説明する。このフローチャートは、上記図20のS93または図21のS102で起動されるもので、クラスタ状態監視処理221とは別のプロセスで起動されるものである。なお、この図22の処理を上記S93またはS102のサブルーチンとすることも可能である。
S111では、送付先のノード1〜4のIPアドレスを、管理サーバ10の設定情報111から取得する。S112では、送信するメッセージを作成し、S113では、このメッセージを送信する。
以上のように、管理サーバ10とクラスタ100の各ノード1〜4では、共有ストレージ装置6上で確認テーブル、状態別引き継ぎ情報を共有することで、フェイルオーバやフェイルバック処理を迅速に行うことができる。そして、状態別引き継ぎ情報は、フェイルオーバやフェイルバック処理が発生する以前に、管理サーバ10によって定期的に更新されているので、フェイルオーバ時の演算処理を大幅に低減して処理の高速化を図ることができる。
また、状態別引き継ぎ情報は、管理サーバ10が各ノード1〜4の負荷に応じて引き継ぐリソースを決定し、検証を行っているため、フェイルオーバ処理後に、ノード1〜4間で負荷が偏るのを防ぐことが可能となって、クラスタ100のリソースを効率よく利用することが可能となる。
<変形例1>
上記実施形態において、各ノード1〜4のいずれかがマスターとなってフェイルオーバ処理を行う例を示したが、図23で示すように、管理サーバ10にフェイルオーバ機能220を搭載し、管理サーバ10が常にマスターとして動作し、各ノード1〜4が常にスレーブとして動作させる構成も可能である。この場合、例えば、管理サーバ10にノード番号として、0を与えれば、管理サーバ10によるクラスタノード監視体制をとることができる。
<変形例2>
上記実施形態において、各ノード1〜4は、引き継ぐノード番号が小さいノードがマスターとなる例を示したが、図24で示すように、マスターとなった回数を示すテーブルを共有ストレージ装置6上に設け、マスターとなった回数が小さいものから順にマスターとなるようにしてもよい。この場合、ノード番号が小さいノードが繰り返しマスターになるのを防ぎ、各ノード1〜4の負荷をさらに均一にすることができる。
<変形例3>
上記実施形態において、各ノード1〜4が全て稼動している状態を0段目(図8参照)としたが、1段目(1つのノードが停止した状態)等を初期状態としても良い。この場合、停止中のノードをスタンバイとして、クラスタ100の全体の負荷が上昇したときにスタンバイのノードをクラスタ100へ加える(フェイルバック)ことで、ノードの自動拡張を行うことができる。
なお、スタンバイのノードで引き継ぎ情報作成機能110を実行するようにしても良い。
システムの全体的なハードウェア構成を示すブロック図。 システムの全体的なソフトウェア構成を示すブロック図。 管理サーバで実行されるソフトウェア構成を示すブロック図。 各ノードで実行されるソフトウェア構成を示すブロック図。 管理サーバによって作成される各ノード毎のファイルシステム利用者数リストの説明図。 管理サーバによって作成される各ノード毎の引き継ぎ回数リストの説明図。 管理サーバによって作成される各ノードの最大利用者数リストの説明図。 状態名とビット列の値に応じてクラスタの状態を示すクラスタ状態リストの説明図。 フェイルオーバ時の各ノード毎の引き継ぎ回数リストの説明図。 フェイルオーバ時の各ノードのリソースの引き継ぎの様子を示す説明図。 管理サーバによって作成される状態別のリソース引き継ぎリストの説明図。 管理サーバによって作成される稼働中のノードを示すnode_list_aliveの説明図。 管理サーバによって作成される停止中のノードを示すnode_list_downの説明図。 管理サーバによって作成される状態別のアドレス引き継ぎリストの説明図。 共有ストレージ装置上で各ノードが共有する確認テーブルの説明図。 管理サーバで実行される状態別引き継ぎ情報作成処理の一例を示すフローチャート。 図16のS216で行われる状態別リソース引き継ぎ情報作成のサブルーチン。 図16のS220で行われる状態別アドレス引き継ぎ情報作成のサブルーチン。 各ノードで実行されるクラスタ状態監視処理の一例を示すフローチャート。 図19のS84で起動されるフェイルオーバ処理の一例を示すフローチャート。 図19のS86で起動されるフェイル縛処理の一例を示すフローチャート。 図20のS93、図21のS102で起動される状態確認要求処理の一例を示すフローチャート。 変形例1を示し、管理サーバで実行されるソフトウェア構成を示すブロック図。 変形例2を示し、共有ストレージ装置上に配置されるマスター回数のテーブルの説明図。
符号の説明
1〜4 ノード
6 共有ストレージ装置
10 管理サーバ
20〜50 サーバ
112 状態別引き継ぎ情報作成処理
221 クラスタ状態監視処理
223 フェイルオーバ処理
224 フェイルバック処理

Claims (3)

  1. 複数のノードからなるクラスタを有し、前記複数のノードのいずれかに障害が発生したときに、障害の発生したノードの処理を他のノードへ引き継ぐフェイルオーバ方法であって、
    前記複数のノードが相互に稼動状態を監視する手順と、
    前記監視結果に基づいて障害の発生を検知する手順と、
    前記障害が発生したことを検知したときには、前記障害が発生したノードを除くクラスタ内の各ノードが、予め共有する記憶装置に格納された障害の発生したノードの処理を他のノードへ引き継ぐ引き継ぎ情報を読み込む手順と、
    前記各ノードが、前記引き継ぎ情報に基づいて障害が発生したノードの処理を引き継ぐ手順と、
    前記クラスタ内の各ノードの負荷を取得する手順と、
    前記取得した負荷に基づいて、前記複数のノードのいずれかに障害が発生したときの前記引き継ぎ情報を作成する手順と、
    を含み、
    前記引き継ぎ情報を作成する手順は、
    各ノードの処理毎に引き継ぐ回数の上限を設定する手順と、
    現在の引き継ぎ回数と前記引き継ぐ回数の上限に基づいて、他のノードに引き継ぐ処理を選択する手順と、を含むことを特徴とするフェイルオーバ方法。
  2. 複数のノードからなるクラスタと、
    前記クラスタを管理する管理ノードと、を備えて、
    前記複数のノードのいずれかに障害が発生したときに、障害の発生したノードの処理を他のノードへ引き継ぐ計算機システムにおいて、
    前記クラスタ内の各ノード及び前記管理ノードに共有されて、前記複数のノードのいずれかに障害が発生したときの引き継ぎ情報を格納する共有記憶装置を備え、
    前記クラスタ内の各ノードは、
    他のノードの稼動状態を監視する監視部と、
    前記監視結果に基づいて他のノードの障害の発生を検知する障害検知部と、
    前記障害を検知したときには、前記共有記憶装置から引き継ぎ情報を取得する引き継ぎ情報取得部と、
    前記引き継ぎ情報に基づいて障害が発生したノードの処理を引き継ぐフェイルオーバ部と、
    前記クラスタ内の各ノードの負荷を取得する負荷取得部と、
    前記取得した負荷に基づいて、前記複数のノードのいずれかに障害が発生したときの引き継ぎ情報を作成し、前記共有記憶装置に書き込む引き継ぎ情報作成部と、
    を有し、
    前記引き継ぎ情報作成部は、
    前記各ノードの処理毎に引き継ぐ回数の上限を設定する引き継ぎ回数上限設定部と、
    現在の引き継ぎ回数と前記引き継ぐ回数の上限に基づいて、他のノードに引き継ぐ処理を選択することを特徴とする計算機システム。
  3. 複数のノードからなるクラスタと、
    前記クラスタを管理する管理ノードと、を備えて、
    前記複数のノードのいずれかに障害が発生したときに、障害の発生したノードの処理を他のノードへ引き継ぐ計算機システムにおいて、
    前記クラスタ内の各ノード及び前記管理ノードに共有されて、前記複数のノードのいずれかに障害が発生したときの引き継ぎ情報を格納する共有記憶装置を備え、
    前記クラスタ内の各ノードは、
    他のノードの稼動状態を監視する監視部と、
    前記監視結果に基づいて他のノードの障害の発生または障害の復旧を検知する検知部と、
    前記障害または復旧を検知したときには、前記共有記憶装置から引き継ぎ情報を取得する引き継ぎ情報取得部と、
    前記障害が発生したときには、引き継ぎ情報に基づいて障害が発生したノードの処理を引き継ぐフェイルオーバ部と、
    前記復旧が発生したときには、引き継ぎ情報に基づいて復旧したノードに処理を引き継ぐフェイルバック部と、
    前記クラスタ内の各ノードの負荷を取得する負荷取得部と、
    前記取得した負荷に基づいて、前記複数のノードのいずれかに障害が発生したときの引き継ぎ情報を作成し、前記共有記憶装置に書き込む引き継ぎ情報作成部と、
    を有し、
    前記引き継ぎ情報作成部は、
    前記各ノードの処理毎に引き継ぐ回数の上限を設定する引き継ぎ回数上限設定部と、
    現在の引き継ぎ回数と前記引き継ぐ回数の上限に基づいて、他のノードに引き継ぐ処理を選択することを特報とする計算機システム。
JP2004259403A 2004-09-07 2004-09-07 フェイルオーバ方法及び計算機システム Expired - Fee Related JP4339763B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004259403A JP4339763B2 (ja) 2004-09-07 2004-09-07 フェイルオーバ方法及び計算機システム
US10/985,937 US7428210B2 (en) 2004-09-07 2004-11-12 Fail over method and a computing system having fail over function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004259403A JP4339763B2 (ja) 2004-09-07 2004-09-07 フェイルオーバ方法及び計算機システム

Publications (2)

Publication Number Publication Date
JP2006079161A JP2006079161A (ja) 2006-03-23
JP4339763B2 true JP4339763B2 (ja) 2009-10-07

Family

ID=35996072

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004259403A Expired - Fee Related JP4339763B2 (ja) 2004-09-07 2004-09-07 フェイルオーバ方法及び計算機システム

Country Status (2)

Country Link
US (1) US7428210B2 (ja)
JP (1) JP4339763B2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2882165B1 (fr) * 2005-02-11 2007-06-29 Airbus France Sas Systeme et procede de traitements embarques d'essais en vol
US7461289B2 (en) * 2006-03-16 2008-12-02 Honeywell International Inc. System and method for computer service security
US7580956B1 (en) 2006-05-04 2009-08-25 Symantec Operating Corporation System and method for rating reliability of storage devices
FR2903384B1 (fr) * 2006-07-04 2009-05-29 Airbus France Sas Systeme de commande de vol pour aeronef,et systeme de test pour tester un tel systeme de commande de vol.
JP5052361B2 (ja) * 2008-01-31 2012-10-17 株式会社フジテレビジョン 画像処理システム及び画像処理方法
JP2009217587A (ja) * 2008-03-11 2009-09-24 Hitachi Ltd バッチ処理装置及び方法
US8327186B2 (en) * 2009-03-10 2012-12-04 Netapp, Inc. Takeover of a failed node of a cluster storage system on a per aggregate basis
US8145838B1 (en) 2009-03-10 2012-03-27 Netapp, Inc. Processing and distributing write logs of nodes of a cluster storage system
US8069366B1 (en) * 2009-04-29 2011-11-29 Netapp, Inc. Global write-log device for managing write logs of nodes of a cluster storage system
US8694625B2 (en) 2010-09-10 2014-04-08 International Business Machines Corporation Selective registration for remote event notifications in processing node clusters
US8984119B2 (en) 2010-11-05 2015-03-17 International Business Machines Corporation Changing an event identifier of a transient event in an event notification system
US8433760B2 (en) * 2010-12-03 2013-04-30 International Business Machines Corporation Inter-node communication scheme for node status sharing
US8667126B2 (en) 2010-12-03 2014-03-04 International Business Machines Corporation Dynamic rate heartbeating for inter-node status updating
US8634328B2 (en) 2010-12-03 2014-01-21 International Business Machines Corporation Endpoint-to-endpoint communications status monitoring
US8634330B2 (en) 2011-04-04 2014-01-21 International Business Machines Corporation Inter-cluster communications technique for event and health status communications
US9154367B1 (en) * 2011-12-27 2015-10-06 Google Inc. Load balancing and content preservation
JP5590022B2 (ja) 2011-12-28 2014-09-17 富士通株式会社 情報処理装置、制御方法および制御プログラム
CN104137085B (zh) 2012-02-14 2016-12-14 国际商业机器公司 集群环境中用于控制客户端对服务的访问的方法
JP6007522B2 (ja) 2012-03-09 2016-10-12 日本電気株式会社 クラスタシステム
US10452284B2 (en) * 2013-02-05 2019-10-22 International Business Machines Corporation Storage system based host computer monitoring
JP2014229088A (ja) * 2013-05-23 2014-12-08 ソニー株式会社 データ処理システム、データ処理装置および記憶媒体
US9348717B2 (en) * 2013-07-24 2016-05-24 Netapp, Inc. Storage failure processing in a shared storage architecture
US10613949B2 (en) * 2015-09-24 2020-04-07 Hewlett Packard Enterprise Development Lp Failure indication in shared memory
WO2017094168A1 (ja) * 2015-12-03 2017-06-08 株式会社日立製作所 相互監視システム、相互監視システムにおける障害通知方法、及び、障害通知機能を発揮させるプログラムが記録された非一時的記憶媒体
CN108464031B (zh) * 2016-01-15 2019-11-08 阿弗梅德网络公司 电信网络中的基于数据库的冗余
US10346191B2 (en) * 2016-12-02 2019-07-09 Wmware, Inc. System and method for managing size of clusters in a computing environment
US10877858B2 (en) * 2018-10-19 2020-12-29 Oracle International Corporation Method and system for a speed-up cluster reconfiguration time via a generic fast self node death detection
CN111193600B (zh) * 2018-11-14 2023-04-07 杭州海康威视系统技术有限公司 一种接管服务的方法、装置及系统
US11347521B2 (en) * 2020-01-16 2022-05-31 Vmware, Inc. Cloud restart for non-critical performance virtual machines
JP7332488B2 (ja) * 2020-01-16 2023-08-23 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US11593234B2 (en) 2020-01-16 2023-02-28 Vmware, Inc. Cloud restart for VM failover and capacity management
CN116684433A (zh) * 2022-02-23 2023-09-01 中移(苏州)软件技术有限公司 一种请求处理方法、装置及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128279A (en) * 1997-10-06 2000-10-03 Web Balance, Inc. System for balancing loads among network servers
US6154765A (en) * 1998-03-18 2000-11-28 Pasocs Llc Distributed digital rule processor for single system image on a clustered network and method
US6965936B1 (en) * 2000-12-06 2005-11-15 Novell, Inc. Method for detecting and resolving a partition condition in a cluster
JP2003256399A (ja) 2002-02-26 2003-09-12 Nec Corp ホットスタンバイシステム切り替え制御方式
US7225356B2 (en) * 2003-11-06 2007-05-29 Siemens Medical Solutions Health Services Corporation System for managing operational failure occurrences in processing devices

Also Published As

Publication number Publication date
US20060050629A1 (en) 2006-03-09
JP2006079161A (ja) 2006-03-23
US7428210B2 (en) 2008-09-23

Similar Documents

Publication Publication Date Title
JP4339763B2 (ja) フェイルオーバ方法及び計算機システム
CN111818159B (zh) 数据处理节点的管理方法、装置、设备及存储介质
JP4620455B2 (ja) サーバ連結環境のための業務継続ポリシー
US7778984B2 (en) System and method for a distributed object store
US8706879B2 (en) Automated discovery and inventory of nodes within an autonomic distributed computing system
JP4462969B2 (ja) フェイルオーバクラスタシステム及びフェイルオーバ方法
US8065560B1 (en) Method and apparatus for achieving high availability for applications and optimizing power consumption within a datacenter
US20060155912A1 (en) Server cluster having a virtual server
JP2020021277A (ja) 情報処理システム、情報処理システムの管理方法及びプログラム
US10367676B1 (en) Stable leader selection for distributed services
CN108369544A (zh) 计算系统中延期的服务器恢复
CN112231108A (zh) 任务处理方法、装置、计算机可读存储介质及服务器
CN113312153B (zh) 一种集群部署方法、装置、电子设备及存储介质
CN113342893B (zh) 基于区块链的节点同步方法、装置、存储介质及服务器
JP2009223519A (ja) クラスタシステム及び同システムにおいてマスタノードを選択する方法
CN112714022A (zh) 多套集群的控制处理方法、装置及计算机设备
Stack et al. Self-healing in a decentralised cloud management system
US8595349B1 (en) Method and apparatus for passive process monitoring
TWI584654B (zh) 一種服務最佳化的電腦系統及其方法
CN113364874A (zh) 基于区块链的节点同步方法、装置、存储介质及服务器
JP5657096B2 (ja) アプリケーションの無進行状態の検出
JP7332249B2 (ja) 移行先決定プログラム、装置、及び方法
CN115022157B (zh) 一种集群内节点故障转移的方法、装置、设备及介质
US20180019923A1 (en) System and method for managing distributed cluster identity
CN113515403B (zh) 微服务状态检查方法、计算机设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070606

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090324

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090508

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090630

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090702

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120710

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130710

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees