JP3884417B2 - クラスタシステム及びサーバプログラム - Google Patents

クラスタシステム及びサーバプログラム Download PDF

Info

Publication number
JP3884417B2
JP3884417B2 JP2003290264A JP2003290264A JP3884417B2 JP 3884417 B2 JP3884417 B2 JP 3884417B2 JP 2003290264 A JP2003290264 A JP 2003290264A JP 2003290264 A JP2003290264 A JP 2003290264A JP 3884417 B2 JP3884417 B2 JP 3884417B2
Authority
JP
Japan
Prior art keywords
server
core
work
data
core server
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 - Lifetime
Application number
JP2003290264A
Other languages
English (en)
Other versions
JP2005063033A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 filed Critical Toshiba Corp
Priority to JP2003290264A priority Critical patent/JP3884417B2/ja
Publication of JP2005063033A publication Critical patent/JP2005063033A/ja
Application granted granted Critical
Publication of JP3884417B2 publication Critical patent/JP3884417B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本発明は、複数のコンピュータから構成されるクラスタシステムに係り、特にクラスタ制御を実行するコアサーバと、当該コアサーバと独立して設けられ、複数のコアサーバが同期して動作することで実現される仮想マシンとしてのカーネルからの制御によって動作するワークサーバとを実現するクラスタシステム及びサーバプログラムに関する。
近年、コンピュータ上でアプリケーションプログラムを実行することにより、ユーザ(クライアント端末)にサービスを提供するシステムが運用されている。この種のシステムでは、継続したサービスの提供が必須になっている。これに伴い、サービス(業務)を実行しているコンピュータ(サーバコンピュータ)にも高い可用性(サーバ稼働率、業務稼働率)が求められる。そこで、複数のコンピュータをクラスタ構成として、一部のコンピュータで障害が発生しても、別のコンピュータでサービスを引き継いで、システム全体が停止するのを防止する、いわゆるクラスタシステムが開発されている(例えば、非特許文献1参照)。
クラスタシステムを構成するには、各コンピュータ上にクラスタマネージャが必要となる。クラスタマネージャは、クラスタの制御と、アプリケーションを起動・停止する制御(サービス制御)とを実行する。クラスタシステムでは、複数のコンピュータ(ノード)で分散してクラスタマネージャによるクラスタ制御が行われる。ここでは、クラスタ全体としての視点でクラスタ制御が行われること、つまり各コンピュータで分散して行われるクラスタ制御が、全体として一貫性のある制御となっていることが必要となる。そこでクラスタシステムでは、各コンピュータでのクラスタ制御が、互いに通信を行いながら同期して(連携して)行われる。つまり、クラスタ制御が各コンピュータで多重化して行われる。これにより高可用性(高業務稼働率)が実現される。
ところがクラスタシステムにおいてスプリットブレインと呼ばれる状況が発生すると、多重化された処理に一貫性がなくなり、システム全体に致命的な影響を及ぼす。このスプリットブレインは、コンピュータの障害検出が誤って行われたときに発生する。例えばクラスタシステム内の2つのコンピュータ群の間で互いに通信できない状態となった場合、それぞれのコンピュータ群は、互いに障害検出し、独立して動作を継続する。これにより、アプリケーションやデータが破壊される虞がある。そこで、スプリットブレインの発生を防止するために、n台のコンピュータで処理を多重化し、f台(fは3f<nを満足する最大の整数)のコンピュータが故障しても、残りのn−f台のコンピュータが多重化処理を行うことにより、多数決により正しい処理結果を決定できるようにした技術が提案されている(例えば、特許文献1参照)。ここで、f<n/3であることから、n−f>n−n/3、即ちn−f>2n/3である。このため、特許文献1に記載された技術は、少なくともn台のコンピュータのうちのn−f台が正常であること、つまりn台のコンピュータのうちの2/3を超えるコンピュータが正常であることが要求されることから、2/3定足数アルゴリズムと呼ばれる。
特開2003−67215(段落0056乃至0064、図4) 金子哲夫、森良哉、「クラスタソフトウェア」、東芝レビュー、Vol.54 No.12(1999)、p.18-21
上記したように従来のクラスタシステムでは、各コンピュータ上で動作するクラスタマネージャが互いに通信を行ってクラスタ制御を行うことで、システム全体として一貫性のある制御を実現している。また各コンピュータ上で動作するクラスタマネージャにより、ユーザにサービスを提供するためのアプリケーションを起動・停止する制御(サービス制御)が行われる。
このように従来のクラスタシステムでは、クラスタマネージャは、クラスタを構成する全てのノード(コンピュータ)に存在する。このため、各ノード上のクラスタマネージャが一貫性のある制御を行おうとすると、全てのノード間で当該制御のための通信が発生する。その結果、ノード数が多くなると、一貫性ある制御のためのノード間の通信が増加して、通信に起因するオーバヘッド(ネットワーク負荷)が大きくなる。よって従来は、少ないノード数(せいぜい16ノード程度)のクラスタシステムしか実用的ではなかった。また従来のクラスタシステムでは、各ノード上のクラスタマネージャが、クラスタ制御と、アプリケーションを起動・停止する制御(サービス制御)とを実行している。このため従来のクラスタシステムでは、クラスタ制御の一貫性を保ちながら動的にノード数を増やすための仕組みが複雑であり、ノードの動的な追加に対応しきれていないという問題もある。
本発明は上記事情を考慮してなされたものでその目的は、ノード数の多いクラスタ構成がノード間の通信の大幅な増加を招くことなく実現できるクラスタシステム及びサーバプログラムを提供することにある。
本発明の他の目的は、ノード数を柔軟に変更可能なクラスタシステム及びサーバプログラムを提供することにある。
本発明の1つの観点によれば、複数のコンピュータから構成されるクラスタシステムが提供される。このクラスタシステムは、クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上でそれぞれ独立動作して、クライアント端末から要求されたサービスを提供するためのサービス制御を行うワークサーバと、上記
クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上でそれぞれ動作するコアサーバであって、他のコアサーバと互いに通信を行いながら同期して上記ワークサーバを制御することにより、他のコアサーバと一体となって1つのカーネルとして一貫性のあるクラスタ制御を行うコアサーバとを備えることを特徴とする。
このような構成においては、サービス制御とクラスタ制御とがそれぞれ独立のワークサーバとコアサーバによって行われることから、ワークサーバが配置されるサーバコンピュータとコアサーバが配置されるサーバコンピュータ(ワークサーバが動作するサーバコンピュータと同じコンピュータであっても構わない)とを柔軟に決定できる。このため、ノード数の多いクラスタ構成がノード間の通信の大幅な増加を招くことなく実現できると共にノード数を柔軟に変更することができる。
ここで、上記ワークサーバには、当該ワークサーバと接続されるコアサーバを切り替える切替手段と、当該ワークサーバと接続されているコアサーバに対して当該ワークサーバから送信されたデータを格納するための第1のバッファと、上記切替手段により当該ワークサーバと接続されるコアサーバが切り替えられた場合、上記第1のバッファに格納されているデータのうち、上記切替手段による切り替え前に当該ワークサーバと接続されていたコアサーバが確かに受信したと確認できないデータを、上記切替手段により当該ワークサーバと新たに接続されたコアサーバに再送する第1の再送手段とを持たせるとよい。一方、上記コアサーバには、上記ワークサーバ毎に設けられ、対応するワークサーバに対して当該コアサーバまたは他のコアサーバから送信されたデータを格納するための第2のバッファと、当該コアサーバが新たにワークサーバと当該ワークサーバ内の上記切替手段により接続された場合、当該ワークサーバに対応する上記第2のバッファに格納されているデータのうち、上記切替手段による切り替え前に当該ワークサーバと接続されていたコアサーバから当該ワークサーバに送信されたものの、当該ワークサーバが確かに受信したと確認できないデータを当該ワークサーバに再送する第2の再送手段とを持たせるとよい。
このような構成においては、ワークサーバと接続されているコアサーバの障害が発生しても、他のコアサーバとの接続にスムーズに切り替えることができ、しかもデータを失うことが防止できるため、コアサーバの障害に対して耐障害性を持つことができる。
また、上記ワークサーバには、当該ワークサーバにおけるサービスの状態を各サービス毎に保持する第1の状態保持手段を持たせ、上記コアサーバには、上記クラスタシステム内の全てのワークサーバにおけるサービスの状態を各サービス毎に保持する第2の状態保持手段と、当該コアサーバが他のコアサーバと一体となって1つのカーネルとして再起動される際に、当該コアサーバと接続されているワークサーバの第1の状態保持手段に保持されている情報を収集して上記第2の状態保持手段の内容を復元する手段を持たせるならば、カーネルの再起動後も、クラスタの状態を維持して制御を続けることができる。
本発明によれば、サービス制御を行うワークサーバとクラスタ制御を行うコアサーバとが互いに分離独立していることから、クラスタシステム上でワークサーバとコアサーバを柔軟に配置できる。このため本発明によれば、、ノード数の多いクラスタ構成がノード間の通信の大幅な増加を招くことなく実現でき、しかもノード数を柔軟に変更できる。
以下、本発明の実施の形態につき図面を参照して説明する。
[第1の実施形態]
図1は本発明の第1の実施形態に係るクラスタシステムの構成を示すブロック図である。図1のクラスタシステムは、4台のサーバコンピュータ10-1(#1),10-2(#2),10-3(#3),10-4(#4)から構成される。サーバコンピュータ10-1,10-2,10-3,10-4は2つのネットワーク21,22により相互接続されている。
サーバコンピュータ10-1,10-2,10-3,10-4上では、クラスタ制御を行うコアサーバ11-1(#1),11-2(#2),11-3(#3),11-4(#4)が動作する。コアサーバ11-1〜11-4は、サーバコンピュータ10-1〜10-4が、対応するサーバプログラム(クラスタ制御のためのコアサーバプログラム)を実行することにより実現される。
また、サーバコンピュータ10-1〜10-4のうちのサーバコンピュータ10-2,10-3上では、サービス制御(つまりアプリケーションを起動・停止する制御)を行うワークサーバ12-1(#1),12-2(#2)が動作する。ワークサーバ12-1,12-2は、サーバコンピュータ10-2,12-3が、対応するサーバプログラム(サービス制御のためのワークサーバプログラム)を実行することにより実現される。
ネットワーク22には、ワークサーバ12-1,12-2に対してサービスの実行を要求するクライアント端末23が接続されている。ワークサーバ12-1,12-2とクライアント端末23との間の通信は、ネットワーク22を介して行われる。なお、図1では、作図の都合上、ネットワーク22に1つのクライアント端末23が接続されている例が示されている。しかし、ネットワーク22には、複数のクライアント端末が接続されるのが一般的である。
サーバコンピュータ10-1〜10-4上の各コアサーバ11-1〜11-4は、従来のクラスタシステムにおける各コンピュータ上で動作するクラスタマネージャのクラスタ制御機能と同様のクラスタ制御機能を有し、他のコアサーバと一体となって(多重化して動作して)、クラスタシステムの制御を実行する。一体となったコアサーバ11-1〜11-4は、カーネル110と呼ぶ1つのバーチャルマシン(仮想的な実行環境)を形成する。カーネル110は、個々のサーバコンピュータ10-1〜10-4上で動作するコアサーバ11-1〜11-4が連携して形成される。このためカーネル110は、サーバコンピュータ10-1〜10-4にまたがって存在していると考えることができる。つまり、個々のコアサーバ11-1〜11-4がカーネルなのではなく、コアサーバ11-1〜11-4が一体となってカーネル110が構築され、よってクラスタシステムにはひとつだけカーネルが存在する。
コアサーバ11-1〜11-4が一体となって同期(連携)して動作する(つまり多重化して動作する)のに必要な、コアサーバ11-1〜11-4間の通信には、ネットワーク21が用いられる。ここで、ネットワーク21には、上記多重化動作の高速化のために、ワークサーバ12-1,12-2とクライアント端末23との間の通信に用いられるネットワーク22よりも高速のネットワークが用いられる。なお、高速化が要求されない場合には、コアサーバ11-1〜11-4間の通信にもネットワーク22を用いても構わない。
サーバコンピュータ10-2,10-3上のワークサーバ12-1,12-2は、カーネル110からの制御に従って動作し、サービス(アプリケーション)の起動・停止を制御する。つまり、ワークサーバ12-1,12-2ではサービスが実行される。このサービスについて、ウェブサービスを例に説明する。まずウェブサービスを実行するには、当該サービスに対するクライアント端末23からのリクエストに応答してコンテンツを配信する役割を持つウェブサーバが必要である。またクライアント端末からウェブサーバにリクエストを届けるためにはアドレス、例えばIP(Internet Protocol)アドレスが必要である。提供されるコンテンツを保存するためのファイルシステムも必要である。つまりウェブサービスの提供には、ウェブサーバ、IPアドレス、ファイルシステムなどの、物理的、もしくは論理的な実体が必要となる。これらの実体は、「リソース」と呼ばれる。つまり、ワークサーバ12-1,12-2では、それぞれ複数のリソース121-1,121-2を組み合わせて実行することにより、結果としてサービスが実行される。ワークサーバ12-1,12-2において、リソース121-1,121-2の起動・停止を実際に行う手段をエージェント120-2と呼ぶ。エージェント120-1,120-2は、カーネル110から制御の指示を受け取り、それに従ってリソース121-1,121-2を制御し、結果をカーネル110に返す。
このように、図1のクラスタシステムには2台のワークサーバ12-1,12-2が存在し、それぞれが独立して稼働する。このため、カーネル110が、ワークサーバ12-1,12-2をいかに制御し、同期をとるかという点が重要である。そこで本実施形態では、クラスタシステムの制御がカーネル110によって一元的に行われる構成を適用している。カーネル110は、コアサーバ11-1〜11-4で多重化実行されるバーチャルマシンである。このため、一部のコアサーバに障害が発生した場合でも、クラスタシステムの制御を継続することが可能である。
コアサーバ11-1〜11-4における多重化実行のアルゴリズムには、前記特許文献1に記載されているスプリットブレインを起こさない2/3定足数アルゴリズムが適用される。本実施形態のクラスタシステムは、n=4,f=1であり、2/3定足数アルゴリズムが適用可能な最も少ない数のコンピュータで構成される。つまり、本実施形態のクラスタシステムは2/3定足数アルゴリズムが適用可能な最小クラスタ構成をとる。これにより、f(=1)台のコアサーバの停止障害だけでなく、ビザンティン故障にも耐障害性を実現できる。このように、カーネル110は、超高信頼なバーチャルマシンとなっており、信頼性の高いクラスタシステムの制御を実現する。
さて本実施形態では、クラスタシステム内の全てのサーバコンピュータ、つまり4台のサーバコンピュータ10-1〜10-4上でコアサーバ11-1〜11-4が稼働させられて、カーネル110が実現される。これにより上記したように、2/3定足数アルゴリズムを適用するのに必要な最少のコンピュータ数(n=4)でクラスタシステムが構築される。また、この4台のサーバコンピュータ10-1〜10-4のうちの2台のサーバコンピュータ10-2,10-3上でワークサーバ12-1,12-2が稼働させられて、クラスタシステムのサービスが実行される。このため、サーバコンピュータ10-2,10-3には、それぞれそのサービスに必要なリソース121-1,121-2と、それに見合ったハードウェア/ソフトウェアが必要になるものの、サーバコンピュータ10-1,10-4ではコアサーバ11-1,11-2しか動作しないため、当該サーバコンピュータ10-1,10-4は比較的小さなコンピュータで十分である。
以上のことから、図1のクラスタシステムでは、サービス制御に関しては、2つのワークサーバ12-1,12-2間でのフェイルオーバによる可用性の向上が期待できる。一方、クラスタ制御に関しては、4つのコアサーバ11-1〜11-4による2/3定足数アルゴリズムによる可用性の向上が期待できる。
図2は、図1のクラスタシステム内のコアサーバ及びワークサーバの構成を、コアサーバ11-1,11-4及びワークサーバ12-1について示すブロック図である。図2に示すように、コアサーバ11-1,11-4は、同期処理部111-1,111-4と、状態管理テーブル112-1,112-4と、送信部113-1,113-4と、受信部114-1,114-4と、バッファ115-1,115-4と、再送ポインタ(再送ポインタ保持部)116-1,116-4と、再送部117-1,117-4とを備えている。なお、図2では省略されているが、コアサーバ11-2,11-3も、上記コアサーバ11-1,11-4と同様の構成を備えている。また、図2では省略されているが、これらの構成はワークサーバ毎に用意される。また、少なくともバッファがワークサーバ毎に用意される構成であっても構わない。
同期処理部111-i(i=1〜4)は、コアサーバ11-1〜11-4間の一貫性を保つために、ネットワーク21を介して通信する。状態管理テーブル112-iは、図1のクラスタシステム内の全てのワークサーバ、即ちワークサーバ12-1(#1),12-2(#2)における各サービスの状態を管理するのに用いられる。
送信部113-iは、図1のクラスタシステム内のワークサーバ12-j(j=1または2)へのデータ送信、及び当該ワークサーバ12-jから送信されたデータを受信したことを当該ワークサーバ12-jへ通知するための受信応答を行う。受信応答は、受信データに付される当該データを識別するために当該データに割り当てられた識別情報、例えばシーケンス番号を通知することで行われる。送信部113-iは、データ送信時または受信応答時には、送信データまたは受信データのシーケンス番号を同期処理部111-iにより他のコアサーバに通知させる。
受信部114-iは、ワークサーバ12-jから送信されたデータの受信、及び当該ワークサーバ12-jへのデータ送信に対する当該ワークサーバ12-jからの受信応答の受信を行う。受信部114-iは、ワークサーバ12-jからのデータの受信時または受信応答の受信時に、受信データまたは受信応答で通知されたシーケンス番号を同期処理部111-iにより他のコアサーバに通知させる。
バッファ115-iは、送信部113-iからワークサーバ12-jに送信されたデータをシーケンス番号と対応付けて格納するのに用いられる。バッファ115-iは、ワークサーバ12-j毎に用意される。バッファ115-iは、再送ポインタ(RP)116-iと、図示せぬ書き込みポインタ(WP)とによって管理される。再送ポインタ116-iは、バッファ115-iに格納されている、ワークサーバ12-jが確かに受信したと確認できないデータのうち、最も古いデータの位置を指す。書き込みポインタは、次にバッファ115-iに書き込むべき送信データの格納先を指す。再送部117-iは、ワークサーバ12-jと接続されるコアサーバが他のコアサーバからコアサーバ11-iに切り替えられた場合に、それまでワークサーバ12-jと接続されていたコアサーバが送信したデータのうち、当該ワークサーバ12-jで確かに受信したと確認できないデータを、再送ポインタ116-iに従って取り出して当該ワークサーバ12-jに再送する。
一方、ワークサーバ12-1(12-j)内のエージェント120-1(120-j)は、切替部121と、状態テーブル122と、送信部123と、受信部124と、バッファ125と、再送ポインタ(再送ポインタ保持部)126と、再送部127とを備えている。なお、図2では省略されているが、ワークサーバ12-2内のエージェント120-2も、上記ワークサーバ12-1内のエージェント120-1と同様の構成を備えている。
切替部121は、ワークサーバ12-1(内のエージェント120-1)をコアサーバ11-1〜11-4のいずれかと接続する。切替部121は、動作しているコアサーバを見つけ、当該コアサーバに接続する。接続しているコアサーバが停止または無応答になった場合、切替部121は別のコアサーバに接続し直す。状態テーブル122は、ワークサーバ12-1における各サービスの状態を管理するのに用いられる。
送信部123は、ワークサーバ12-1(内のエージェント120-1)と接続されているコアサーバ11-iへのデータ送信、及び当該コアサーバ11-iから送信されたデータを受信したことを当該コアサーバ11-iへ通知するための受信応答を行う。受信部124は、コアサーバ11-iから送信されたデータの受信、及び当該コアサーバ11-iへのデータ送信に対する当該コアサーバ11-iからの受信応答の受信を行う。
バッファ125は、送信部123からコアサーバ11-iに送信されたデータをシーケンス番号と対応付けて格納するのに用いられる。バッファ125は、再送ポインタ(RP)126と、書き込みポインタ(WP)128(図3参照)とによって管理される。再送ポインタ126は、バッファ125に格納されている、コアサーバ11-iが確かに受信したと確認できないデータのうち、最も古いデータの位置を指す。書き込みポインタは、次にバッファ125に書き込むべき送信データの格納先を指す。再送部127は、ワークサーバ12-1(内のエージェント120-1)と接続されるコアサーバが切替部121によって切り替えられた場合に、それまで当該ワークサーバ12-1(内のエージェント120-1)と接続されていたコアサーバに送信したデータのうち、当該コアサーバで確かに受信したと確認できないデータを、再送ポインタ126に従って取り出して、新たにワークサーバ12-1(内のエージェント120-1)と接続されるワークサーバに再送する。
図3は、バッファ125と再送ポインタ(RP)126及び書き込みポインタ(WP)128との関係を示す。バッファ125は、当該バッファ125の領域がサイクリックに用いられる循環バッファである。バッファ125の領域のうち、再送ポインタ126で指定される位置から書き込みポインタ128で指定される位置の直前の位置までの領域(図3においてハッチングが施されている部分)のデータが、再送部127による再送の対象となる。バッファ115-iと再送ポインタ(RP)116-i及び図示せぬ書き込みポインタ(WP)との関係も同様である。
図4は、コアサーバ11-iが有する状態管理テーブル112-iのデータ構造例を示す。図4に示す状態管理テーブル112-iの例では、当該状態管理テーブル112-iの各エントリには、クラスタシステム内の各ワークサーバ12-1(#1),12-2(#2)における各サービスの状態が保持される。
図5は、ワークサーバ12-1(内のエージェント120-1)が有する状態テーブル122のデータ構造例を示す。図5に示す状態テーブル122の例では、当該状態テーブル122の各エントリには、当該状態テーブル122を有するワークサーバ12-1(#1)における各サービスの状態が保持される。
本実施形態では、従来のクラスタマネージャとは異なって、クラスタ制御を行うコアサーバ11-1〜11-4とサービス制御を行うワークサーバ12-1,12-2とが分離独立して設けられる。このため、コアサーバ11-1〜11-4とワークサーバ12-1,12-2内のエージェント120-1,120-2とは、制御するものと制御されるものとの関係として、互いに通信する。また、コアサーバ11-1〜11-4間では、一貫性を保つための通信が行われる。ところが、例えばワークサーバ12-1がコアサーバ11-1と接続された状態で、当該コアサーバ11-1に障害が発生したために、当該ワークサーバ12-1が他のコアサーバに接続し直された場合には、コアサーバ11-1〜11-4とワークサーバ12-1,12-2とが分離独立していることに起因してデータが失われる虞がある。しかし本実施形態では、以下に述べるワークサーバ12-1及びコアサーバ11-1におけるデータ送受信処理により、データが失われるのを防止している。
そこで、本実施形態の動作について、ワークサーバ12-1及びコアサーバ11-1におけるデータ送受信処理を例に説明する。今、図2に示すように、ワークサーバ12-1(内のエージェント120-1)がコアサーバ11-1〜11-4のうちのコアサーバ11-1と接続されているものとする。この状態で、ワークサーバ12-1内のエージェント120-1はコアサーバ11-1とネットワーク21を介して通信を行う。なお、ワークサーバ12-1がコアサーバ11-2と接続されている場合、両サーバ12-1,11-2は同一のサーバコンピュータ10-2上で動作していることから、両サーバ12-1,11-2間の通信はネットワーク21を介すことなく、当該サーバコンピュータ10-2内で行われる。勿論、上記両サーバ12-1,11-2が同一のサーバコンピュータ10-2上で動作していても、両サーバ12-1,11-2間の通信がネットワーク21を介して行われる構成としてもよい。
まず、ワークサーバ12-1(内のエージェント120-1)に設けられた送信部123の動作について、図6のフローチャートを参照して説明する。送信部123は、コアサーバ11-1に対して送信すべきデータが無い場合(ステップS1)、受信応答が必要か否かを判定する(ステップS2)。ここでは、コアサーバ11-1から送信されたデータを受信部124が受信してから一定期間を経過しても受信応答を返していない場合、受信応答が必要であると判定される。もし、受信応答が必要な場合、送信部123は、受信応答を目的のコアサーバ、即ちワークサーバ12-1と接続されているコアサーバ11-1に返す(ステップS3)。ここでの受信応答により、ワークサーバ12-1内の受信部124によって受信されながら受信応答が未だ返されていないデータのうち、最も最近に受信されたデータ(つまり最も最近に受信が確認されたデータ)に付されていたシーケンス番号(以下、受信確認シーケンス番号と称する)が通知される。
一方、コアサーバ11-1に対して送信すべきデータが有る場合にも(ステップS1)、送信部123は受信応答が必要か否かを判定する(ステップS4)。ここでの受信応答が必要か否かの判定は、先のステップS2とは異なり、まだ受信応答が返されていないデータが有るか否かによって行われる。送信すべきデータが有り、且つ受信応答が必要な場合、送信部123は、受信応答付きの送信データをコアサーバ11-1に送信する(ステップS5)。受信応答付きの送信データとは、受信確認シーケンス番号(最も最近に受信が確認されたデータに付されていたシーケンス番号)を含むヘッダ部を持つ送信データをいう。この送信データのヘッダ部には、当該送信データに割り当てられたシーケンス番号(送信データシーケンス番号)も含まれている。この受信応答付きの送信データの送信により、通信回数を減らすことができる。送信部123は、送信したデータを当該データに割り当てられたシーケンス番号に対応付けて、書き込みポインタ128で指定されるバッファ125内の位置に格納する(ステップS6)。ここで、シーケンス番号はコアサーバ11-1へのデータ送信の都度1インクリメントされる。また、書き込みポインタ128は、バッファ125に送信データを格納する都度、次に送信データを格納すべき位置を指すように更新される。
次に、コアサーバ11-1に対して送信すべきデータは有るが(ステップS1)、受信応答の必要がない場合(ステップS4)、送信部123は、送信データシーケンス番号が付された送信データをコアサーバ11-1に送信する(ステップS7)。そして送信部123は、送信したデータを送信データシーケンス番号に対応付けて、書き込みポインタ128で指定されるバッファ125内の位置に格納する(ステップS6)。
次に、ワークサーバ12-1(内のエージェント120-1)に設けられた受信部124の動作について、図7のフローチャートを参照して説明する。受信部124は、ワークサーバ12-1と接続されているコアサーバ11-1から何らかの情報を受信すると(ステップS11)、その情報に受信応答が含まれているか否かを判定する(ステップS12)。もし、受信情報に受信応答が含まれている場合、即ち受信応答それ自体または受信応答付き送信データを受信した場合、受信部124は、再送ポインタ126を受信応答により通知された受信確認シーケンス番号に応じて更新する(ステップS13)。即ち受信部124は、受信確認シーケンス番号に一致するシーケンス番号に対応付けてバッファ125に格納されている送信データの次の位置を指すように、再送ポインタ126を更新する(進める)。このことは、コアサーバ11-1に送信したデータのうち、当該コアサーバ11-1で確かに受信したと確認できたデータを、バッファ125から削除したことと等価である。もし、更新後の再送ポインタ126で指定されるバッファ125内の位置(第1の位置と称する)と書き込みポインタ128で指定されるバッファ125内の位置(第2の位置と称する)とが一致していない場合、バッファ125内の第1の位置から第2の位置の直前の位置までに格納されているデータが、現時点において、コアサーバ11-1で確かに受信したと確認できないデータとなる。
次に、ワークサーバ12-1(内のエージェント120-1)と接続されたコアサーバ11-1に設けられた送信部113-1の動作について、図8のフローチャートを参照して説明する。送信部113-1は、ワークサーバ12-1(内のエージェント120-1)に対して送信すべきデータが無い場合(ステップS21)、受信応答が必要か否かを判定する(ステップS22)。ここでは、ワークサーバ12-1から送信されたデータを受信部114-1が受信してから一定期間を経過しても受信応答を返していない場合、受信応答が必要であると判定される。もし、受信応答が必要な場合、送信部113-1は、受信確認シーケンス番号を同期処理部111-1によりシステム内の他の全てのコアサーバ、即ちコアサーバ11-2〜11-4に通知する(ステップS23)。そして送信部113-1は、ワークサーバ12-1内の送信部123によるステップS3と同様にして、受信応答を目的のワークサーバ、即ちコアサーバ11-1と接続されているワークサーバ12-1に返す(ステップS24)。ここでの受信応答により、コアサーバ11-1内の受信部114-1によって受信されながら受信応答が未だ返されていないデータのうち、最も最近に受信が確認されたデータに付されていたシーケンス番号(つまり受信確認シーケンス番号)が通知される。
一方、ワークサーバ12-1に対して送信すべきデータが有る場合にも(ステップS21)、送信部113-1は受信応答が必要か否かを判定する(ステップS25)。ここでの受信応答が必要か否かの判定は、先のステップS22とは異なり、まだ受信応答が返されていないデータが有るか否かによって行われる。送信すべきデータが有り、且つ受信応答が必要な場合、送信部113-1は、送信データと受信確認シーケンス番号とを同期処理部111-1によりシステム内の他の全てのコアサーバ11-2〜11-4に通知する(ステップS26)。次に送信部113-1は、ワークサーバ12-1内の送信部123によるステップS5と同様にして、受信応答付きの送信データを目的のワークサーバ12-1に返す(ステップS27)。そして送信部113-1は、送信部123によるステップS6と同様にして、送信したデータを当該データに割り当てられたシーケンス番号に対応付けて、書き込みポインタ(図示せず)で指定されるバッファ115-1内の位置に格納する(ステップS28)。ここで、シーケンス番号はワークサーバ12-1へのデータ送信の都度1インクリメントされる。また、書き込みポインタは、バッファ115-1に送信データを格納する都度、次に送信データを格納すべき位置を指すように更新される。一方、コアサーバ11-1以外のコアサーバ、即ちコアサーバ11-2〜11-4においても、コアサーバ11-1内の送信部113-1から同期処理部111-1を通して通知された送信データと受信確認シーケンス番号とから、コアサーバ11-1におけるのと同様の動作が行われる。これにより、例えば、コアサーバ11-4内のバッファ115-4の内容、バッファ115-4用の再送ポインタ116-4及びバッファ115-4用の書き込みポインタが、コアサーバ11-1内のバッファ115-1の内容、バッファ115-1用の再送ポインタ116-1及びバッファ115-1用の書き込みポインタに一致化される。
次に、ワークサーバ12-1に対して送信すべきデータは有るが(ステップS21)、受信応答の必要がない場合(ステップS25)、送信部113-1は送信データシーケンス番号が付された送信データを同期処理部111-1によりシステム内の他の全てのコアサーバ11-2〜11-4に通知する(ステップS29)。次に送信部113-1は、この送信データシーケンス番号が付された送信データをコアサーバ11-1に送信する(ステップS30)。そして送信部113-1は、送信したデータを送信データシーケンス番号に対応付けて、書き込みポインタで指定されるバッファ115-1内の位置に格納する(ステップS28)。一方、コアサーバ11-2〜11-4においても、コアサーバ11-1内の送信部113-1から同期処理部111-1を通して通知された送信データと送信データシーケンス番号とから、コアサーバ11-1におけるのと同様の動作が行われる。これにより、例えば、コアサーバ11-4内のバッファ115-4の内容、及びバッファ115-4用の書き込みポインタが、コアサーバ11-1内のバッファ115-1の内容、及びバッファ115-1用の書き込みポインタに一致化される。
次に、コアサーバ11-1に設けられた受信部114-1の動作について、図9のフローチャートを参照して説明する。受信部114-1は、コアサーバ11-1と接続されているワークサーバ12-1から何らかの情報を受信すると(ステップS31)、その受信情報が受信応答のみ(つまり受信応答それ自体)であるか否かを判定する(ステップS32)。もし、受信応答それ自体を受信した場合、受信部114-1は、受信応答により通知された受信確認シーケンス番号を同期処理部111-1により他の全てのコアサーバ11-2〜11-4に通知する(ステップS33)。そして受信部114-1は、ワークサーバ12-1内の受信部124によるステップS13と同様にして、再送ポインタ116-1を受信応答により通知された受信確認シーケンス番号に応じて更新する(ステップS34)。一方、コアサーバ11-2〜11-4においても、コアサーバ11-1内の受信部114-1から同期処理部111-1を通して通知された受信確認シーケンス番号から、コアサーバ11-1におけるのと同様の動作が行われる。これにより、例えば、コアサーバ11-4内の再送ポインタ116-4が、コアサーバ11-1内の再送ポインタ116-1に一致化される。
一方、受信情報が受信応答それ自体ではない場合、受信部114-1は、受信情報が受信応答付き受信データであるか否かを判定する(ステップS35)。もし、受信情報が受信応答付き受信データである場合、受信部114-1は、受信データと受信確認シーケンス番号とを同期処理部111-1によりシステム内の他の全てのコアサーバ11-2〜11-4に通知する(ステップS36)。そして受信部114-1は、受信情報が受信応答のみの場合と同様に、再送ポインタ116-1を受信応答により通知された受信確認シーケンス番号に応じて更新する(ステップS34)。一方、コアサーバ11-2〜11-4においても、コアサーバ11-1内の受信部114-1から同期処理部111-1を通して通知された受信確認シーケンス番号から、コアサーバ11-1におけるのと同様の動作が行われる。これにより、例えば、コアサーバ11-4内の再送ポインタ116-4が、コアサーバ11-1内の再送ポインタ116-1に一致化される。
以上により、コアサーバ11-1〜11-4内のバッファ115-1〜115-4の内容、バッファ115-1〜115-4用の再送ポインタ116-1〜116-4及びバッファ115-1〜115-4用の書き込みポインタの一貫性が保たれる。
このような状態で、ワークサーバ12-1(内のエージェント120-1)と接続されているコアサーバ11-1の障害が発生したものとする。この場合、コアサーバ11-1が停止したり、無応答となることから、ワークサーバ12-1(内のエージェント120-1)に設けられた切替部121は、ワークサーバ12-1と接続するコアサーバをコアサーバ11-1から他の正常に動作する例えばコアサーバ11-4に切り替える。
すると、ワークサーバ12-1(内のエージェント120-1)に設けられた再送部127は、再送ポインタ126で指定されるバッファ125内の第1の位置から書き込みポインタ128で指定されるバッファ125内の第2の位置の直前の位置までに格納されているデータ(図3においてハッチングされた領域のデータ)を、前にワークサーバ12-1と接続されていたコアサーバ11-1で確かに受信したと確認できないデータであるとして、切替部121による切替でワークサーバ12-1に新たに接続されたコアサーバ11-4に送信(再送)する。このデータがコアサーバ11-4で受信されると、そのデータがクラスタシステム内の他のコアサーバに同期処理部111-4により通知され、受信データに関し、コアサーバ11-1〜11-4間で一貫性が保たれる。
一方、ワークサーバ12-1と新たに接続されたコアサーバ11-4では、再送部117-1が、上記ワークサーバ12-1内の再送部127と同様の送信動作(再送動作)を行う。即ち再送部117-1は、再送ポインタ116-4で指定されるバッファ115-4内の第1の位置から書き込みポインタで指定されるバッファ115-4内の第2の位置の直前の位置までに格納されているデータ、つまりワークサーバ12-1が前にコアサーバ11-1と接続されていた状態で確かに受信したと確認できないデータを、当該ワークサーバ12-1に送信(再送)する。
これらの、ワークサーバ12-1内の切替部121及び再送部127と、コアサーバ11-4内の再送部117-4の動作によって、コアサーバ11-1〜11-4のうちのいずれが障害で停止した場合(ここではコアサーバ11-1が停止)でも、スムーズに切り替えが行われ、且つデータのロスが発生しないで済む。つまり、これらの機能により、コアサーバとワークサーバとを分離したことに起因して発生する可能性のある問題を解消できる。
また本実施形態では、各ワークサーバ12-1,12-2(のエージェント120-1,120-2)には、当該ワークサーバ12-1,12-2におけるサービスの状態を保持する状態テーブル(ワークサーバ12-1では状態テーブル122)が設けられている。このため、カーネル110の再起動後に、当該カーネル110が各ワークサーバ12-1,12-2の状態テーブルの内容(つまりワークサーバ12-1,12-2におけるサービスの状態)を収集することで、クラスタシステム内の全てのワークサーバ12-1,12-2におけるサービスの状態を復元する。具体的には、カーネル110を構成するコアサーバ11-1〜11-4のうち、ワークサーバ12-1,12-2と接続されているコアサーバ11-2,11-3がワークサーバ12-1,12-2におけるサービスの状態を収集する。収集したサービスの状態は、各コアサーバ11-1〜11-4の同期処理部111-1〜111-4により各コアサーバ11-1〜11-4に通知され、各コアサーバ11-1〜11-4内の状態管理テーブル112-1〜112-4に反映される。これにより、カーネル110はクラスタの制御を再開できる。つまり本実施形態においては、カーネル110を一時的に停止し、その後に再起動することが可能になる。これにより、コアサーバのバージョンアップ、コアサーバの移動などが可能となり、クラスタ構成における柔軟性が増す。
上記実施形態では、クラスタシステムを構成するサーバコンピュータ10-1〜10-4のうちのサーバコンピュータ10-1,10-4では、コアサーバ及びワークサーバのうちのコアサーバのみが稼働し、残りのサーバコンピュータ10-2,10-3では、コアサーバ及びワークサーバが共に稼働することを前提としている。しかし、クラスタシステムを構成する全てのサーバコンピュータでコアサーバ及びワークサーバの両方が稼働する構成であっても、一部のコンピュータ群ではコアサーバのみが稼働し、残りのコンピュータ群ではワークサーバのみが稼働する構成であっても構わない。つまり、クラスタシステムを構成するサーバコンピュータは、コアサーバのみが稼働するサーバコンピュータ、ワークサーバのみが稼働するサーバコンピュータ、或いはコアサーバとワークサーバの両方が稼働するサーバコンピュータの何れかとなる。コアサーバとワークサーバをどのように配置するかは、クラスタ構成設計の基本である。クラスタシステムに必要な可用性や拡張性、それぞれのコンピュータの用途、性能、信頼性などを考慮し、適切な配置を決定する必要がある。以下、上記第1の実施形態とは異なるクラスタ構成について説明する。
[第2の実施形態]
図10は本発明の第2の実施形態に係るクラスタシステムの構成を示すブロック図である。図10のクラスタシステムは、N台のサーバコンピュータ30-1(#1)〜30-N(#N)から構成される。この例では、N台のサーバコンピュータ30-1(#1)〜30-N(#N)の全てで、それぞれコアサーバ31-1(#1)〜31-N(#N)とワークサーバ32-1(#1)〜32-N(#N)とが稼働する。
このように図10のクラスタシステムは、全てのサーバコンピュータ#1〜#Nでコアサーバ#1〜#Nによるクラスタ制御に加えて、ワークサーバ#1〜#Nによるクラスタシステムのサービスが実行される、最密クラスタ構成をとる。このため、サーバコンピュータ#1〜#Nには、そのサービスに必要なリソースと、それに見合ったハードウェア/ソフトウェアがに必要になるものの、サービスに関しては、N個のワークサーバ#1〜#N間(つまりシステムを構成するN台のサーバコンピュータ#1〜#N)でのフェイルオーバによる可用性の向上が期待できる。また、カーネルに関しては、N個のコアサーバ#1〜#N(つまりシステムを構成するN台のサーバコンピュータ#1〜#N)による2/3定足数アルゴリズムによる可用性の向上が期待できる。この図10のクラスタシステムの構成(最密クラスタ構成)は最大の可用性を得ることができる。但し、コンピュータ数Nが大きい構成(例えばN>16)は、カーネルの可用性が必要以上に高く設定されることになるため好ましくない。なお、コアサーバ#1〜#N及びワークサーバ#1〜#Nの構成と動作は、前記第1の実施形態におけるコアサーバ及びワークサーバと同様である。
[第3の実施形態](完全分離クラスタ構成)
図11は本発明の第3の実施形態に係るクラスタシステムの構成を示すブロック図である。図11のクラスタシステムは、N+K台のサーバコンピュータ40-1(#1)〜40-N(#N),40-(N+1)(#N+1)〜40-(N+K)(#N+K)から構成される。この例では、N台のサーバコンピュータ40-1(#1)〜40-N(#N)で、それぞれワークサーバ42-1(#1)〜42-N(#N)が稼働し、残りのK台のサーバコンピュータ40-(N+1)(#N+1)〜40-(N+K)(#N+K)でコアサーバ41-1(#1)〜41-K(#K)が稼働する。
このように図11のクラスタシステムは、ワークサーバ専用のN台のサーバコンピュータ#1〜#Nとコアサーバ専用のK台のサーバコンピュータ#N+1〜#N+Kとによる完全分離クラスタ構成をとる。このため、サーバコンピュータ#1〜#N+Kには、それぞれの役割に見合ったハードウェア/ソフトウェアが必要となる。この図11のクラスタシステムでは、サービスに関しては、N個のワークサーバ間でのフェイルオーバによる可用性の向上が期待できる。また、カーネルに関しては、K個のコアサーバ#1〜#Kによる2/3定足数アルゴリズムによる可用性の向上が期待できる。
また、図11のクラスタシステムは1つのサーバコンピュータ上でコアサーバ及びワークサーバの一方だけが稼働する完全分離クラスタ構成をとることから、ワークサーバ#1〜#Nで動いているリソースの障害が、コアサーバ#1〜#Kに影響しにくく、より信頼性の高いクラスタ構成を実現できる。また、ワークサーバ数Nが多い(N>16)システムでも、コアサーバ数Kを適切な値(4≦K≦16)に調整することにより、最適なクラスタシステムを構築できる。また完全分離クラスタ構成は、最初は少ない個数のワークサーバでクラスタシステムを構成し、順次ワークサーバを追加していく拡張性の高いクラスタシステムを構築したい場合にも適している。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
本発明の第1の実施形態に係るクラスタシステムの構成を示すブロック図。 図1のクラスタシステム内のコアサーバ及びワークサーバの構成を、コアサーバ11-1,11-4及びワークサーバ12-1について示すブロック図。 バッファ125と再送ポインタ(RP)126及び書き込みポインタ(WP)128との関係を示す図。 コアサーバ11-iが有する状態管理テーブル112-iのデータ構造例を示す図。 ワークサーバ12-1が有する状態テーブル122のデータ構造例を示す図。 ワークサーバ12-1に設けられた送信部123の動作手順を示すフローチャート。 ワークサーバ12-1に設けられた受信部124の動作手順を示すフローチャート。 コアサーバ11-1に設けられた送信部113-1の動作手順を示すフローチャート。 コアサーバ11-1に設けられた受信部114-1の動作手順を示すフローチャート。 本発明の第2の実施形態に係るクラスタシステムの構成を示すブロック図。 本発明の第3の実施形態に係るクラスタシステムの構成を示すブロック図。
符号の説明
10-1〜10-4,30-1〜30-N,40-1〜40-(N+K)…サーバコンピュータ、11-1〜11-4,31-1〜31-N,41-1〜41-K…コアサーバ、12-1〜12-4,32-1〜32-N,42-1〜42-N…ワークサーバ、21,22ネットワーク、23…クライアント端末、111-1〜111-4…同期処理部、112-1〜112-4…状態管理テーブル(第2の状態保持手段)、113-1〜113-4…送信部、114-1〜114-4…受信部、115-1〜115-4…バッファ(第2のバッファ)、116-1〜116-4…再送ポインタ(RP、第2の再送ポインタ保持手段)、117-1〜117-4…再送部(第2の再送手段)、121…切替部、122…状態テーブル(第1の状態保持手段)、123…送信部、124…受信部、125…バッファ(第2のバッファ)、126…再送ポインタ(RP、第1の再送ポインタ保持手段)、127…再送部(第1の再送手段)、128…書き込みポインタ(WP)。

Claims (7)

  1. 複数のコンピュータから構成されるクラスタシステムにおいて、
    前記クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上でそれぞれ独立動作して、クライアント端末から要求されたサービスを提供するためのサービス制御を行うワークサーバと、
    前記クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上でそれぞれ動作するコアサーバであって、他のコアサーバと互いに通信を行いながら同期して前記ワークサーバを制御することにより、他のコアサーバと一体となって1つのカーネルとして一貫性のあるクラスタ制御を行うコアサーバとを具備し
    前記ワークサーバは、
    当該ワークサーバと接続されるコアサーバを切り替える切替手段と、
    当該ワークサーバから当該ワークサーバと接続されているコアサーバに送信されたデータが当該コアサーバで受信された結果、当該コアサーバから返される受信応答を受信する第1の受信手段と、
    当該ワークサーバと接続されているコアサーバから当該ワークサーバに送信されたデータが当該ワークサーバで受信された場合に、当該コアサーバに受信応答を返す第1の送信手段と、
    当該ワークサーバと接続されているコアサーバに対して当該ワークサーバから送信されたデータを格納するための第1のバッファと、
    前記切替手段により当該ワークサーバと接続されるコアサーバが切り替えられた場合、前記第1のバッファに格納されているデータのうち、前記切替手段による切り替え前に当該ワークサーバと接続されていたコアサーバから受信応答が返されなかったために当該コアサーバが確かに受信したと確認できないデータを、前記切替手段により当該ワークサーバと新たに接続されたコアサーバに再送する第1の再送手段とを備え、
    前記コアサーバは、
    当該コアサーバから当該コアサーバと接続されているワークサーバに送信されたデータが当該ワークサーバで受信された結果、当該ワークサーバから返される受信応答を受信する第2の受信手段と、
    当該コアサーバと接続されているワークサーバから当該コアサーバに送信されたデータが当該コアサーバで受信された場合に、当該ワークサーバに受信応答を返す第2の送信手段と、
    当該コアサーバから当該コアサーバと接続されているワークサーバにデータが送信される際に、当該データを他のコアサーバに通知する同期処理手段であって、当該ワークサーバから返される受信応答が前記第2の受信手段で受信された場合に、当該受信応答を他のコアサーバに通知する同期処理手段と、
    前記ワークサーバ毎に設けられ、対応するワークサーバに対して当該コアサーバから送信されたデータ及び他のコアサーバの同期処理手段から通知されたデータを格納するための第2のバッファと、
    当該コアサーバが新たにワークサーバと当該ワークサーバ内の前記切替手段により接続された場合、当該ワークサーバに対応する前記第2のバッファに格納されているデータのうち、前記切替手段による切り替え前に当該ワークサーバと接続されていたコアサーバから当該ワークサーバに送信されたものの、当該ワークサーバから受信応答が返されなかったために当該ワークサーバが確かに受信したと確認できないデータを当該ワークサーバに再送する第2の再送手段とを備えている
    ことを特徴とするクラスタシステム。
  2. 前記ワークサーバは、
    前記第1の再送手段による再送の対象となるデータのうち、最も古いデータが格納されている前記第1のバッファ内の位置を指し示す第1の再送ポインタ情報を保持する第1の再送ポインタ手段と、
    当該ワークサーバから当該ワークサーバと接続されているコアサーバに対して送信されたデータに対する受信応答が当該コアサーバから返された場合に、当該コアサーバが当該データを確かに受信したと確認できたとして前記第1の再送ポインタ情報を更新する第1の再送ポインタ更新手段とを更に備え、
    前記コアサーバは、
    前記第2の再送手段による再送の対象となるデータのうち、最も古いデータが格納されている前記第2のバッファ内の位置を指し示す第2の再送ポインタ情報を保持する第2の再送ポインタ手段と、
    当該コアサーバから当該コアサーバと接続されているワークサーバに対して送信されたデータに対する受信応答が当該ワークサーバから当該コアサーバに返された場合と、他のコアサーバから当該ワークサーバに対して送信されたデータに対する受信応答が当該ワークサーバから前記他のコアサーバに返された結果、当該受信応答が前記他のコアサーバの同期化処理手段から当該コアサーバに通知された場合に、当該ワークサーバが当該データを確かに受信したと確認できたとして前記第2の再送ポインタ情報を更新する第2の再送ポインタ更新手段とを更に備えている、
    ことを特徴とする請求項1記載のクラスタシステム。
  3. 前記ワークサーバは、当該ワークサーバにおけるサービスの状態を各サービス毎に保持する第1の状態保持手段を更に備え、
    前記コアサーバは、
    前記クラスタシステム内の全てのワークサーバにおけるサービスの状態を各サービス毎に保持する第2の状態保持手段と、
    当該コアサーバが他のコアサーバと一体となって1つのカーネルとして再起動される際に、当該コアサーバと接続されている前記ワークサーバの第1の状態保持手段に保持されている情報を収集して前記第2の状態保持手段の内容を復元する手段とを更に備えている
    ことを特徴とする請求項1記載のクラスタシステム。
  4. 複数のコンピュータから構成されるクラスタシステムであって、当該クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上では、クライアント端末から要求されたサービスを提供するためのサービス制御を行うワークサーバがそれぞれ独立に動作し、前記クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上ではそれぞれクラスタ制御を行うコアサーバが他のコアサーバと互いに通信を行いながら同期して動作して前記ワークサーバを制御することにより、他のコアサーバと一体となって1つのカーネルとして一貫性のあるクラスタ制御を行うクラスタシステムにおいて、前記ワークサーバを実現するためのサーバプログラムであって、
    前記ワークサーバが動作するコンピュータに、
    当該ワークサーバと接続されているコアサーバに対して当該ワークサーバからデータを送信した場合に、当該データをバッファに格納するステップと、
    当該ワークサーバから当該ワークサーバと接続されているコアサーバに送信されたデータが当該コアサーバで受信された結果、当該コアサーバから受信応答が返された場合、当該受信応答を受信するステップと、
    当該ワークサーバと接続されるコアサーバを切り替えるステップと、
    当該ワークサーバと接続されるコアサーバが切り替えられた場合、前記バッファに格納されているデータのうち、切り替え前に当該ワークサーバと接続されていたコアサーバから受信応答が返されなかったために当該コアサーバが確かに受信したと確認できないデータを、新たに接続されたコアサーバに再送するステップと
    を実行させるためのサーバプログラム。
  5. 前記ワークサーバが動作するコンピュータに、
    当該ワークサーバと接続されているコアサーバから送信されたデータを受信した場合に、当該コアサーバに受信応答を返すステップと、
    当該ワークサーバから当該ワークサーバと接続されているコアサーバに対して送信されたデータが当該コアサーバで受信された結果、当該コアサーバから当該ワークサーバに受信応答が返された場合に、当該コアサーバが当該データを確かに受信したと確認できたとして、再送の対象となるデータのうち、最も古いデータが格納されている前記バッファ内の位置を指し示す再送ポインタを更新するステップと
    を更に実行させるための請求項4記載のサーバプログラム。
  6. 複数のコンピュータから構成されるクラスタシステムであって、当該クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上では、クライアント端末から要求されたサービスを提供するためのサービス制御を行うワークサーバがそれぞれ独立に動作し、前記クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上ではそれぞれクラスタ制御を行うコアサーバが他のコアサーバと互いに通信を行いながら同期して動作して前記ワークサーバを制御することにより、他のコアサーバと一体となって1つのカーネルとして一貫性のあるクラスタ制御を行うクラスタシステムにおいて、前記コアサーバを実現するためのサーバプログラムであって、
    前記コアサーバが動作するコンピュータに、
    当該コアサーバと接続されているワークサーバに対して当該コアサーバからデータを送信する際に、当該データを他のコアサーバに通知するステップと、
    当該コアサーバと接続されているワークサーバに対して当該コアサーバからデータを送信した場合と、前記他のコアサーバから当該ワークサーバに対して送信されたデータが前記他のコアサーバから当該コアサーバに通知された場合に、当該データを当該ワークサーバに対応して設けられたバッファに格納するステップと、
    当該コアサーバから当該コアサーバと接続されているワークサーバに送信されたデータが当該ワークサーバで受信された結果、当該ワークサーバから当該コアサーバに返される受信応答を受信するステップと、
    前記ワークサーバから当該コアサーバに返される受信応答を受信した場合に、当該受信応答を他のコアサーバに通知するステップと、
    当該コアサーバが新たにワークサーバと接続された場合、当該ワークサーバに対応する前記バッファに格納されているデータのうち、それ以前に当該ワークサーバと接続されていたコアサーバから当該ワークサーバに送信されたものの、当該ワークサーバから受信応答が返されなかったために当該ワークサーバが確かに受信したと確認できないデータを当該ワークサーバに再送するステップと
    を実行させるためのサーバプログラム。
  7. 前記コアサーバが動作するコンピュータに、
    当該コアサーバと接続されているワークサーバから送信されたデータを受信した場合に、当該ワークサーバに受信応答を返すステップと、
    当該コアサーバと接続されているワークサーバに対して送信されたデータに対する受信応答が当該ワークサーバから当該コアサーバに返された場合と、他のコアサーバから当該ワークサーバに対して送信されたデータに対する受信応答が当該ワークサーバから前記他のコアサーバに返された結果、当該受信応答が前記他のコアサーバから当該コアサーバに通知された場合に、当該ワークサーバが当該データを確かに受信したと確認できたとして、再送の対象となるデータのうち、最も古いデータが格納されている前記バッファ内の位置を指し示す再送ポインタを更新するステップと
    を更に実行させるための請求項6記載のサーバプログラム。
JP2003290264A 2003-08-08 2003-08-08 クラスタシステム及びサーバプログラム Expired - Lifetime JP3884417B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003290264A JP3884417B2 (ja) 2003-08-08 2003-08-08 クラスタシステム及びサーバプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003290264A JP3884417B2 (ja) 2003-08-08 2003-08-08 クラスタシステム及びサーバプログラム

Publications (2)

Publication Number Publication Date
JP2005063033A JP2005063033A (ja) 2005-03-10
JP3884417B2 true JP3884417B2 (ja) 2007-02-21

Family

ID=34368346

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003290264A Expired - Lifetime JP3884417B2 (ja) 2003-08-08 2003-08-08 クラスタシステム及びサーバプログラム

Country Status (1)

Country Link
JP (1) JP3884417B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8082289B2 (en) * 2006-06-13 2011-12-20 Advanced Cluster Systems, Inc. Cluster computing support for application programs
JP4576452B2 (ja) * 2008-11-06 2010-11-10 イーソル株式会社 オペレーティングシステムおよび情報処理装置
JP4957853B1 (ja) * 2011-03-15 2012-06-20 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体

Also Published As

Publication number Publication date
JP2005063033A (ja) 2005-03-10

Similar Documents

Publication Publication Date Title
CN100591031C (zh) 实现高可用性光纤信道交换机的方法和装置
US7996517B2 (en) Transparent network connection takeover
US8078716B2 (en) Distributed kernel operating system
US6871296B2 (en) Highly available TCP systems with fail over connections
US9185054B2 (en) System and method for providing zero buffer copying in a middleware machine environment
US8014274B1 (en) Selective replay of state information within a computing device
US8667184B2 (en) Distributed kernel operating system
US20030014684A1 (en) Connection cache for highly available TCP systems with fail over connections
Adya et al. Thialfi: a client notification service for internet-scale applications
US20050055418A1 (en) Method to manage high availability equipments
US20130117348A1 (en) System and Method for Scalable Data Distribution
US20060242297A1 (en) Database cluster systems and methods for maintaining client connections
US20100014418A1 (en) Connection recovery device, method and computer-readable medium storing therein processing program
US11573832B2 (en) Highly ordered transaction processing
US20080310444A1 (en) Group Communication System Achieving Efficient Total Order and State Synchronization in a Multi-tier Environment
CN111787079A (zh) 基于通信群组的通信方法、装置、服务器、系统及介质
EP2616967B1 (en) System including a middleware machine environment
JP3884417B2 (ja) クラスタシステム及びサーバプログラム
JP2006235837A (ja) 負荷分散システム、負荷分散装置管理サーバ、負荷分散装置の切り替え方法及びプログラム
CN111835684B (zh) 一种haproxy设备的网络隔离监控方法及系统
Friedman et al. Using group communication technology to implement a reliable and scalable distributed in coprocessor
JP3910967B2 (ja) 2重化システム及び多重化制御方法
CN114885007A (zh) 用于实时的强一致性会话同步的方法和电子设备
JP4123440B2 (ja) オブジェクト指向のネットワーク分散型コンピューティングシステム、その負荷分散装置及びサーバ
CN118093155A (zh) 集群系统的控制方法、集群系统及存储介质

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060515

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061116

R151 Written notification of patent or utility model registration

Ref document number: 3884417

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20101124

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101124

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111124

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111124

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121124

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131124

Year of fee payment: 7

EXPY Cancellation because of completion of term