JP2008242742A - クラスタシステム - Google Patents

クラスタシステム Download PDF

Info

Publication number
JP2008242742A
JP2008242742A JP2007081624A JP2007081624A JP2008242742A JP 2008242742 A JP2008242742 A JP 2008242742A JP 2007081624 A JP2007081624 A JP 2007081624A JP 2007081624 A JP2007081624 A JP 2007081624A JP 2008242742 A JP2008242742 A JP 2008242742A
Authority
JP
Japan
Prior art keywords
server machine
server
mirroring
cluster
access
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.)
Granted
Application number
JP2007081624A
Other languages
English (en)
Other versions
JP4874847B2 (ja
Inventor
Koji Muramatsu
孝治 村松
Tetsuya Iinuma
哲也 飯沼
Shigeo Omichi
茂夫 大道
Masa Tanaka
雅 田中
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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2007081624A priority Critical patent/JP4874847B2/ja
Publication of JP2008242742A publication Critical patent/JP2008242742A/ja
Application granted granted Critical
Publication of JP4874847B2 publication Critical patent/JP4874847B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

【課題】クラスタシステムにおいて、フェールオーバが発生時であっても、ディスクI/Oの性能劣化を抑えながら、トランザクションの整合を図る。
【解決手段】フィルタドライバ14(#A)は、稼動系になると、I/O入力を待ち、I/O入力の処理結果が成功の場合、有効期限通知デーモン16(#A)から通知された有効期限内であれば処理結果をI/O入力側へ返し、有効期限内でなければI/O入力側へエラーを返す。一方、待機系のクラスタソフト12(#B)は、サーバマシン10(#A)が生存していないと判定すると、共有領域33に管理されたアクセス情報を、サーバマシン10(#B)のみがアクセス許可されるよう変更し、所定時間待機した後に、サーバマシン10(#B)側からサーバB用データ領域32(#B)が見える状態にするとともに、アプリケーション11(#B)を起動させる。
【選択図】 図1

Description

本発明は、複数のサーバマシンを備えてなるクラスタシステム及びプログラムに関し、特に、フェールオーバが発生した場合であっても、データの整合を図ることが可能なクラスタシステムに関する。
例えば、非特許文献1で開示されているシステムに代表されるクラスタシステムでは、図20に示すように、稼動系のサーバマシン10(#A)と待機系のサーバマシン10(#B)とが設けられ、稼動系のサーバマシン10(#A)がアプリケーション11(#A)を実行し、(101)に示すように、実行結果であるデータをミラーリングディスク装置20(#A)に書き込む。その間、(102)に示すように、稼動系のサーバマシン10(#A)のクラスタソフト12(#A)と待機系のサーバマシン10(#B)のクラスタソフト12(#B)とは、通信路50を経由して、ハートビートaと呼ばれる所定のパケット交換をし続け、互いの生存を通知し合う。
更に、(103)に示すように、ハートビート継続中は、常時ミラーリングを行うことによって、ミラーリングディスク装置20(#A)に格納されたデータが、ミラーリングディスク装置20(#B)にミラーリングされる。
このような状態において、クラスタソフト12(#B)が、ハートビートaの断絶を検出すると、(104)に示すように、待機系のサーバマシン10(#B)で同一のアプリケーション11(#B)を起動させることでアプリケーション処理を継続させる、所謂フェールオーバbが一般に行われている。
ハートビートaが断絶する理由としては主に以下がある。
[1]稼動系のサーバマシン10(#A)のダウン。
[2]通信路50の障害。
[3]稼動系のサーバマシン10(#A)におけるCPU高負荷等による一時的なスローダウンの発生。
上記[1]の場合であれば、単純に待機系のサーバマシン10(#B)にフェールオーバbすれば良いが、上記[2]及び[3]の場合には稼動系のサーバマシン10(#A)が処理を継続するため、フェールオーバbしてしまうと以下に示すような不都合が生じる。
すなわち、図21に示すように、複数台のサーバマシン10(#A,#B)で通信回線52を経由してミラーリングディスク装置20(#A),20(#B)をミラーリングした状態で、データベースサーバアプリケーション(以降「DBサーバ」と称する)13(#A,#B)を対象にクラスタを構成する場合、上記[3]が原因のハートビートa断絶によりフェールオーバbが発生すると、ミラーリングディスク装置20(#A),20(#B)間のミラーリングは強制的に停止される。これは、待機系であったサーバマシン10(#B)で新たに実行するDBサーバ13(#B)からのwriteと、稼動系であったサーバマシン10(#A)のDBサーバ13(#A)からのwriteの混在によるデータ破壊を避けるためである。
しかしながら、待機系であったサーバマシン10(#B)が、稼動系であったサーバマシン10(#A)のIPアドレスやデータ等を全て引き継ぐために、データベースクライアント(以降、「DBクライアント」と称する)61は、DBサーバ13(#A)がDBサーバ13(#B)へフェールオーバしたことを意識せず、トランザクションの整合性が崩れる可能性がある。
例えば、図21に示すように、サーバマシン10(#A)のDBサーバ13(#A)が、クライアント60内のDBクライアント61からのコミット要求を受け(201)、そのままスローダウンした場合(202)、クラスタソフト12(#B)がハートビートa切れを検出する(203)ことにより、ミラーリングが中止される(204)とともに、サーバマシン10(#B)はフェールオーバを行う(205)。しかし、その後復帰したサーバマシン10(#A)のDBサーバ13(#A)は、自らのミラーリングディスク装置20(#A)にwriteし、正常終了する(206)。このとき、ミラーリングは既に停止されているので行われない(207)が、DBクライアント61にコミット成功を返す(208)。
しかし、サーバマシン10(#B)にはこのコミットが反映されていないため、フェールオーバ後にサーバマシン10(#B)が、DBクライアント61からのロールバック要求を受けると(209)、サーバマシン10(#B)のDBサーバ13(#B)は、DBクライアント61が意図したチェックポイントよりも1つ前のチェックポイントまでロールバックされてしまう(210)。さらにその後、DBクライアント61からサーバマシン10(#B)に対してなされた要求(211)にしたがって、データベースBにてデータベースの更新やコミットが行われると(212)、サーバマシン10(#A)のDBサーバ13(#A)もサーバマシン10(#B)のDBサーバ13(#B)も、本来あるべき姿とは異なる状態になってしまう。
同様の問題は、図22に示すように、ミラーリングディスク装置20(#A,#B)の代わりに、サーバマシン10(#A)によってなされたデータを書き込むためのサーバA用データ領域32(#A)と、サーバマシン10(#B)によってなされたデータを書き込むためのサーバB用データ領域32(#B)とを備えた共有ディスク装置31を用い、クラスタを組んだ場合においても発生する可能性がある。
すなわち、図22に示すように、サーバマシン10(#A)のDBサーバ13(#A)が、クライアント60内のDBクライアント61からのコミット要求を受け(301)、そのままスローダウンした場合(302)、クラスタソフト12(#B)がハートビートa切れを検出すると(303)、サーバA用データ領域32(#A)のデータがサーバB用データ領域32(#B)にコピーされる(304)とともに、サーバマシン10(#B)はフェールオーバを行う(305)。しかし、その後復帰したサーバマシン10(#A)のDBサーバ13(#A)は、サーバA用データ領域32(#A)にwriteし、正常終了し(306)、DBクライアント61にコミット成功を返す(307)。
しかし、サーバマシン10(#B)にはこのコミットが反映されていないため、フェールオーバ後にサーバマシン10(#B)が、DBクライアント61からのロールバック要求を受けると(308)、サーバマシン10(#B)のDBサーバ13(#B)は、DBクライアント61が意図したチェックポイントよりも1つ前のチェックポイントまでロールバックされてしまう(309)。さらにその後、DBクライアント61からサーバマシン10(#B)に対してなされた要求(310)にしたがって、DBサーバ13(#B)にてデータベースの更新やコミットが行われると(311)、サーバマシン10(#A)のDBサーバ13(#A)もサーバマシン10(#B)のDBサーバ13(#B)も、本来あるべき姿とは異なる状態になってしまう。
以上のことから、従来のクラスタシステムでは、元稼動系であったサーバマシン10(#A)が復帰してハートビートaが復活した場合には、即座にサーバマシン10(#A)及びサーバマシン10(#B)を停止あるいは再起動したり、クラスタソフト12(#A),12(#B)間の通信路50を多重化することにより、通信路50の一つに障害が発生した場合であってもハートビートaの断絶が発生しないような対策が講じられている。
東芝レビュー Vol.54 No.12(1999)、18〜21ページ
しかしながら、このような従来のクラスタシステムでは、以下のような問題がある。
すなわち、上述した対策を講じても、上記[3]稼動系のサーバマシン10におけるCPU高負荷等により一時的なスローダウンが発生した場合には、フェールオーバした直後にトランザクションの不整合が発生するという可能性を完全に回避できるものではないという問題がある。
この不整合は、例えば図22に示すクラスタシステムを、図23に示すように、共有ディスク装置31に共有領域33を設け、共有領域33に格納されたディスクアクセス権管理テーブル33aによって共有ディスク装置31へのアクセス権を管理するとともに、サーバマシン10にフィルタドライバ14を設け、共有ディスク装置31へのデータの書き込み(Write)や読み出し(Read)(以下、I/Oと呼ぶ)が発生するたびにアクセス権の有無に応じて処理結果を上位であるクライアント60に戻す方式をとり、フェールオーバ時に、待機系であるサーバマシン10(#B)が、稼動系であるサーバマシン10(#A)のアクセス権を奪うように改良することによって回避することができる。
すなわち、この構成では、サーバマシン10(#A)のDBサーバ13(#A)が、クライアント60内のDBクライアント61からのコミット要求を受け(401)、そのままスローダウンした場合(402)、クラスタソフト12(#B)がハートビートa切れを検出すると(403)、クラスタソフト12(#B)は更に、ディスクアクセス権管理テーブル33aを、サーバマシン10(#A)ではなくサーバマシン10(#B)に共有ディスク装置31へのアクセス権が与えられるように書き換える(404)。
その後、サーバA用データ領域32(#A)のデータがサーバB用データ領域32(#B)にコピーされる(405)とともに、サーバマシン10(#B)がフェールオーバする(406)。しかし、その後サーバマシン10(#A)のDBサーバ13(#A)が復帰すると、フィルタドライバ14(#A)は、DBサーバ13(#A)による処理結果をサーバA用データ領域32(#A)にwriteし(407)、更に、ディスクアクセス権管理テーブル33aを参照して、サーバマシン10(#A)にアクセス権が与えられているかを確認する(408)。
そして、アクセス権が与えられていれば正常リターンがフィルタドライバ14(#A)からDBサーバ13(#A)へ返され、アクセス権が与えられていなければエラーリターンが返される(409)。この場合、サーバマシン10(#B)にアクセス権が与えられているので、エラーが返される。更に、このエラーがDBサーバ13(#A)からDBクライアント61へ返される(410)。
これによりクライアント60は、(401)でサーバマシン10(#A)に行ったコミット要求に対する処理がエラーになったことを把握し、今度はサーバマシン10(#B)に要求することによりコミット要求のリトライを行う(411)。それに対しDBサーバ13(#B)がコミット要求完了をDBクライアント61に通知する(412)。さらにその後、DBクライアント61がサーバマシン10(#B)に対して行ったデータベース更新要求(413)にしたがって、DBサーバ13(#B)にてデータベースの更新が行われる(414)。
その後は、DBクライアント61からDBサーバ13(#B)に対してデータベースのロールバック要求がなされ(415)、それに対して、DBサーバ13(#B)からDBクライアント61へロールバック要求完了(成功)が通知される(416)。続いて、DBクライアント61からDBサーバ13(#B)に対してデータベースの更新要求がなされ(417)、それに対して、DBサーバ13(#B)からDBクライアント61へ更新要求完了(成功)が通知される(418)。更に、DBクライアント61からDBサーバ13(#B)に対してコミット要求がなされ(419)、それに対して、DBサーバ13(#B)からDBクライアント61へコミット要求完了(成功)が通知される(420)。
しかしながら、図23に示すような構成では、ディスクI/O(readやwrite)が1回発生するたびに共有ディスク装置31へのI/O(readやwrite)が1回発生するため、ディスクI/Oの性能劣化が大きくなってしまうという新たな問題が発生する。
一方、図24は、図23に示すような改良点を、図21に示すミラーリングディスク装置20を備えたクラスタシステムに適用した構成を示す。
すなわち、この構成では、サーバマシン10(#A)のDBサーバ13(#A)が、クライアント60内のDBクライアント61からのコミット要求を受け(501)、これに基づいてフィルタドライバ14(#A)が、コミット要求に対応するwriteをミラーリングディスク装置20(#A)に発行する(502)。
そして、その後、ミラーリングディスク装置20(#A)が、ミラーリングディスク装置20(#B)にデータをコピーしてミラーリングする際に、サーバマシン10(#A)がスローダウンし(503)、その後復帰するものとする。この場合、スローダウンが発生した時点でクラスタソフト12(#B)がハートビートa切れを検出する(504)。その後、サーバマシン10(#A)が復帰しても、通信タイムアウト等によりミラーリングディスク装置20(#A)からミラーリングディスク装置20(#B)へのミラーリングは失敗してしまう(505)。
その後、フィルタドライバ14(#A)は、ディスクアクセス権管理テーブル33aを参照して、サーバマシン10(#A)にアクセス権が与えられているかを確認する(506)。この時点で、クラスタソフト12(#B)によって、ディスクアクセス権管理テーブル33aが、アクセス権がサーバマシン10(#B)に与えられるように書き換えられていなければ、すなわち、(506)のタイミングの後に、クラスタソフト12(#B)によって、ディスクアクセス権管理テーブル33aが、アクセス権がサーバマシン10(#B)に与えられるように書き換えられる(507)のであれば、フィルタドライバ14(#A)は、DBサーバ13(#A)に正常リターンを返す(508)。
その後、サーバマシン10(#B)がフェールオーバする(509)。一方、DBサーバ13(#A)は、DBクライアント61へコミット処理結果(成功)を通知する(510)。
しかし、サーバマシン10(#B)にはこのコミットが反映されていないため、フェールオーバ後にサーバマシン10(#B)が、DBクライアント61からのロールバック要求を受けると(511)、サーバマシン10(#B)のDBサーバ13(#B)は、DBクライアント61が意図したチェックポイントよりも1つ前のチェックポイントまでロールバックされてしまう(512)。さらにその後、DBクライアント61からサーバマシン10(#B)に対してなされた要求(513)にしたがって、DBサーバ13(#B)にてデータベースの更新やコミットが行われると(514)、サーバマシン10(#A)のDBサーバ13(#A)もサーバマシン10(#B)のDBサーバ13(#B)も、本来あるべき姿とは異なる状態になってしまう。
このように、図23に示すような改良点を、ミラーリングディスク装置20を備えたクラスタシステムに適用した場合には、フェールオーバした直後にトランザクションの不整合が発生するという可能性を完全に回避できるものではないという問題は依然として解決されない。
本発明はこのような事情に鑑みてなされたものであり、複数のサーバマシンを備えてなるクラスタシステムにおいて、フェールオーバが発生した場合であっても、ディスクI/Oの性能劣化を抑えながら、トランザクションの整合を図ることが可能なクラスタシステム及びプログラムを提供することを目的とする。
上記の目的を達成するために、本発明では、以下のような手段を講じる。
すなわち、請求項1の発明は、複数のサーバマシンと、複数のサーバマシンに共有して接続された共有ディスク装置とから構成されたクラスタシステムであって、複数のサーバマシンは、複数のサーバマシン上でそれぞれ動作するアプリケーションと、複数のサーバマシン上でそれぞれ動作するクラスタソフトと、複数のサーバマシン上でそれぞれ動作するフィルタドライバと、複数のサーバマシン上でそれぞれ動作する有効期限通知デーモンとを備えている。また、共有ディスク装置は、各サーバマシンのデータをそれぞれ格納する各サーバ用データ領域と、各サーバマシンで共有する共有領域とを備え、共有領域は、各サーバマシンのそれぞれについて、共有ディスク装置へのアクセスの許可又は不許可が設定されたアクセス情報を管理するアクセス管理部を備えている。
また、有効期限通知デーモンは、アクセス管理部によって管理されているアクセス情報を定期的に参照し、自サーバマシンによるアクセスが許可されているのであれば、現在時間に所定時間を加えた有効期限を設定し、この有効期限を自サーバマシンのフィルタドライバに通知し、複数のサーバマシンに備えられた各クラスタソフトは、互いに定期的に通信して互いのサーバマシンの生存状態を確認し合うと共に、それぞれ稼動系と待機系との2種類の状態を持つ。
そして、クラスタソフトが稼動系になる際には、このクラスタソフトは、アクセス管理部に管理されたアクセス情報を、自サーバマシンのみがアクセスを許可されるように変更し、自サーバマシン側から自サーバマシンのサーバ用データ領域が見える状態にし、自サーバマシンに備えられたアプリケーションを起動させる。クラスタソフトが稼動系になった後は、稼動系のサーバマシンのフィルタドライバは、I/O入力を待ち、I/O入力の処理結果の一部あるいは全てが成功の場合、現在時間を確認し、現在時間が、有効期限通知デーモンから通知された有効期限内であれば処理結果をI/O入力側へ返し、有効期限内でなければI/O入力側へエラーを返す。待機系のサーバマシンのクラスタソフトが、稼動系のサーバマシンが生存していないと判定した場合には、待機系のサーバマシンのクラスタソフトは、アクセス管理部に管理されたアクセス情報を、自サーバマシンのみがアクセスを許可されるように変更し、所定時間待機した後に、自サーバマシン側から自サーバマシンのサーバ用データ領域が見える状態にするとともに、自サーバマシンに備えられたアプリケーションを起動させる。
請求項2の発明は、複数のサーバマシンと、複数のサーバマシンにそれぞれ接続された複数のミラーリングディスク装置と、複数のサーバマシンに共有して接続された共有装置とから構成されたクラスタシステムであって、複数のサーバマシンは、複数のサーバマシン上でそれぞれ動作するアプリケーションと、複数のサーバマシン上でそれぞれ動作するクラスタソフトと、複数のサーバマシン上でそれぞれ動作するフィルタドライバと、複数のサーバマシン上でそれぞれ動作する有効期限通知デーモンとを備え、共有装置は、各サーバマシンのそれぞれについて、各ミラーリングディスク装置へのアクセスの許可又は不許可が設定されたアクセス情報を管理するアクセス管理部と、各サーバマシンのそれぞれについて、各ミラーリングディスク装置へのミラーリングエラーの発生の有無を示すミラーリングエラー情報を管理するミラーリングエラー発生有無管理部とを備えている。
有効期限通知デーモンは、アクセス管理部によって管理されているアクセス情報を定期的に参照し、自サーバマシンによるアクセスが許可されているのであれば、現在時間に所定時間を加えた有効期限を設定し、この有効期限を自サーバマシンのフィルタドライバに通知する。また、複数のサーバマシンに備えられた各クラスタソフトは、互いに定期的に通信して互いのサーバマシンの生存状態を確認し合うと共に、それぞれ稼動系と待機系との2種類の状態を持つ。
そして、クラスタソフトが稼動系になる際には、このクラスタソフトは、アクセス管理部に管理されたアクセス情報を、自サーバマシンのみがアクセスを許可されるように変更し、自サーバマシン側から、自サーバマシンのミラーリングディスク装置が見える状態にし、自サーバマシンに備えられたアプリケーションを起動させる。クラスタソフトが稼動系になった後は、稼動系のサーバマシンのフィルタドライバは、I/O入力を待ち、I/O入力の処理を、各ミラーリングディスク装置に対して行わせ、各ミラーリングディスク装置による処理結果が同一の場合には、現在時間を確認し、現在時間が、有効期限通知デーモンから通知された有効期限内であれば処理結果をI/O入力側へ返し、有効期限内でなければI/O入力側へエラーを返し、処理結果が同一では無い場合には、ミラーリングエラー発生有無管理部に管理されたミラーリングエラー情報を、自サーバマシンについてミラーリングエラーが発生しているように変更する。待機系のサーバマシンのクラスタソフトが、稼動系のサーバマシンが生存していないと判定した場合には、待機系のサーバマシンのクラスタソフトは、アクセス管理部に管理されたアクセス情報を、自サーバマシンのみがアクセスを許可されるように変更し、所定時間待機した後に、ミラーリングエラー発生有無管理部に管理されたミラーリングエラー情報が、自サーバマシンについてミラーリングエラーが発生しているように設定されていないのであれば、自サーバマシン側から、自サーバマシンのミラーリングディスク装置が見える状態にするとともに、自サーバマシンに備えられたアプリケーションを起動させる。
請求項3の発明は、請求項1又は請求項2に記載のクラスタシステムにおいて、現在時間が、有効期限通知デーモンから通知された有効期限内であれば処理結果をI/O入力側へ返し、有効期限内でなければI/O入力側へエラーを返す代わりに、クラスタソフトの管理下にあるアプリケーションによってなされた処理結果についてのみ、現在時間を確認し、現在時間が、有効期限通知デーモンから通知された有効期限内であれば処理結果をI/O入力側へ返し、有効期限内でなければI/O入力側へエラーを返す。
本発明によれば、複数のサーバマシンを備えてなるクラスタシステムにおいて、フェールオーバが発生した場合であっても、ディスクI/Oの性能劣化を抑えながら、トランザクションの整合を図ることが可能なクラスタシステムを実現することができる。
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
なお、以下の各実施の形態の説明に用いる図中の符号は、図20乃至図24と同一部分については同一符号を付して示し、重複説明を省略する。
(第1の実施の形態)
図1は、第1の実施の形態に係るクラスタシステムの構成例を示す機能ブロック図である。
すなわち、本実施の形態に係るクラスタシステムは、複数のサーバマシン(ここでは、一例として2つのサーバマシン10(#A,#B)を示す)と、これらサーバマシン10(#A,#B)に接続された共有ディスク装置31とから構成されたクラスタシステムである。ここでは、仮に、初期状態として、サーバマシン10(#A)が稼動系、サーバマシン10(#B)が待機系であるとする。各サーバマシン10(#A,#B)はそれぞれ、各サーバマシン10(#A,#B)上でそれぞれ動作するアプリケーション11(#A,#B)、クラスタソフト12(#A,#B)、フィルタドライバ14(#A,#B)、ディスクドライバ15(#A,#B)、有効期限通知デーモン16(#A,#B)を備えている。フィルタドライバ14は、アプリケーション11とディスクドライバ15との間に介挿して設けられる。アプリケーション11は、主にサーバアプリケーションを想定しており、本実施の形態では、プロキシキャッシュサーバであるとする。
共有ディスク装置31は、各サーバマシン10(#A,#B)それぞれとFC(Fiber Channel)ケーブル51(#A,#B)で接続されており、更にサーバA用データ領域32(#A)、サーバB用データ領域32(#B)、及び共有領域33を持つ。これらは、それぞれを異なるLU(Logical Unit)でも、異なるパーティションでも、異なるファイルでも良い。
図2は、共有ディスク装置31の詳細構成例を示す概念図である。
図2に示すように共有領域33は、各サーバマシン10(#A,#B)のそれぞれについて、共有ディスク装置31へのアクセスの許可又は不許可が設定されたアクセス情報を管理するディスクアクセス権管理テーブル33aを保持している。図2に示すように、サーバAが「有」、サーバBが「無」と設定されている場合は、サーバマシン10(#A)のアクセスが許可され、サーバマシン10(#B)のアクセスが許可されていないことを示す。
ディスクアクセス権管理テーブル33aは、有効期限通知デーモン16が、定期的(例えば30秒毎)に参照する。そして、有効期限通知デーモン16は、自サーバマシン10によるアクセスが許可されているのであれば、現在時間に予め定めた所定時間(例えば、60秒)を加えた有効期限を設定し、この有効期限を自サーバマシン10のフィルタドライバ14に通知する。なお、有効期限通知デーモン16は、例えば図3に示すように、時刻変更の影響を受けないもの(ブート後の起動時間等)から現在時間を把握する。
また、クラスタソフト12(#A,#B)は、互いに定期的に通信し、互いのサーバマシン10の生存状態を確認し合うと共に、それぞれ稼動系と待機系との2種類の状態を持つ。以下の説明では、サーバマシン10(#A)が稼動系であり、サーバマシン(#B)が待機系であるものとする。したがって、クラスタソフト12(#A)は稼動系の状態であり、クラスタソフト12(#B)は待機系の状態となっている。
クラスタソフト12(#A)が稼動系になる際には、クラスタソフト12(#A)は、ディスクアクセス権管理テーブル33aの情報を、自サーバマシン10(#A)のみがアクセス許可されるように設定し、自サーバマシン10(#A)側からサーバ用データ領域32(#A)が見える状態にし、自サーバマシン10(#A)に備えられたアプリケーション11(#A)を起動させる。
このようにしてクラスタソフト12(#A)が稼動系になった後は、フィルタドライバ14(#A)は、例えば図21に示すようなクライアント60からのI/O入力を待ち、このI/O入力の処理結果の一部あるいは全てが成功の場合、現在時刻を確認し、現在時刻が、有効期限通知デーモン16(#A)から通知された有効期限内であれば、処理結果を例えばクライアント60のようなI/O入力側へ返し、有効期限内でなければI/O入力側へエラーを返す。このような現在時刻の確認は、フィルタドライバ14(#A)が処理結果をI/O入力側に返すたびに行う。
一方、待機系のサーバマシン10(#B)のクラスタソフト12(#B)が、稼動系のサーバマシン10(#A)が生存していないと判定した場合には、クラスタソフト12(#B)は、ディスクアクセス権管理テーブル33aに設定されている情報を、サーバマシン10(#B)のみがアクセス許可されるように変更し、予め定めた所定時間(例えば30秒)待機し、しかる後に、サーバマシン10(#B)側からサーバ用データ領域32(#B)が見える状態にするとともに、アプリケーション11(#B)を起動させる。
このように待機することにより、サーバマシン10(#B)がアクセス権を取得してから、即座にフェールオーバするのではなく、安全な時間帯に入ってからフェールオーバするようにしている。待機のための所定時間としては、任意に設定可能であるが、長くするほどフェールオーバに要する時間が長くなる。一方、短くするほどフェールオーバに要する時間は短くなるが、共有領域33へのアクセス頻度も高くなるので、例えば30秒のように1分以内が現実的である。
次に、以上のように構成した本実施の形態に係るクラスタシステムの動作について説明する。ただし、初期状態として、サーバマシン10(#A)とサーバマシン10(#B)との間ではクラスタソフト12(#A,#B)同士がハートビートを交換し、互いの生存が確認できており、サーバマシン10(#A,#B)ともに、共有領域33と各サーバ用データ領域32(#A,#B)は上位層から見えない(フィルタドライバ14がフェンスオフ)状態になっており、サーバマシン10(#A,#B)ともにアプリケーション11(#A,#B)は起動していないものとする。
まず、図4に示すフローチャートを用いて、サーバマシン10(#A)を稼動系に設定する場合におけるクラスタソフト12(#A)による処理の流れを説明する。
まず、ユーザ操作により、サーバマシン10(#A)を稼動系にせよとの通知が、サーバマシン10(#A)のクラスタソフト12(#A)に届く(S1)。次に、クラスタソフト12(#A)によって、サーバマシン10(#A)にアクセス権が与えられるようにディスクアクセス権管理テーブル33aが設定される(S2)。すると、クラスタソフト12(#A)によって、フィルタドライバ14(#A)に稼動系となったことが通知される(S3)。その後、サーバマシン10(#A)のフィルタドライバ14(#A)によって、上位層からサーバA用データ領域32(#A)が見える状態にされる(S4)。そして、サーバマシン10(#A)のクラスタソフト12(#A)によって、有効期限通知デーモン16(#A)が起動され(S5)、更にアプリケーション11(#A)が起動される(S6)。
次に、図5のフローチャートと、図6に示す概念図とを用いて、サーバマシン10(#A)を稼動系に設定した後のフィルタドライバ14(#A)による処理の流れを説明する。
まず、サーバマシン10(#A)のフィルタドライバ14(#A)が、例えば図21に示すクライアント60のような上位からのI/O入力を待つ(S11)。そして、I/O入力がなされ、なされたI/O入力が有効期限の通知である場合(S12:Yes)には、ステップS13に進み、有効期限の通知でない場合(S12:No)には、ステップS14に進む。
ステップS13では、通知された有効期限に有効期間を更新した後に、ステップS24の処理に進む。
ステップS14では、ステップS11でなされたI/O入力がサーバA用データ領域32(#A)へのreadであればステップS15へ、writeであればステップS16へ、それ以外であればステップS22へそれぞれ進む。
そして、ステップS15ではreadが、ステップS16ではwriteがそれぞれ実行され、ステップS17の処理に進む。
ステップS17では、I/Oが部分的に又は全部が成功した場合にはステップS18の処理に進み、そうでない場合にはステップS20の処理に進む。
ステップS18では、現在の時刻が取得される。そして、ステップS19では、有効期限通知デーモン16(#A)から有効期限が通知され、ステップS18で取得した現在の時刻が、有効期限内であるか否かが判定される。そして、有効期限内である場合には、I/Oの処理結果がそのまま上位へ返され(S20)た後に、ステップS24の処理に進む。
一方、ステップS19において有効期限を過ぎていると判定された場合には、I/O処理失敗のエラーが上位へ返され(S21)た後に、ステップS24の処理に進む。
ステップS22では、フィルタドライバ14(#A)からディスクドライバ15(#A)に処理がそのまま渡され、ステップS23において、ディスクドライバ15(#A)からの返り値がそのまま上位に返された後に、ステップS24の処理に進む。
そして、ステップS24では、OSが終了するのであれば処理が終了し、そうでなければステップS11の処理に戻る。
次に、図7のフローチャートと、図6に示す概念図とを用いて、サーバマシン10(#A)を稼動系に設定した後の有効期限通知デーモン16(#A)による処理の流れを説明する。
有効期限通知デーモン16(#A)は、例えば30秒毎のように、ディスクアクセス権管理テーブル33aを定期的に参照する(S31)。そして、サーバマシン10(#A)にアクセス権が与えられていることを確認すると(S32)、現在時刻を取得し(S33)、現在時刻に予め定めた所定時間(例えば60秒)を加えることによって有効期限を設定し(S34)、この有効期限をフィルタドライバ14(#A)に通知し(S35)、ステップS36の処理に進む。また、ステップS32において、アクセス権が与えられていない場合もステップS36の処理に進む。なお、ステップS35の処理は、図5におけるステップS19に対応する。
ステップS36では、例えば30秒間スリープした後、OSが終了しなければステップS31の処理に戻り、OSが終了するのであれば、この処理も終了する。
次に、図8に示すフローチャートと、図9に示す概念図とを用いて、サーバマシン10(#B)のクラスタソフト12(#B)がハートビート切れを検出し、フェールオーバするときのサーバマシン10(#B)の処理の流れを説明する。
まず、サーバマシン10(#B)のクラスタソフト12(#B)がハートビートa切れを検出する(S41)と、クラスタソフト12(#B)によって、サーバマシン10(#B)にのみアクセス権が与えられるようにディスクアクセス権管理テーブル33aが設定される(S42)。
次に、クラスタソフト12(#B)は、予め定めた所定時間(例えば、60秒)スリープした(S43)後に、サーバA用データ領域32(#A)の全データをサーバB用データ領域32(#B)にコピーし(S44)、更に有効期限通知デーモン16(#B)を起動し(S45)、サーバマシン10(#B)が稼動系になったことをフィルタドライバ14(#B)に通知する(S46)。
その後、サーバマシン10(#B)のフィルタドライバ14(#B)によって、上位層からサーバB用データ領域32(#B)が見える状態にされる(S47)。そして、サーバマシン10(#B)のクラスタソフト12(#B)によってアプリケーション11(#B)が起動される(S48)。
上述したように、本実施の形態に係るクラスタシステムにおいては、上記のような作用により、待機系のサーバマシン10(#B)のクラスタソフト12(#B)が、稼動系のサーバマシン10(#A)が生存していないと判定した場合には、サーバマシン10(#B)のみが共有ディスク装置31へのアクセスが許可されるようにすることができる。
これにより、フェールオーバが発生した場合であっても、複数のサーバマシン10(#A,#B)の重複書き込みを回避することができ、トランザクションの整合を図ることが可能となる。
また、フェールオーバは、サーバマシン10(#B)がアクセス権を取得した後に直ちに実行するのではなく、予め定めた所定時間(例えば30秒)待機し、安全な時間帯に入ってからフェールオーバするようにしている。
以上のことから、本実施の形態に係るクラスタシステムは、複数のサーバマシンを備えてなるクラスタシステムにおいて、フェールオーバが発生した場合であっても、ディスクI/Oの性能劣化を抑えながら、かつトランザクションの整合を図ることが可能となる。
(第2の実施の形態)
図10は、第2の実施の形態に係るクラスタシステムの構成例を示す機能ブロック図である。本実施の形態に係るクラスタシステムは、第1の実施の形態に係るクラスタシステムの変形例であるので、第1の実施の形態と同一部位については同一符番で示して重複説明を省略し、異なる点について説明する。
すなわち、本実施の形態に係るクラスタシステムは、第1の実施の形態に係るクラスタシステムの概念を、ミラーリングディスク装置20を備えたクラスタシステムに適用したものである。
図10に示すような本実施の形態に係るクラスタシステムの、図1に示すような第1の実施の形態に係るクラスタシステムとの相違点を説明すると、図10に示すようなミラーリングディスク装置20を備えたクラスタシステムの場合、図1に示すようなクラスタシステムとは異なり、共有ディスク装置31を備えていない代わりに、サーバマシン10(#A)、及びサーバマシン10(#B)のにはそれぞれミラーリングディスク装置20(#A),20(#B)が接続されている。また、共有領域33を保持するための共通コンピュータ70を備えている。共有領域33は、第1の実施の形態に係るクラスタシステムと同様にディスクアクセス権管理テーブル33aを保持しているが、更にそれに加えて、各サーバマシン10(#A),10(#B)のそれぞれについて、各ミラーリングディスク装置20(#A),(#B)へのミラーリングエラーの発生の有無を示すミラーリングエラー情報を管理するミラーリングエラー発生有無管理テーブル33bをも保持している。また、各サーバマシン10(#A),10(#B)はそれぞれ、ミラーリングエラー発生有無管理テーブル33bの参照及び設定を行うミラーリングデーモン17(#A),17(#B)を備えている。
クラスタソフト12(#A)が稼動系になった後は、第1の実施の形態と同様に、フィルタドライバ14(#A)が、例えばクライアント60からのI/O入力を待ち、このI/O入力の処理結果の一部あるいは全てが成功の場合、処理結果を、I/O入力側へ返すたびに現在時間を確認し、現在時間が、有効期限通知デーモン16(#A)から通知された有効期限内であれば処理結果をI/O入力側へ返し、有効期限内でなければI/O入力側へエラーを返す。
しかしながら、処理結果が同一では無い場合に、本実施の形態では、ミラーリングデーモン17(#A)が、ミラーリングエラー発生有無管理テーブル33bに管理されたミラーリングエラー情報を、サーバマシン10(#A)についてミラーリングエラーが発生しているように変更する。
そして、待機系のサーバマシン10(#B)のクラスタソフト12(#B)が、稼動系のサーバマシン10(#A)が生存していないと判定した場合には、クラスタソフト12(#B)は、ディスクアクセス権管理テーブル33aに設定されている情報を、サーバマシン10(#B)のみがアクセス許可されるように変更し、予め定めた所定時間(例えば30秒)待機した後に、ミラーリングエラー発生有無管理テーブル33bに管理されたミラーリングエラー情報が、サーバマシン10(#B)についてミラーリングエラーが発生しているように設定されていないのであれば、サーバマシン10(#B)側から、ミラーリングディスク装置20(#B)が見える状態にするとともに、アプリケーション11(#B)を起動させる。
次に、以上のように構成した本実施の形態に係るクラスタシステムの動作について説明する。ただし、初期状態として、サーバマシン10(#A)とサーバマシン10(#B)との間ではクラスタソフト12(#A,#B)同士がハートビートを交換し、互いの生存が確認できており、サーバマシン10(#A,#B)ともに、共有領域33と各ミラーリングディスク装置20(#A,#B)は上位層から見えない(フィルタドライバ14がフェンスオフ。ただし、ミラーリングデーモン17のみアクセス可能)状態になっており、サーバマシン10(#A,#B)ともにアプリケーション11(#A,#B)は起動しておらず、ミラーリングデーモン17は起動しているものとする。
まず、図11に示すフローチャートを用いて、サーバマシン10(#A)を稼動系に設定する場合におけるクラスタソフト12(#A)による処理の流れを説明する。
まず、ユーザ操作により、サーバマシン10(#A)を稼動系にせよとの通知が、サーバマシン10(#A)のクラスタソフト12(#A)に届く(S51)。次に、クラスタソフト12(#A)によって、サーバマシン10(#A)にアクセス権が与えられるようにディスクアクセス権管理テーブル33aが設定される(S52)。更に、クラスタソフト12(#A)によって、ミラーリングエラー発生有無管理テーブル33bに管理されたミラーリングエラー情報が、サーバマシン10(#A)についてミラーリングエラーが発生していない(「ミラーリングエラー無」)ように設定される(S53)。
すると、クラスタソフト12(#A)がミラーリングデーモン17(#A)に稼動系となったことが通知する(S54)。そして、サーバマシン10(#A)のクラスタソフト12(#A)が有効期限通知デーモン16(#A)を起動し(S55)、クラスタソフト12(#A)によって、フィルタドライバ14(#A)に稼動系となったことを通知する(S56)。
その後、サーバマシン10(#A)のフィルタドライバ14(#A)が上位層からミラーリングディスク装置20(#A)が見える状態とする(S57)。次に、アプリケーション11(#A)が起動される(S58)。
次に、図12のフローチャートと、図13に示す概念図とを用いて、サーバマシン10(#A)を稼動系に設定した後のフィルタドライバ14(#A)による処理の流れを説明する。
まず、サーバマシン10(#A)のフィルタドライバ14(#A)が、例えば図21に示すクライアント60のような上位からのI/O入力を待つ(S61)。そして、I/O入力が有効期限の通知である場合(S62:Yes)には、ステップS63に進み、有効期限の通知でない場合(S62:No)には、ステップS64に進む。
ステップS63では、有効期限を通知された有効期限に更新した後に、ステップS78の処理に進む。
ステップS64では、ステップS61でなされたI/O入力がミラーリングディスク装置20(#A)へのreadであればステップS65へ、writeであればステップS66へ、それ以外であればステップS76へそれぞれ進む。
そして、ステップS65ではreadが実行され、ステップS71の処理に進み、ステップS66ではwriteが実行され、ステップS67の処理に進む。
ステップS67では、ミラーリングデーモン17(#A)にミラーリングを依頼して待機し、ステップS68でミラーリングが実行される。そして、ミラーリングが成功したならばステップS71の処理に進み、成功しなかったのならステップS70においてミラーリングデーモン17(#A)によって、ミラーリングエラー発生有無管理テーブル33bの設定が、サーバマシン10(#A)によるミラーリングエラー発生が有るように変更され、ステップS71の処理に進む。
ステップS71では、I/Oが部分的に又は全部が成功した場合にはステップS72の処理に進み、そうでない場合にはステップS74の処理に進む。
ステップS72では、現在時刻が取得される。そして、ステップS73では、有効期限通知デーモン16(#A)から有効期限が通知され、ステップS72で取得した現在の時刻が、有効期限内であるか否かが判定される。そして、有効期限内である場合には、I/Oの処理結果がそのまま上位へ返され(S74)た後に、ステップS78の処理に進む。
一方、ステップS73において有効期限を過ぎていると判定された場合には、I/O処理失敗のエラーが上位へ返され(S75)た後に、ステップS78の処理に進む。
ステップS76では、フィルタドライバ14(#A)からディスクドライバ15(#A)に処理がそのまま渡され、ステップS77において、ディスクドライバ15(#A)からの返り値がそのまま上位に返された後に、ステップS78の処理に進む。
そして、ステップS78では、OSが終了するのであれば処理が終了し、そうでなければステップS61の処理に戻る。
また、サーバマシン10(#A)を稼動系に設定した後の有効期限通知デーモン16(#A)による処理の流れは、図7のフローチャートに示す通りであるので、説明を省略する。
次に、図14に示すフローチャートと、図15に示す概念図とを用いて、サーバマシン10(#B)のクラスタソフト12(#B)がハートビート切れを検出し、フェールオーバするときのサーバマシン10(#B)の処理の流れを説明する。
まず、サーバマシン10(#B)のクラスタソフト12(#B)がハートビートa切れを検出する(S81)と、クラスタソフト12(#B)によって、サーバマシン10(#B)にのみアクセス権が与えられるようにディスクアクセス権管理テーブル33aが設定される(S82)。
次に、クラスタソフト12(#B)は、予め定めた所定時間(例えば、60秒)スリープする(S83)。
一方、ステップS84において、ミラーリングエラー発生有無管理テーブル33bにおいて、サーバマシン10(#A)がミラーリングエラー発生有りと設定されている場合(S84:Yes)には、ステップS85の処理に進み、そうでない場合(S84:No)には、ステップS91の処理に進む。
ステップS85では、クラスタソフト12(#B)によって、ミラーリングエラー発生有無管理テーブル33bにおいて、サーバマシン10(#B)がミラーリングエラー発生無しと設定され、次に、ステップS86では、サーバマシン10(#B)のクラスタソフト12(#B)によって、ミラーリングデーモン17(#B)に、稼動系になったことが通知される。これによって、ミラーリングデータの受信が停止される。
更に有効期限通知デーモン16(#B)を起動し(S87)、サーバマシン10(#B)が稼動系になったことをフィルタドライバ14(#B)に通知する(S88)。
その後、サーバマシン10(#B)のフィルタドライバ14(#B)によって、上位層からミラーリングディスク装置20(#B)が見える状態にされる(S89)。そして、サーバマシン10(#B)のクラスタソフト12(#B)によってアプリケーション11(#B)が起動され(S90)、処理を終了する。
ステップS91では、クラスタソフト12(#B)が、ディスクアクセス権管理テーブル33aにおいて、サーバマシン10(#B)のアクセス権が「有」から「無」に変更され(フェールオーバが断念され)、処理を終了する。
上述したように、本実施の形態に係るクラスタシステムにおいては、上記のような作用により、ミラーリングに失敗している場合にはフェールオーバしないようにすることができる。また、フェールオーバした後には、元稼動系であるサーバマシン10(#A)側でI/Oが成功しないようにすることができる。これにより、トランザクションの不整合の発生を回避することが可能となる。
また、ディスクI/O(readやwrite)のたびにミラーリングディスク装置20へのI/Oを発生させることがないので、ディスクI/Oの性能劣化を抑えることが可能となる。
以上のことから、本実施の形態に係るクラスタシステムは、複数のサーバマシンを備えてなるクラスタシステムにおいて、フェールオーバが発生した場合であっても、ディスクI/Oの性能劣化を抑えながら、かつトランザクションの整合を図ることが可能となる。
(第3の実施の形態)
本実施の形態に係るクラスタシステムは、第1及び第2の実施の形態に係るクラスタシステムの変形例であり、図16に示すように、フィルタドライバ14に代えて、ジャケットライブラリ(以降、「ジャケットDLL」と称する)18と、I/O処理用ライブラリ(以降、「I/0処理用DLL」と称する)19とを備えた構成としている点のみが異なる。したがって、ここでは、第1及び第2の実施の形態に係るクラスタシステムと異なる点について説明する。
すなわち、第1及び第2の実施の形態に係るクラスタシステムでは、フィルタドライバ14が有効期限を判定していたが、本実施の形態では、フィルタドライバ14ではなく、上位のライブラリが行うようにしている。この際、本来のI/O処理を行うためのI/O処理用DLL19と、アプリケーション11との間に、I/Oをフックして独自の処理を行うジャケットDLL18を備えている。ジャケットDLLの詳細については、特開平11−110194号公報を参照されたい。このジャケットDLL 18は、アプリケーション11から見ると、I/O処理用DLL19であるかのように見えるものであり、図17に示すように、アプリケーション11のプロセスハンドル管理テーブル18aを持ち、管理しているアプリケーション11(図17に示すプロセス1、プロセス2)に対してのみ有効期限による判定ルーチンを通す。
なお、以下では、図16に示すように、代表的に、第1の実施の形態に示すような共有ディスク装置31を備えた構成に適用した場合について説明するが、本実施の形態のようにフィルタドライバ14の代わりにジャケットDLL18と、I/O処理用DLL19とを備えた構成は、第2の実施の形態に示すようなミラーリングディスク装置20を備えた構成に適用することも可能であり、第2の実施の形態に示すようなミラーリングディスク装置20を備えた構成に適用したものも本発明の一実施例として解される。
次に、図18のフローチャートと、図19に示す概念図とを用いて、サーバマシン10(#A)を稼動系に設定した後のフィルタドライバ14(#A)による処理の流れを説明する。なお、サーバマシン10(#A)を稼動系に設定する場合におけるクラスタソフト12(#A)による処理の流れ、サーバマシン10(#B)のクラスタソフト12(#B)がハートビート切れを検出し、フェールオーバするときのサーバマシン10(#B)の処理の流れは、第1及び第2の実施の形態と同様である。また、サーバマシン10(#A)を稼動系に設定した後の有効期限通知デーモン16(#A)による処理については、有効期限をフィルタドライバ14に通知する代わりに、ジャケットDLL18に通知する点のみが異なる。
すなわち、本実施の形態に係るクラスタシステムでは、まず、サーバマシン10(#A)のジャケットDLL19(#A)が、例えば図21に示すクライアント60のような上位からのI/O入力を待つ(S101)。I/O入力が有効期限の通知である場合(S102:Yes)には、ステップS103に進み、有効期限の通知でない場合(S102:No)には、ステップS104に進む。
ステップS103では、通知された有効期限に更新された後に、ステップS115の処理に進む。
ステップS104では、ステップS101でなされたI/O入力がサーバA用データ領域32(#A)へのreadであればステップS105へ、writeであればステップS106へ、それ以外であればステップS113へそれぞれ進む。
そして、ステップS105ではreadが、ステップS106ではwriteがそれぞれ実行され、ステップS107の処理に進む。
ステップS107では、ジャケットDLL18が、プロセスハンドル管理テーブル18aを参照し、read又はwriteを実行するアプリケーションが、プロセスハンドル管理テーブル18aに書き込まれたアプリケーション(クラスタソフト12によって管理されたアプリケーション)である場合にはステップS108の処理に進み、そうでない場合にはステップS111の処理に進む。
ステップS108では、I/Oが部分的に又は全部が成功した場合にはステップS109の処理に進み、そうでない場合にはステップS111の処理に進む。
ステップS109では、現在の時間が取得される。そして、ステップS110では、有効期限通知デーモン16(#A)から有効期限が通知され、ステップS109で取得した現在の時間が、有効期限内であるか否かが判定される。そして、有効期限内である場合には、I/Oの処理結果がそのまま上位へ返され(S111)た後に、ステップS115の処理に進む。
一方、ステップS110において有効期限を過ぎていると判定された場合には、ジャケットDLL18が、I/O処理失敗のエラーを上位へ返した(S112)後に、ステップS115の処理に進む。
ステップS113では、I/O処理用DLL19(#A)からディスクドライバ15(#A)に処理がそのまま渡され、ステップS114において、ディスクドライバ15(#A)からの返り値がそのまま上位に返された後に、ステップS115の処理に進む。
そして、ステップS115では、OSが終了するのであれば処理が終了し、そうでなければステップS101の処理に戻る。
上述したように、本実施の形態に係るクラスタシステムにおいては、上記のような作用により、I/O処理結果を上位へ返す場合、有効期限を使用した判定処理を無条件に行うのではなく、クラスタソフト12の管理下にあるアプリケーションのI/Oに限り行うことができ、クラスタソフト12の管理下にないアプリケーションとディスクデータとを共有することにより、フェールオーバが発生した場合であっても、ディスクI/Oの性能劣化を抑えながら、トランザクションの整合を図ることが可能となる。
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
第1の実施の形態に係るクラスタシステムの構成例を示す機能ブロック図。 共有ディスク装置の詳細構成例を示す概念図。 現在時刻を取得する手段の例を示す図。 第1の実施の形態に係るクラスタシステムにおいて、サーバマシンを稼動系に設定する場合におけるクラスタソフトによる処理の流れを示すフローチャート。 第1の実施の形態に係るクラスタシステムにおいて、サーバマシンを稼動系に設定した後のフィルタドライバによる処理の流れを示すフローチャート。 第1の実施の形態に係るクラスタシステムにおいて、フィルタドライバによる処理の流れを示す概念図。 第1の実施の形態に係るクラスタシステムにおいて、サーバマシンを稼動系に設定した後の有効期限通知デーモンによる処理の流れを示すフローチャート。 第1の実施の形態に係るクラスタシステムにおいて、ハートビート切れを検出し、フェールオーバするときのサーバマシンの処理の流れを示すフローチャート。 第1の実施の形態に係るクラスタシステムにおいて、フェールオーバ時におけるサーバマシンによる処理の流れを示す概念図。 第2の実施の形態に係るクラスタシステムの構成例を示す機能ブロック図。 第2の実施の形態に係るクラスタシステムにおいて、サーバマシンを稼動系に設定する場合におけるクラスタソフトによる処理の流れを示すフローチャート。 第2の実施の形態に係るクラスタシステムにおいて、サーバマシンを稼動系に設定した後のフィルタドライバによる処理の流れを示すフローチャート。 第2の実施の形態に係るクラスタシステムにおいて、フィルタドライバによる処理の流れを示す概念図。 第2の実施の形態に係るクラスタシステムにおいて、ハートビート切れを検出し、フェールオーバするときのサーバマシンの処理の流れを示すフローチャート。 第2の実施の形態に係るクラスタシステムにおいて、フェールオーバ時におけるサーバマシンによる処理の流れを示す概念図。 第3の実施の形態に係るクラスタシステムの構成例を示す機能ブロック図。 プロセスハンドル管理テーブルの一例を示す図。 第3の実施の形態に係るクラスタシステムにおいて、サーバマシンを稼動系に設定する場合におけるジャケットDLLによる処理の流れを示すフローチャート。 第3の実施の形態に係るクラスタシステムにおいて、ジャケットDLLによる処理の流れを示す概念図。 従来技術のクラスタシステムによるフェールオーバを説明するための概念図。 従来技術のクラスタシステムによるフェールオーバ時に生じるデータ破壊を説明するための概念図(ミラーリングディスク装置使用時)。 従来技術のクラスタシステムによるフェールオーバ時に生じるデータ破壊を説明するための概念図(共有ディスク装置使用時)。 従来技術のクラスタシステムの改良構成例とそれによる処理の流れを示す図(共有ディスク装置使用時)。 従来技術のクラスタシステムの改良構成例とそれによる処理の流れを示す図(ミラーリングディスク装置)。
符号の説明
a…ハートビート、b…フェールオーバ、10…サーバマシン、11…アプリケーション、12…クラスタソフト、13…データベースサーバ、14…フィルタドライバ、15…ディスクドライバ、16…有効期限通知デーモン、17…ミラーリングデーモン、18…ジャケットDLL、18a…プロセスハンドル管理テーブル、19…I/O処理用DLL、20…ミラーリングディスク装置、31…共有ディスク装置、32…サーバA用データ領域、32…サーバB用データ領域、33…共有領域、33a…ディスクアクセス権管理テーブル、33b…ミラーリングエラー発生有無管理テーブル、50,52…通信路、51…FCケーブル、60…クライアント、61…DBクライアント、70…共通コンピュータ

Claims (3)

  1. 複数のサーバマシンと、前記複数のサーバマシンに共有して接続された共有ディスク装置とから構成されたクラスタシステムであって、
    前記複数のサーバマシンは、前記複数のサーバマシン上でそれぞれ動作するアプリケーションと、前記複数のサーバマシン上でそれぞれ動作するクラスタソフトと、前記複数のサーバマシン上でそれぞれ動作するフィルタドライバと、前記複数のサーバマシン上でそれぞれ動作する有効期限通知デーモンとを備え、
    前記共有ディスク装置は、前記各サーバマシンのデータをそれぞれ格納する各サーバ用データ領域と、前記各サーバマシンで共有する共有領域とを備え、
    前記共有領域は、前記各サーバマシンのそれぞれについて、前記共有ディスク装置へのアクセスの許可又は不許可が設定されたアクセス情報を管理するアクセス管理部を備え、
    前記有効期限通知デーモンは、前記アクセス管理部によって管理されているアクセス情報を定期的に参照し、自サーバマシンによるアクセスが許可されているのであれば、現在時間に所定時間を加えた有効期限を設定し、この有効期限を自サーバマシンのフィルタドライバに通知し、
    前記複数のサーバマシンに備えられた各クラスタソフトは、互いに定期的に通信して互いのサーバマシンの生存状態を確認し合うと共に、それぞれ稼動系と待機系との2種類の状態を持ち、
    前記クラスタソフトが稼動系になる際には、このクラスタソフトは、前記アクセス管理部に管理されたアクセス情報を、自サーバマシンのみがアクセスを許可されるように変更し、前記自サーバマシン側から前記自サーバマシンのサーバ用データ領域が見える状態にし、前記自サーバマシンに備えられたアプリケーションを起動させ、
    前記クラスタソフトが稼動系になった後は、前記稼動系のサーバマシンのフィルタドライバは、I/O入力を待ち、前記I/O入力の処理結果の一部あるいは全てが成功の場合、現在時間を確認し、前記現在時間が、前記有効期限通知デーモンから通知された有効期限内であれば前記処理結果を前記I/O入力側へ返し、有効期限内でなければ前記I/O入力側へエラーを返し、
    前記待機系のサーバマシンのクラスタソフトが、前記稼動系のサーバマシンが生存していないと判定した場合には、前記待機系のサーバマシンのクラスタソフトは、前記アクセス管理部に管理されたアクセス情報を、自サーバマシンのみがアクセスを許可されるように変更し、所定時間待機した後に、前記自サーバマシン側から前記自サーバマシンのサーバ用データ領域が見える状態にするとともに、前記自サーバマシンに備えられたアプリケーションを起動させる
    ようにしたクラスタシステム。
  2. 複数のサーバマシンと、前記複数のサーバマシンにそれぞれ接続された複数のミラーリングディスク装置と、前記複数のサーバマシンに共有して接続された共有装置とから構成されたクラスタシステムであって、
    前記複数のサーバマシンは、前記複数のサーバマシン上でそれぞれ動作するアプリケーションと、前記複数のサーバマシン上でそれぞれ動作するクラスタソフトと、前記複数のサーバマシン上でそれぞれ動作するフィルタドライバと、前記複数のサーバマシン上でそれぞれ動作する有効期限通知デーモンとを備え、
    前記共有装置は、前記各サーバマシンのそれぞれについて、前記各ミラーリングディスク装置へのアクセスの許可又は不許可が設定されたアクセス情報を管理するアクセス管理部と、前記各サーバマシンのそれぞれについて、前記各ミラーリングディスク装置へのミラーリングエラーの発生の有無を示すミラーリングエラー情報を管理するミラーリングエラー発生有無管理部とを備え、
    前記有効期限通知デーモンは、前記アクセス管理部によって管理されているアクセス情報を定期的に参照し、自サーバマシンによるアクセスが許可されているのであれば、現在時間に所定時間を加えた有効期限を設定し、この有効期限を自サーバマシンのフィルタドライバに通知し、
    前記複数のサーバマシンに備えられた各クラスタソフトは、互いに定期的に通信して互いのサーバマシンの生存状態を確認し合うと共に、それぞれ稼動系と待機系との2種類の状態を持ち、
    前記クラスタソフトが稼動系になる際には、このクラスタソフトは、前記アクセス管理部に管理されたアクセス情報を、自サーバマシンのみがアクセスを許可されるように変更し、前記自サーバマシン側から、前記自サーバマシンのミラーリングディスク装置が見える状態にし、自サーバマシンに備えられたアプリケーションを起動させ、
    前記クラスタソフトが稼動系になった後は、前記稼動系のサーバマシンのフィルタドライバは、I/O入力を待ち、前記I/O入力の処理を、前記各ミラーリングディスク装置に対して行わせ、前記各ミラーリングディスク装置による処理結果が同一の場合には、現在時間を確認し、前記現在時間が、前記有効期限通知デーモンから通知された有効期限内であれば前記処理結果を前記I/O入力側へ返し、有効期限内でなければ前記I/O入力側へエラーを返し、前記処理結果が同一では無い場合には、前記ミラーリングエラー発生有無管理部に管理されたミラーリングエラー情報を、自サーバマシンについてミラーリングエラーが発生しているように変更し、
    前記待機系のサーバマシンのクラスタソフトが、前記稼動系のサーバマシンが生存していないと判定した場合には、前記待機系のサーバマシンのクラスタソフトは、前記アクセス管理部に管理されたアクセス情報を、自サーバマシンのみがアクセスを許可されるように変更し、所定時間待機した後に、前記ミラーリングエラー発生有無管理部に管理されたミラーリングエラー情報が、自サーバマシンについてミラーリングエラーが発生しているように設定されていないのであれば、前記自サーバマシン側から、前記自サーバマシンのミラーリングディスク装置が見える状態にするとともに、前記自サーバマシンに備えられたアプリケーションを起動させる
    ようにしたクラスタシステム。
  3. 請求項1又は請求項2に記載のクラスタシステムにおいて、
    前記現在時間が、前記有効期限通知デーモンから通知された有効期限内であれば前記処理結果を前記I/O入力側へ返し、有効期限内でなければ前記I/O入力側へエラーを返す代わりに、前記クラスタソフトの管理下にあるアプリケーションによってなされた処理結果についてのみ、現在時間を確認し、前記現在時間が、前記有効期限通知デーモンから通知された有効期限内であれば前記処理結果を前記I/O入力側へ返し、有効期限内でなければ前記I/O入力側へエラーを返すようにしたクラスタシステム。
JP2007081624A 2007-03-27 2007-03-27 クラスタシステム Active JP4874847B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007081624A JP4874847B2 (ja) 2007-03-27 2007-03-27 クラスタシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007081624A JP4874847B2 (ja) 2007-03-27 2007-03-27 クラスタシステム

Publications (2)

Publication Number Publication Date
JP2008242742A true JP2008242742A (ja) 2008-10-09
JP4874847B2 JP4874847B2 (ja) 2012-02-15

Family

ID=39914023

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007081624A Active JP4874847B2 (ja) 2007-03-27 2007-03-27 クラスタシステム

Country Status (1)

Country Link
JP (1) JP4874847B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063306A1 (ja) * 2010-11-08 2012-05-18 三菱電機株式会社 仮想計算機制御装置、仮想計算機制御システム、仮想計算機制御装置の仮想計算機制御方法および仮想計算機制御プログラム
US9262289B2 (en) 2013-10-11 2016-02-16 Hitachi, Ltd. Storage apparatus and failover method

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02103619A (ja) * 1988-10-12 1990-04-16 Mitsubishi Electric Corp アダプタ装置
JPH08329027A (ja) * 1995-06-01 1996-12-13 Nec Corp 中央処理二重化システムにおけるクロスコールディスクアクセス方法とその方式
JPH1083257A (ja) * 1996-09-09 1998-03-31 Mitsubishi Electric Corp データストレージシステム及びデータストレージ管理方法
JP2002123406A (ja) * 2000-10-17 2002-04-26 Pfu Ltd 高信頼性システム
JP2003085026A (ja) * 2001-09-14 2003-03-20 Nec Corp 共有リソース排他制御方式および方法
JP2005128781A (ja) * 2003-10-23 2005-05-19 Hitachi Ltd 系切り替え方法及び情報処理システム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02103619A (ja) * 1988-10-12 1990-04-16 Mitsubishi Electric Corp アダプタ装置
JPH08329027A (ja) * 1995-06-01 1996-12-13 Nec Corp 中央処理二重化システムにおけるクロスコールディスクアクセス方法とその方式
JPH1083257A (ja) * 1996-09-09 1998-03-31 Mitsubishi Electric Corp データストレージシステム及びデータストレージ管理方法
JP2002123406A (ja) * 2000-10-17 2002-04-26 Pfu Ltd 高信頼性システム
JP2003085026A (ja) * 2001-09-14 2003-03-20 Nec Corp 共有リソース排他制御方式および方法
JP2005128781A (ja) * 2003-10-23 2005-05-19 Hitachi Ltd 系切り替え方法及び情報処理システム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063306A1 (ja) * 2010-11-08 2012-05-18 三菱電機株式会社 仮想計算機制御装置、仮想計算機制御システム、仮想計算機制御装置の仮想計算機制御方法および仮想計算機制御プログラム
JP5342699B2 (ja) * 2010-11-08 2013-11-13 三菱電機株式会社 仮想計算機制御装置、仮想計算機制御システム、仮想計算機制御装置の仮想計算機制御方法および仮想計算機制御プログラム
US9262289B2 (en) 2013-10-11 2016-02-16 Hitachi, Ltd. Storage apparatus and failover method

Also Published As

Publication number Publication date
JP4874847B2 (ja) 2012-02-15

Similar Documents

Publication Publication Date Title
US6360331B2 (en) Method and system for transparently failing over application configuration information in a server cluster
US10360113B2 (en) Transaction recovery in a transaction processing computer system employing multiple transaction managers
US7437386B2 (en) System and method for a multi-node environment with shared storage
US7370248B2 (en) In-service raid mirror reconfiguring
US7840662B1 (en) Dynamically managing a network cluster
US8904117B1 (en) Non-shared write-back caches in a cluster environment
US8533171B2 (en) Method and system for restarting file lock services at an adoptive node during a network filesystem server migration or failover
US11650891B2 (en) Preventing non-detectable data loss during site switchover
US20070220323A1 (en) System and method for highly available data processing in cluster system
JP2004342079A (ja) コンピュータ・クラスタを操作するための方法
JP2005196683A (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
JP5183542B2 (ja) 計算機システム及び設定管理方法
JP2002229837A (ja) 共有ディスク・パラレル・データ・ファイル内のデータに対するアクセスを制御する方法
JP2012173996A (ja) クラスタシステム、クラスタ管理方法、およびクラスタ管理プログラム
JP4874847B2 (ja) クラスタシステム
JP7104016B2 (ja) クライアント側のキャッシュによる透過的なデータベースセッションの回復
US11669516B2 (en) Fault tolerance for transaction mirroring
JP2009265973A (ja) データ同期システム、障害復旧方法、及び、プログラム
JP4693867B2 (ja) 計算機システム
JP2019082897A (ja) 情報処理装置、情報処理システム及びプログラム
US10656867B2 (en) Computer system, data management method, and data management program
JP2012022379A (ja) 分散トランザクション処理システム、装置、方法およびプログラム
JP2001350777A (ja) 分散データベースシステム
US20210157482A1 (en) Information processing apparatus, information processing system, and recording medium storing program
CN117632525A (zh) 用于利用分布式锁管理器进行恢复的***和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091016

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111012

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: 20111101

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: 20111124

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

Free format text: PAYMENT UNTIL: 20141202

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4874847

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350