(57)【特許請求の範囲】
【請求項１】
クライアントからの処理要求に対して、負荷分散により処理担当となるクラスタが決定される負荷分散サーバシステムにおいて、
１以上のストレージデバイスからなるデータ格納手段と、
各クライアントとネットワークを介して接続され、クライアントから送信されたデータを上記データ格納手段に書き込み、上記データ格納手段に格納されているデータを読み出しクライアントへ送信する複数のクラスタとを備え、
各クラスタは、クライアントから送信されたデータを一時的に格納するキャッシュメモリを有し、
クライアントから全クラスタに対してマルチキャスト送信された、当該書き込みデータを含む書き込み要求があった場合には、全クラスタが各キャッシュメモリに上記書き込みデータを記憶し、処理担当となる１のクラスタが当該データを上記データ格納手段に格納し、
クライアントからデータの読み出し要求があった場合には、処理担当となる１のクラスタが当該データがキャッシュメモリに記憶されているかどうかを検索し、検索した結果キャッシュメモリに当該データが記憶されている場合には、このキャッシュメモリから当該データを読み出して、クライアントに当該データを送信すること
を特徴とする負荷分散サーバシステム。
【請求項２】
各クラスタは、上記データ格納手段にデータを格納すると、他のクラスタに対して格納完了通知を行うこと
を特徴とする請求項１記載の負荷分散サーバシステム。
【請求項３】
処理担当となっていないクラスタは、上記格納完了通知を受けると、上記キャッシュメモリに記憶されている上記書き込みデータを削除すること
を特徴とする請求項２記載の負荷分散サーバシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データの読み出し／書き込み及び各種データ処理を複数のクラスタで分散して処理を行う負荷分散サーバシステムに関するものである。
【０００２】
【従来の技術】
従来より、複数のクラスタにより構成されたクラスタ型負荷分散サーバシステムが知られている。
【０００３】
負荷分散とは、複数のクラスタを用意し、複数のクライアントからの各々の要求を、なんらかの手法により複数のクラスタに振り分けて処理させるものである。複数のクライアントからの要求を１つのクラスタが集中して一括処理をすると、そのクラスタの負荷が高くなり、レスポンスも悪くなる。負荷分散は、このような問題を解決するシステムで、負荷分散をすることにより１台あたりのクラスタの負荷を減少し、レスポンスを向上させることができる。
【０００４】
クラスタ型負荷分散サーバシステムは、複数のクラスタと、各クラスタからアクセスが可能な１以上のストレージデバイスとから構成される。このクラスタ型負荷分散サーバシステムでは、各クラスタがネットワーク網を介してクライアントと接続され、それぞれ独立のネットワークサーバとして機能する。しかしながら、クライアントからは各クラスタは個別独立には見えず、複数のクラスタが１つのサーバのようにクライアントに使用される。
【０００５】
このクラスタ型負荷分散サーバシステムの動作について説明をする。
【０００６】
データの書き込み時の動作は、以下のようになる。
【０００７】
まず、クライアントからサーバ側にデータの書き込み要求が発せられる。サーバ側では、書き込み要求を受けると、負荷分散により処理担当となるクラスタが決定される。処理担当となったクラスタは、そのクライアントからデータを受信し、自己の内部キャッシュメモリに記憶する。続いて、このクラスタは、内部キャッシュメモリに記憶したデータを、ストレージに保存する。
【０００８】
また、データの読み出し時の動作は、以下のようになる。
【０００９】
まず、クライアントからサーバ側にデータの読み出し要求が発せられる。サーバ側では、読み出し要求を受けると、負荷分散により処理担当となるクラスタが決定される。処理担当となったクラスタは、ストレージからデータを読み出し、クライアントに送信をする。
【００１０】
【発明が解決しようとする課題】
ところで、このようなクラスタ型負荷分散サーバシステムでは、あるクライアントからデータの書き込み要求があったのち、すぐに、他のクライアントから当該データの読み出し要求があったときなどに、データの一貫性を確保することができない現象が生じる場合がある。
【００１１】
例えば、あるクライアントＡからデータ０の更新要求が発せられたとする（更新後はデータ０＋）。そして、負荷分散によりクラスタＸがその要求を処理することとなり、そのクラスタＸがデータ０＋を自己の内部キャッシュメモリに記憶した。このとき、他のクライアントＢからデータ０の読み出し要求があった。ここで、クラスタＸがキャッシュメモリの内部のデータ０＋をストレージに保存することとなるが、データ０＋がストレージに保存される前に他のクライアントＢの読み出し要求に対する処理担当となったクラスタＹが、更新前の古いデータ０をストレージから読み出してしまった。
【００１２】
このように、従来のクラスタ型負荷分散サーバシステムでは、クライアントＢからのデータ０に対する読み出し要求が発せられる前に、クライアントＡからのデータ０の更新要求が発生られているため、本来、更新されたデータ０＋をクライアントＢに対して送信するべきであるにもかかわらず、更新前のデータ０をクライアントＢに対して送信してしまい、データの一貫性を確保することができなかった。
【００１３】
このような問題を解決する方法として、クライアントからの更新要求に対しては特定の１つのクラスタが一括してその要求を受け付け、受け付けた更新データを他のクラスタに転送し、転送を受けたクラスタがストレージに書き込む処理を行うという方法がある。この方法では、更新データがストレージに書き込まれるまでの間に発せられた当該更新データの読み出し要求に対しては、その特定の１のクラスタが処理担当となることで、データの一貫性を確保している。
【００１４】
しかしながら、このような方法では、更新要求の受付をするクラスタ、及び、更新データの書き込みまでに発せられる読み出し要求の処理担当となるクラスタは、唯一となってしまう。そのため、もしこのクラスタが故障した場合、更新要求を処理することができなくなってしまい、システム全体が機能しなくなってしまう。また、多数のクライアントから更新要求等があった場合、１つのクラスタでのみしか更新処理等が行われないので、サーバの性能のボトルネックとなり、負荷分散している利点が損なわれてしまう。
【００１５】
また、このような問題を解決する他の方法として、特開平８−８３２１６号公報において提案されている方法がある。本公報において提案されている方法は、各クラスタの中央にキャッシング情報を一時的に統合して記憶する制御装置を設けることによって、キャッシュメモリを結合してデータの一貫性を保持する方法である。
【００１６】
しかしながら、この方法も、キャッシング情報を統合して記憶する制御装置が故障した場合、更新要求を処理することができなくなってしまい、システム全体が機能しなくなってしまう。また、多数のクライアントからの更新要求があった場合には、この制御装置がボトルネックとなり、負荷分散している利点が損なわれてしまう。
【００１７】
本発明は、このような実情を鑑みてなされたものであり、あるクライアントからデータの書き込みがあったのち、すぐに、他のクライアントから当該データの読み出しがあった場合などの複数クライアントからのアクセスに対して、データの一貫性を確保することができる負荷分散サーバシステムを提供することを目的とする。
【００１８】
【課題を解決するための手段】
上述の課題を解決するために、本発明に係る負荷分散サーバシステムは、クライアントからの処理要求に対して、負荷分散により処理担当となるクラスタが決定される負荷分散サーバシステムにおいて、１以上のストレージデバイスからなるデータ格納手段と、各クライアントとネットワークを介して接続され、クライアントから送信されたデータを上記データ格納手段に書き込み、上記データ格納手段に格納されているデータを読み出しクライアントへ送信する複数のクラスタとを備え、各クラスタは、クライアントから送信されたデータを一時的に格納するキャッシュメモリを有し、クライアントから全クラスタに対してマルチキャスト送信された、当該書き込みデータを含む書き込み要求があった場合には、全クラスタが各キャッシュメモリに上記書き込みデータを記憶し、処理担当となる１のクラスタが当該データを上記データ格納手段に格納し、クライアントからデータの読み出し要求があった場合には、処理担当となる１のクラスタが当該データがキャッシュメモリに記憶されているかどうかを検索し、検索した結果キャッシュメモリに当該データが記憶されている場合には、このキャッシュメモリから当該データを読み出して、クライアントに当該データを送信することを特徴とする。
【００１９】
本発明の負荷分散サーバシステムでは、各クラスタがキャッシュメモリを有している。
【００２０】
クライアントは、データの書き込みを行う場合には、全てのクラスタに対して当該書き込みデータをマルチキャスト送信する。全てのクラスタは、処理担当になるか否かに関わらず、クライアントからデータの書き込み要求があった場合には、当該書き込みデータをそれぞれのキャッシュメモリに記憶する。そして、処理担当となる１のクラスタのみが、当該書き込みデータをデータ格納手段に格納する。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００２２】
図１に本発明の実施の形態のクラスタ型負荷分散サーバシステム（以下、単にサーバシステムと称する。）のシステム構成図を示す。
【００２３】
サーバシステム１は、複数のクラスタ１１〜１４と、複数のストレージ装置２１〜２５とから構成されている。
【００２４】
各クラスタ１１〜１４は、ネットワーク網２を介して各クライアントと接続されている。また、各クラスタ１１〜１４は、全てストレージ装置２１〜２５に接続され、全てのストレージ装置２１〜２５に対してアクセスが可能となっている。なお、ここでは、クラスタの数を４つとしているが、その数に制限はない。また、ストレージ装置の数も５つとしているが、その数に制限はない。また、クラスタとストレージ装置の接続形態であるが、ループ接続しているものを図示しているが、その接続形態は、バス接続、スイッチ接続等、どのような形態であってもよい。
【００２５】
図２に、各クラスタの構成図を示す。各クラスタは、同一のブロック構成となる。
【００２６】
クラスタ１１〜１４は、この図２に示すように、プロセッサ３１と、キャッシュメモリ３２と、ネットワークインタフェース３３と、ストレージインタフェース３４とを備え、これらがバス３５により接続されている。
【００２７】
プロセッサ３１は、クラスタ全体の動作制御をする回路である。キャッシュメモリ３２は、クライアントから送信された書き込みデータ及びストレージ装置２１〜２５からの読み出しデータを一時的に記憶する記憶部である。ネットワークインタフェース３３は、ネットワーク網２を介してクライアントとデータの送受信を行う回路である。ストレージインタフェース３４は、各ストレージ装置２１〜２５とデータの送受信を行う回路である。
【００２８】
以上のような構成のサーバシステム１では、各クライアントからの要求（データ書き込み要求／データ読み出し要求等）に対して、処理担当となるクラスタが負荷分散によって決定され、１つのクライアントからの要求は１つのクラスタが処理することとなる。クライアントは、特定のクライアントに対してのみ要求（データ書き込み要求／データ読み出し要求等）を送信するのではなく、複数のクラスタを１つのサーバシステムとみなして、全体に対して要求をマルチキャスト送信する。
【００２９】
つぎに、各クラスタ１１〜１４の動作について図３に示すフローチャートを用いて説明をする。
【００３０】
まず、クラスタ１１〜１４は、クライアントからの要求を待ち受ける（ステップＳ１）。
【００３１】
そして、クライアントは、データの書き込み、データの読み出し等を行う場合、その要求が全クラスタ１１〜１４に対してマルチキャスト送信する。
【００３２】
各クラスタ１１〜１４は、クライアントからの要求を受信すると、その要求の内容を判断する（ステップＳ２）。ここで、その要求がデータの書き込み要求（ストレージ装置２１〜２５にデータを保存する要求）であった場合には、ステップＳ３に進み、その要求がデータの読み出し要求（ストレージ装置２１〜２５に保存されているデータを読み出す要求）であった場合には、ステップＳ７に進む。
【００３３】
その要求がデータの書き込み要求であった場合、受信したデータをキャッシュメモリ３２に記憶させる。なお、このキャッシュメモリ３２への記憶動作は、全てのクラスタ１１〜１４が同時並行的に行うこととなる。
【００３４】
続いて、クラスタ１１〜１４は、負荷分散において、その要求に対する処理担当となっているかどうかを判断する（ステップＳ４）。処理担当となっていない場合には、ステップＳ１に戻り次の要求を待ち受ける。
【００３５】
処理担当となっている場合には、クラスタ１１〜１４は、キャッシュメモリ３２に記憶させた当該書き込みデータを、任意な時にストレージ装置２１〜２５に保存する（ステップＳ５）。
【００３６】
処理担当となっているクラスタは、ストレージ装置２１〜２５に当該書き込みデータを保存すると、他のクラスタに対して保存完了通知を行う。そして、この処理担当となっているクラスタは、キャッシュメモリ３２に記憶している当該保存済みのデータを削除する。なお、この処理担当となっているクラスタは、キャッシュメモリ３２のメモリ容量に余裕があれば記憶を維持し、容量の余裕がなくなったときに当該保存済みのデータを削除してもよい。
【００３７】
また、処理担当となっていないクラスタは、保存完了通知を受けると、同様に、キャッシュメモリ３２に記憶している当該保存済みのデータを削除する。なお、処理担当となっていないクラスタも、キャッシュメモリ３２のメモリ容量に余裕があれば記憶を維持し、容量の余裕がなくなったときに当該保存済みのデータを削除してもよい。
【００３８】
一方、要求がデータの読み出し要求であった場合、クラスタ１１〜１４は、負荷分散において、その要求に対する処理担当となっているかどうかを判断する（ステップＳ７）。処理担当となっていない場合には、ステップＳ１に戻り次の要求を待ち受ける。
【００３９】
続いて、処理担当となっている場合には、クラスタ１１〜１４は、当該読み出し要求があったデータを、キャッシュメモリ３２内を検索する（ステップＳ８）。
【００４０】
キャッシュメモリ３２を検索した結果、当該読み出し要求があったデータがヒットした場合には、キャッシュメモリ３２内に記憶されているデータをクライアントに送信する（ステップＳ９）。
【００４１】
キャッシュメモリ３２内を検索した結果、当該読み出し要求があったデータがヒットしなかった場合には、ストレージ装置２１〜２５からデータを読み出し、キャッシュメモリ３２に記憶する（ステップＳ１０）。
【００４２】
続いて、キャッシュメモリ３２内に記憶されているデータをクライアントに送信する（ステップＳ１１）。
【００４３】
以上のように本発明の実施の形態のクラスタ型負荷分散サーバシステム１では、各クラスタ１１〜１４がキャッシュメモリ３２を有している。そして、各クライアントは、データの書き込みを行う場合には、全てのクラスタ１１〜１４に対して当該書き込みデータをマルチキャスト送信する。全てのクラスタ１１〜１４は、処理担当になるか否かに関わらず、クライアントからデータの書き込み要求があった場合には、当該書き込みデータをそれぞれのキャッシュメモリ３２に記憶する。そして、処理担当となる１のクラスタのみが、当該書き込みデータをストレージ装置２１〜２５に格納する。
【００４４】
また、クライアントからデータの読み出し要求があった場合には、処理担当となる１のクラスタは、まず、キャッシュメモリ３２内に当該読み出しデータを記憶しているかどうかを検索する。検索した結果、キャッシュメモリ内に記憶している場合には、当該読み出しデータをキャッシュメモリ３２から読み出して、クライアントに送信する。また、検索した結果、キャッシュメモリ３２内に記憶していなければ、当該読み出しデータをストレージ装置２１〜２５から読み出して、クライアントに送信する。
【００４５】
このことにより本発明の実施の形態のクラスタ型負荷分散サーバシステム１では、あるクライアントからデータの書き込みがあったのち、すぐに、他のクライアントから当該データの読み出しがあった場合などの複数クライアントからのアクセスに対して、データの一貫性を確保することができる。
【００４６】
クライアントから送信されたデータをすぐにストレージ装置２１〜２５に格納する必要がなく、例えば、そのクラスタのアイドルタイムなどに、他のデータと併せてストレージ装置２１〜２５に格納すればよく、書き込み効率が向上する。また、クライアントに送信するデータをキャッシュメモリ３２から読み出せば、ストレージ装置２１〜２５からデータを読み出す必要がなく、レスポンスが高くなる。
【００４７】
また、全クラスタ１１〜１４がそれぞれキャッシュメモリ３２を有しているので、例えばある１のクラスタが故障しても、システム全体の動作は可能であるため、安全性が向上する。
【００４８】
【発明の効果】
本発明の負荷分散サーバシステムでは、各クラスタがキャッシュメモリを有している。
【００４９】
クライアントは、データの書き込みを行う場合には、全てのクラスタに対して当該書き込みデータをマルチキャスト送信する。全てのクラスタは、処理担当になるか否かに関わらず、クライアントからデータの書き込み要求があった場合には、当該書き込みデータをそれぞれのキャッシュメモリに記憶する。そして、処理担当となる１のクラスタのみが、当該書き込みデータをデータ格納手段に格納する。
【００５０】
また、クライアントからデータの読み出し要求があった場合には、処理担当となる１のクラスタは、まず、キャッシュメモリ内に当該読み出しデータを記憶しているかどうかを検索する。検索した結果、キャッシュメモリ内に記憶している場合には、当該読み出しデータをキャッシュメモリから読み出して、クライアントに送信する。また、検索した結果、キャッシュメモリ内に記憶していなければ、当該読み出しデータをデータ格納手段から読み出して、クライアントに送信する。
【００５１】
このことにより本発明の負荷分散サーバシステムでは、あるクライアントからデータの書き込みがあったのち、すぐに、他のクライアントから当該データの読み出しがあった場合などの複数クライアントからのアクセスに対して、データの一貫性を確保することができる。
【００５２】
また、本発明の負荷分散サーバシステムでは、クライアントから送信されたデータをすぐにデータ格納手段に格納する必要がなく、例えば、そのクラスタのアイドルタイムなどに、他のデータと併せてデータ格納手段に格納すればよく、書き込み効率が向上する。また、クライアントに送信するデータをキャッシュメモリから読み出せば、データ格納手段からデータを読み出す必要がなく、レスポンスが高くなる。
【００５３】
また、全クラスタがそれぞれキャッシュメモリを有しているので、例えばある１のクラスタが故障しても、システム全体の動作は可能であるため、安全性が向上する。
【図面の簡単な説明】
【図１】本発明を適用したクラスタ型負荷分散サーバシステムのシステム構成図である。
【図２】上記クラスタ型負荷分散システムのクラスタの構成図である。
【図３】上記クラスタの動作を説明するためのフローチャートである。
【符号の説明】
１  クラスタ型負荷分散サーバシステム、２  ネットワーク網、１１〜１４  クラスタ、２１〜２５  ストレージ装置
【図１】
0004284837.tif 000002
【図２】
0004284837.tif 000003
【図３】
0004284837.tif 000004