JP2004264911A - 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム - Google Patents

計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム Download PDF

Info

Publication number
JP2004264911A
JP2004264911A JP2003042104A JP2003042104A JP2004264911A JP 2004264911 A JP2004264911 A JP 2004264911A JP 2003042104 A JP2003042104 A JP 2003042104A JP 2003042104 A JP2003042104 A JP 2003042104A JP 2004264911 A JP2004264911 A JP 2004264911A
Authority
JP
Japan
Prior art keywords
node
address
real
virtual
packet
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
JP2003042104A
Other languages
English (en)
Other versions
JP4021780B2 (ja
Inventor
Kazuhiro Suzuki
和宏 鈴木
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003042104A priority Critical patent/JP4021780B2/ja
Priority to PCT/JP2004/001882 priority patent/WO2004075070A1/ja
Publication of JP2004264911A publication Critical patent/JP2004264911A/ja
Priority to US11/134,822 priority patent/US7499451B2/en
Application granted granted Critical
Publication of JP4021780B2 publication Critical patent/JP4021780B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2521Translation architectures other than single NAT servers
    • H04L61/2525Translation at a client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2592Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】クラスタシステム内の計算機ノードを隠蔽し仮想化することで、計算機ノード故障等の構成の変化に柔軟に対応できる計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラムを提供することを目的とする。
【解決手段】クライアント5に対して複数の仮想的な計算機ノードを提供するクラスタシステム1であって、アプリケーションを実行する実ノード3a,3b,3cと、仮想的な計算機ノードのIPアドレスである仮想IPアドレスを実ノードのIPアドレスである実IPアドレスに割り当てるコーディネータノード2とを備え、実ノード3a,3b,3cとコーディネータノード2は、仮想IPアドレスと実IPアドレスとの対応表であるIP管理テーブルを記憶し、IP管理テーブルに基づいて仮想IPアドレスを用いた通信を行う。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、ネットワーク上の計算機をノードとし、複数のノードを1つのシステムとして動作させるクラスタシステムにおいて、ノード故障などの構成の変化に柔軟に対応できる計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラムに関するものである。
【0002】
【従来の技術】
クラスタシステムは、複数のノードを動作させて同一作業目的の処理を実行させることにより、単体のノードでは限界であった処理能力や信頼性を向上させるシステムである。一般的にクラスタシステムには、フェイルオーバー型とロードバランシング型とHPC(High Performance Computing)型の3通りが存在する。
【0003】
まず、フェイルオーバー型について説明する。フェイルオーバー型では、2台またはそれ以上のノードを動作させ、何らかの原因で動作不能になった場合に、バックアップとして待機させていた他のノードがその処理を引き継ぐことによってHA(High Availability)を向上させる。
【0004】
次に、ロードバランシング型について説明する。ロードバランシング型では、WWW(World Wide Web)やFTP(File Transfer Protocol)サーバなどのサーバを多重化して、スケーラビリティを実現する。具体的には、1つのロードバランサに対するIPレベルのセッションを、背後に控える複数のサービスノードに割り振ることにより、1つのノードの負荷分散を行う。割り振る方法にはいくつかあるが、順番に処理を割り振るラウンドロビン型やサービスノードやネットワークトラフィックの負荷を監視しながら負荷の少ないサービスノードに処理を割り振るダイナミックなロードバランサなどの構成を取ることが多い。
【0005】
次に、HPC型について説明する。HPC型では、複数のノードが強調動作することによって並列処理アプリケーションを高速に実行する。ノード間のインターコネクトのデータ転送帯域が狭いとそこがボトルネックとなって全体の処理能力が低下するために、ギガビットEthernetやMyrinetなどの高速なインターフェースで接続されることがある。並列処理アプリケーション作成にはMPI(Message Passing Interface)やPVM(Parallel Virtual Machine)等のライブラリがあり、これらは数値演算ライブラリと合わせて学術研究分野で利用されている。
【0006】
【発明が解決しようとする課題】
しかしながら、上述のクラスタシステムにおいて、ユーザアプリケーションはノード上で直接実行される。そのため、ノードの故障や構成の変化に柔軟に対応することができないという問題があり、例えば、ユーザアプリケーション毎にノード故障などの対応を行う必要があった。
【0007】
本発明は上述した課題に鑑みてなされたものであり、ユーザアプリケーションにクラスタシステム内のノードを直接操作させないように、ノードを隠蔽し仮想化することで、ユーザアプリケーションを変更すること無く、ノード故障などの構成の変化に柔軟に対応できる計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラムを提供することを目的とする。
【0008】
【課題を解決するための手段】
上述した課題を解決するために、本発明は、クライアントに対して少なくとも1つの仮想的な計算機ノードを提供するクラスタシステムにおける物理的な計算機ノードであって、前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスと前記物理的な計算機ノードのIPアドレスである実IPアドレスとの対応表であるIP管理テーブルを記憶し、該IP管理テーブルに基づいて仮想IPアドレスを用いた通信を行うIP層と、他の計算機ノードと前記クライアントにネットワークを介して接続するネットワークデバイスとを備えてなるものである。
【0009】
このような構成によれば、クラスタシステムの計算機ノードが共通のIP管理テーブルを備えることにより、クラスタシステムにおいて仮想IPアドレスを用いた通信を行うことができる。
【0010】
また、本発明に係る計算機ノードにおいて、さらに、前記クライアントから指示されたアプリケーションを実行するアプリケーション実行部を備えたことを特徴とするものである。
【0011】
このような構成によれば、アプリケーションを実行する計算機ノードをクライアントから隠蔽し、仮想的な計算機ノードとして動的に割り当てることにより、高可用性のクラスタシステムを提供することができる。
【0012】
また、本発明に係る計算機ノードにおいて、前記IP層は、前記アプリケーション実行部から仮想IPアドレスを宛先とする第1のIPヘッダを付けた第1のパケットが入力された場合、宛先の仮想IPアドレスに対応する実IPアドレスを前記IP管理テーブルを用いて検索し、検索した実IPアドレスを宛先とする第2のIPヘッダを前記第1のパケットにさらに付けるカプセル化を施し、得られた第2のパケットを前記ネットワークデバイスへ出力するカプセル化部と、前記ネットワークデバイスから実IPアドレスを宛先とする第3のIPヘッダを付けた第3のパケットが入力された場合、前記第3のパケットから前記第3のIPヘッダを外して第4のパケットを生成し、さらに仮想IPアドレスを宛先とする第4のIPヘッダの仮想IPアドレスが自らの計算機ノードの仮想IPアドレスであれば、得られた前記第4のパケットを前記アプリケーション実行部へ出力するカプセル解除部とを備えたことを特徴とするものである。
【0013】
このような構成によれば、計算機ノードは、共通のIP管理テーブルに従って仮想IPアドレスと実IPアドレスを変換することにより、仮想的な計算機ノード間の通信を実現することができる。
【0014】
また、本発明に係る計算機ノードにおいて、さらに、前記ネットワークデバイスと同様に扱われ、自らの計算機ノードの仮想IPアドレスを宛先とするパケットを前記IP層へ出力するトンネルデバイスを備えたことを特徴とするものである。
【0015】
このような構成によれば、IP層は実IPアドレスを宛先とするパケットと同様に、仮想IPアドレスを宛先とするパケットの処理を行うことができる。
【0016】
また、本発明に係る計算機ノードにおいて、さらに、他の計算機ノードの負荷状態を検出する負荷状態検出部と、前記負荷状態に基づいて前記仮想IPアドレスに前記実IPアドレスを割り当て、前記IP管理テーブルを作成するノード割り当て部と、前記IP管理テーブルを他の計算機ノードへブロードキャストするブロードキャスト部とを備え、前記IP層は、前記クライアントに対して前記仮想IPアドレスを提供する仮想ノード提供部と、前記ネットワークデバイスから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを前記ネットワークデバイスへ出力するパケット割り振り部とを備えたことを特徴とするものである。
【0017】
このような構成によれば、クラスタシステムにおいて、他の計算機ノードの負荷状態や故障等に応じて仮想IPアドレスを実IPアドレスへ割り振ることにより、クライアントが計算機ノードのIPアドレスを変更することなく、計算機ノードの負荷の変化や計算機ノードの故障に柔軟に対応でき、高可用性を実現することができる。
【0018】
また、本発明に係る計算機ノードにおいて、前記パケット割り振り部は、前記ネットワークデバイスから前記仮想IPアドレスを宛先とする第1のIPヘッダを付けた第1のパケットが入力された場合、検索した実IPアドレスを宛先とする第2のIPヘッダを前記第1のパケットにさらに付けるカプセル化を施し、得られた第2のパケットを前記ネットワークデバイスへ出力することを特徴とするものである。
【0019】
このような構成によれば、計算機ノードは、共通のIP管理テーブルに従って仮想IPアドレスと実IPアドレスを変換することにより、仮想的な計算機ノードに対する通信を実現することができる。
【0020】
また、本発明に係る計算機ノードにおいて、前記仮想ノード提供部は、前記ネットワークデバイスに対して実IPアドレスと異なる少なくとも1つのIPアドレスを割り当てることを特徴とするものである。
【0021】
このような構成によれば、複数の仮想的なノードに対する要求を受け付け、物理的な計算機ノードに割り振ることができる。
【0022】
また、本発明に係る計算機ノードにおいて、前記ノード割り当て部は、1つの仮想IPアドレスに対して複数の実IPアドレスを割り当てることを特徴とするものである。
【0023】
このような構成によれば、仮想的な計算機ノードを用いてロードバランシング型のクラスタシステムを構成することが可能となる。
【0024】
また、本発明に係る計算機ノードにおいて、前記ノード割り振り部は、クライアントから前記1つの仮想IPアドレスに対して要求がある度に、要求を転送する実IPアドレスを変化させることを特徴とするものである。
【0025】
このような構成によれば、仮想的な計算機ノードに対してクライアントから大量のリクエストを受けた場合でも、物理的な計算機ノードの負荷を分散させることができる。
【0026】
また、本発明に係る計算機ノードにおいて、前記ブロードキャスト部は、前記IP管理テーブルのうち更新されたエントリだけを他の計算機ノードへブロードキャストすることを特徴とするものである。
【0027】
このような構成によれば、IP管理テーブルに関するデータの転送量を低減することができる。
【0028】
また、本発明に係る計算機ノードにおいて、前記ブロードキャスト部は、前記IP管理テーブルのうち他の計算機ノードから要求されたエントリだけを要求した計算機ノードだけへ送信することを特徴とするものである。
【0029】
このような構成によれば、IP管理テーブルに関するデータの転送量を低減することができる。
【0030】
また、本発明は、クライアントに対して複数の仮想的な計算機ノードのサービスを提供するクラスタシステムであって、アプリケーションを実行する計算機ノードである少なくとも1つの実ノードと、前記仮想IPアドレスを前記実ノードの実IPアドレスに割り当てる計算機ノードである少なくとも1つのコーディネータノードとを備えたことを特徴とするものである。
【0031】
このような構成によれば、コーディネータノードが実ノードの負荷状態や故障等に応じて仮想IPアドレスを実IPアドレスへ割り振ることにより、クライアントが実ノードのIPアドレスを変更することなく、ノードの負荷の変化やノードの故障に柔軟に対応でき、高可用性を実現することができる。
【0032】
また、本発明に係るクラスタシステムにおいて、前記コーディネータノードは、前記IP管理テーブルを前記実ノードへ送信し、該実ノードは、前記IP管理テーブルを受信したことを前記コーディネータノードへ送信することを特徴とするものである。
【0033】
このような構成によれば、コーディネータノードは、実ノードへ確実にIP管理テーブルを配信することができる。
【0034】
また、本発明は、クライアントに対して少なくとも1つの仮想的な計算機ノードを提供し、前記クライアントから指示されたアプリケーションを実際に実行する計算機ノードである少なくとも1つの実ノードの管理を行うクラスタ管理方法であって、前記実ノードと前記クライアントにネットワークを介して接続するステップと、前記クライアントに対して前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスを提供するステップと、前記実ノードの負荷状態を検出するステップと、前記負荷状態に基づいて前記仮想IPアドレスに対して前記実ノードのIPアドレスである実IPアドレスを割り当て、前記IP管理テーブルを作成するステップと、前記IP管理テーブルを前記実ノードへブロードキャストするステップと、ネットワークを介して前記クライアントから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを、ネットワークを介して宛先の実ノードへ出力するステップとを備えてなるものである。
【0035】
このような構成によれば、コーディネータノードが実ノードの負荷状態や故障等に応じて仮想IPアドレスを実IPアドレスへ割り振ることにより、クライアントが実ノードのIPアドレスを変更することなく、ノードの負荷の変化やノードの故障に柔軟に対応でき、高可用性を実現することができる。
【0036】
また、本発明は、クライアントに対して少なくとも1つの仮想的な計算機ノードを提供し、前記クライアントから指示されたアプリケーションを実際に実行する計算機ノードである少なくとも1つの実ノードの管理を行うために、コンピュータにより読取可能な媒体に記憶されたクラスタ管理プログラムであって、前記実ノードと前記クライアントにネットワークを介して接続するステップと、前記クライアントに対して前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスを提供するステップと、前記実ノードの負荷状態を検出するステップと、前記負荷状態に基づいて前記仮想IPアドレスに対して前記実ノードのIPアドレスである実IPアドレスを割り当て、前記IP管理テーブルを作成するステップと、前記IP管理テーブルを前記実ノードへブロードキャストするステップと、ネットワークを介して前記クライアントから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを、ネットワークを介して宛先の実ノードへ出力するステップとをコンピュータに実行させることを特徴とするものである。
【0037】
このような構成によれば、コーディネータノードが実ノードの負荷状態や故障等に応じて仮想IPアドレスを実IPアドレスへ割り振ることにより、クライアントが実ノードのIPアドレスを変更することなく、ノードの負荷の変化やノードの故障に柔軟に対応でき、高可用性を実現することができる。
なお、本発明において、上記コンピュータにより読取り可能な媒体は、CD−ROMやフレキシブルディスク、DVDディスク、光磁気ディスク、ICカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
【0038】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。
実施の形態1.
本実施の形態では、本発明のクラスタシステムをrsh(remote shell)モードで使う場合について説明する。rshモードでは、1つのアプリケーションの実行を1つの実ノードで行う。
【0039】
まず、本実施の形態に係るクラスタシステムの構成について、図1を用いて説明する。図1は、本実施の形態に係るクラスタシステムの構成の一例を示すブロック図である。図1に示すように、本実施の形態に係るクラスタシステム1は、コーディネータノード2と実ノード3a,3b,3cから構成される。各ノードは、ネットワーク4を介して互いに接続されると共に、ネットワーク4を介してクライアント5と接続される。
【0040】
本実施の形態に係るクラスタシステムでは、ユーザアプリケーションにクラスタ内のノードを直接操作することを禁止する。これは仮想的な計算機ノードである仮想ノードだけをクライアント5に提供し、実際にアプリケーションを実行する物理的な計算機ノードである実ノードを隠蔽することにより実現される。コーディネータノードとは、クライアントからの要求や実ノードの負荷状態等に応じて、実ノードに対して仮想ノードやアプリケーション実行の割り当てを行う計算機ノードである。実ノードは、コーディネータノードの割り当てに従って、実際にアプリケーションを実行する。アプリケーションが終了すると、実ノードは解放されて、仮想ノードとアプリケーション実行の割り当てが解除される。
【0041】
次に、本実施の形態に係るコーディネータノードの機能について、図2を用いて説明する。図2は、本実施の形態に係るコーディネータノードの機能の一例を示すブロック図である。図2に示すように、本実施の形態に係るコーディネータノード2は、階層モデルにおけるIP(Internet Protocol)層に注目して見た場合に大きく分けて、下位層に属するNIC21(Network Interface Card)と、IP層22と、上位層に属するコーディネータ23から構成される。NIC21は、ネットワークデバイス211から構成される。IP層22は、IP処理部221と仮想ノード提供部222とパケット割り振り部223から構成される。コーディネータ23は、負荷状態検出部231とノード割り当て部232とブロードキャスト部233から構成される。
【0042】
次に、本実施の形態に係るコーディネータノードの動作について説明する。負荷状態検出部231は、各実ノード3a,3b,3cの負荷状態を検出する。負荷状態とは、今現在、どんなプロセスがどれだけのCPUの使用率で動いているかを示すものである。
【0043】
ノード割り当て部232は、IP管理テーブルにおいて仮想的なIPアドレスである仮想IPアドレス(VIP:Virtual IP Address)を設定し、外部からノード割り当て要求を受けた場合に、各実ノード3a,3b,3cの負荷状態に基づいて、VIPを実ノードの実際のIPアドレスである実IPアドレス(RIP:Real IP Address)に割り当て、IP管理テーブルを生成する。また、必要に応じてIP管理テーブルを更新する。IP管理テーブルとは、VIPからRIPを検索するための対応表のことである。
【0044】
ブロードキャスト部233は、IP管理テーブルが更新された場合に、IP管理テーブルを全ての実ノード3a,3b,3cへブロードキャストする。ここでは、一例としてIP管理テーブルの更新時にのみIP管理テーブルをブロードキャストするとしたが、IP管理テーブルにおいて変更されたエントリのみをブロードキャストするようにしても良い。また、IP管理テーブルのうち、実ノードから要求されたエントリを送信するようにしても良い。さらに、コーディネータノード2が、IP管理テーブルが確実に届いているかを確認するために、実ノードはIP管理テーブルを受け取ったことを示す情報をコーディネータノード2へ返すようにしても良い。
【0045】
仮想ノード提供部222は、IP管理テーブルに設定されたVIPを仮想ノードとしてクライアント5へ提供する。クライアント5に対してVIPを見せるために、1つのネットワークデバイス211に複数のVIPを割り当てる。
【0046】
IP処理部221は、従来のIP層と同様、上位層または下位層から入力されたIPパケットのフィルタリングやルーティングを行う。ネットワークデバイス211からIPパケットが入力された場合、IPパケットが自ノード宛ならば上位層に渡し、そうでなければ適切なネットワークへ転送するために再びネットワークデバイス211へ出力する。反対に、上位層からIPパケットが入力された場合、同じく適切なネットワークへ送信するためにネットワークデバイス211へ出力する。また、本発明のIP処理部221は、さらにVIPヘッダを持つIPパケットがネットワークデバイス211から入力された場合、パケット割り振り部223へ出力する。ここで、RIPを宛先とするIPヘッダをRIPヘッダ、VIPを宛先とするIPヘッダをVIPヘッダと呼ぶ。
【0047】
パケット割り振り部223は、仮想ノード提供部222により提供されたVIP宛に到達したIPパケットの処理を行う。まず、パケット割り振り部223は、IP処理部221からVIPヘッダを持つIPパケットが入力された場合、IP管理テーブルを用いてVIPからRIPを検索し、実際にパケットを送信する宛先の実ノードのRIPを得る。次に、パケット割り振り部223は、図3(a)に示すように、VIPヘッダを持つIPパケットにさらにRIPヘッダを付けることによりカプセル化する。カプセル化したIPパケットは、IP処理部221へ出力され、ネットワークデバイス211を介して外部のRIP宛に送信される。
【0048】
ネットワークデバイス211は、外部のクライアント5と各ノードへネットワーク4を介して接続されている。外部から受信したパケットをIP処理部221へ出力するとともに、IP処理部221から入力されたパケットを外部へ送信する。
【0049】
次に、IP層であるIP処理部221とパケット割り振り部223の実装例について説明する。まず、仮想ノード提供部222の実装例について説明する。ここではIPエイリアスと呼ばれる機構を使う。IPエイリアスはLinuxカーネルで標準サポートされており、コマンド「# ifconfig eth0:0 192.168.1.100」によって他のIPアドレスを割り当てることができる。“:”以降の数字を変更すれば複数のIPアドレスを割り当てることも可能である。この機能を用いてVIPを割り当てる。
【0050】
次に、IP処理部221とパケット割り振り部223の実装例について説明する。図4は、IP層の実装の一例を示すブロック図である。Linuxカーネル2.4にはパケットフィルタリングの機構が組み込まれている。これはnetfilterと呼ばれ、カーネル内でのIPパケット処理を行うコードの拡張性を提供するためのフレームワークである。ここではLinuxのIP層におけるnetfilterの機能を用いてIP処理部221を実現する。netfilter7は、下位層8と上位層9に接続されている。
【0051】
ここで、従来のnetfilterの具体的な動作について説明する。下位層8が受信したパケットは、NF_IP_PRE_ROUTING71を介してrouting72に送られ、他のノードへ転送するパケットであれば、NF_IP_FORWARD74へ送られ、そうでなければ、NF_IP_LOCAL_IN73へ送られる。NF_IP_FORWARD74へ送られたIPパケットは、NF_IP_POST_ROUTING77を介して下位層8へ送られ、他のノードへ送信される。一方、NF_IP_LOCAL_IN73へ送られたパケットは上位層9へ送られる。
【0052】
上位層9からのIPパケットは、NF_IP_LOCAL_OUT75を介してrouting76に送られ、さらにNF_IP_POST_ROUTING77を介して下位層8へ送られ、他のノードへ送信される。以上のnetfilter7により、IP処理部221は実現される。
【0053】
また、パケット割り振り部223は、図4で説明したnetfilterの機能を拡張することにより実現することができる。netfilter7は、NF_IP_PRE_ROUTING71,NF_IP_LOCAL_IN73,NF_IP_FORWARD74,NF_IP_LOCAL_OUT75,NF_IP_POST_ROUTING77の部分でそれぞれフック関数を呼び出す仕組みを提供する。これらには関数を登録するためのリストが用意され、「intnf_register_hook(struct nf_hook_ops*reg)」のインターフェースによって登録することができ、「int nf_unregister_hook(struct nf_hook_ops*reg)」のインターフェースによって削除することができる。ここで、struct nf_hook_ops型の構造体はフック関数を登録するためのものである。本実施の形態では、NF_IP_LOCAL_IN73にパケット割り振り部223の動作をフック関数として登録することにより、パケット割り振り部223を実現することができる。
【0054】
また、パケット割り振り部223におけるカプセル化はIPトンネリング機能を応用して実装することができる。RIP宛のIPパケットのプロトコルはIPPROTO IPIPに設定する。これはIPトンネリングプロトコルと呼ばれ、パケットがカプセル化されていることを示すためのものである。
【0055】
次に、本実施の形態に係る実ノードの機能について、図5を用いて説明する。図5は、本実施の形態に係る実ノードの機能の一例を示すブロック図である。図3に示すように、本実施の形態に係る実ノード3a,3b,3cは、階層モデルにおけるIP層に注目して見た場合に大きく分けて、下位層に属するNIC31と、IP層32と、上位層に属するアプリケーション実行部33から構成される。NIC31は、ネットワークデバイス311とトンネルデバイス312から構成される。IP層32は、IP処理部321とカプセル解除部322とカプセル化部323から構成される。
【0056】
次に、本実施の形態に係る実ノードの動作について説明する。アプリケーション実行部31はアプリケーションの実行ファイルを備えており、コーディネータノード2を介してクライアント5から受信したパケットの内容に従ってアプリケーションの実行を行い、実行結果をパケットとしてIP層へ渡す。この時、クライアント5に対して実行結果を送信する場合は通常通りパケットにクライアント宛のヘッダを付加し、他の実ノードと通信を行う場合はパケットにVIPヘッダを付加する。
【0057】
IP処理部321は、従来のIP層やIP処理部221と同様、上位層または下位層から入力されたIPパケットのフィルタリングやルーティングを行う。本発明のIP処理部321は、さらに、下位層からRIPヘッダを持つIPパケットが入力された場合、カプセル解除部322へ出力する。また、上位層からVIPヘッダを持つIPパケットが入力された場合、カプセル化部323へ出力する。
【0058】
カプセル解除部322は、IP処理部321からRIPヘッダを持つIPパケットが入力されると、図3(b)に示すように、IPパケットからRIPヘッダを外す。この時、カプセル化されたIPパケットがIPトンネリングプロトコルであるために、VIPヘッダを持つIPパケットを、IP処理部321を介してトンネルデバイス312へ出力する。
【0059】
カプセル化部323は、IP処理部321からVIPヘッダを持つIPパケットが入力されると、コーディネータノード2からブロードキャストされたIP管理テーブルを用いてVIPからRIPを検索し、実際にパケットを送信する宛先の実ノードのRIPを得る。次に、カプセル化部323は、図3(a)に示すように、VIPヘッダを持つIPパケットにさらにRIPヘッダを付けることによりカプセル化する。カプセル化したIPパケットは、IP処理部321とネットワークデバイス311を介してRIP宛に送信される。
【0060】
ネットワークデバイス311は、ネットワークデバイス211と同様であり、外部のクライアント5と各ノードへネットワーク4を介して接続されている。外部から受信したパケットをIP処理部321へ出力するとともに、IP処理部321から入力されたパケットを外部へ送信する。
【0061】
トンネルデバイス312は、IP処理部321からVIPヘッダを持つIPパケットが入力されると、そのままIP処理部321へ出力する。カプセル解除されたIPパケットの宛先はVIPであるため、自ノードのトンネルデバイス312が受け取って、再びIP処理部321へ入力される。IP処理部321は、トンネルデバイス312からのVIPヘッダを持つIPパケットをアプリケーション実行部33へ出力する。
【0062】
ここで、IP層であるIP処理部321とカプセル解除部322とカプセル化部323の実装例について説明する。IP処理部221と同様、LinuxのIP層におけるnetfilterの機能を用いてIP処理部321を実現し、さらに、NF_IP_LOCAL_IN73にカプセル解除部322の動作をフック関数として登録し、NF_IP_LOCAL_OUT75にカプセル化部323の動作をフック関数として登録することにより、カプセル解除部322とカプセル化部323を実現することができる。
【0063】
また、カプセル解除部322とカプセル化部323はIPトンネリング機能を応用して実装することができる。IPトンネリングによってIPパケットをIPヘッダでカプセル化することによって、カプセル化されたパケットに関わらず正しい転送先に送出することができる。ここでRIP宛のIPパケットのプロトコルはIPPROTO_IPIPに設定する。
【0064】
IPトンネリングではNAT(Network Address Translation)等のアドレス変換と異なり、クライアント5からのリクエストに対して直接応答を返すことができる。以上のように、トンネルデバイス312を全ての実ノード3a,3b,3cに実装し、コーディネータノード2と全ての実ノード3a,3b,3cが同じIP管理テーブルを備えることで、VIPレベルでの通信を実現することができ、実ノード間通信が可能となる。
【0065】
次に、rshモードの動作について、図6を用いて説明する。図6は、本実施の形態に係るクラスタシステムのrshモードにおける動作の一例を示すシーケンス図である。rshモードでは一般的なUNIXコマンドであるrshと同様に、コマンド「% rsh vnode application [args...]」によってクラスタシステム1上でアプリケーションを実行することができる。ここでvnodeは仮想ノードを示している。ここでは、説明のため、実ノード3aが持つRIPをRIP#a、実ノード3bが持つRIPをRIP#b、実ノード3cが持つRIPをRIP#cとする。
【0066】
まず、ユーザは、クライアント5を用いてrshコマンドを入力し、宛先を指定する。ここでは例えばVIP#1を宛先として指定する。これにより、ノード割り当て要求が行われる(S101)。ノード割り当て要求を受けたコーディネータノード2は、各実ノード3a,3b,3cの負荷状態に応じて、VIP#1に例えばRIP#aを割り当てる(S102)。実ノード3aは、アプリケーションの実行が可能な状態であれば、そのことを示す情報をコーディネータノード2へ返す(S103)。次に、コーディネータノード2は、図7に示すIP管理テーブルを生成し、各実ノード3a,3b,3cへブロードキャストすると共に、ノード割り当てが成功したことを示すノード割り当て完了通知をクライアント5へ返す(S104)。
【0067】
ノード割り当て完了通知を受信したクライアント5は、ジョブをVIP#1宛に投入する(S105)。ジョブはコーディネータノード2を介して実ノード3aへ渡される(S106)。実ノード3aは、ジョブであるアプリケーションの実行を行い、その実行結果をクライアント5へ返す(S107)。また、実ノード3aは、ジョブが終了したことを示す情報をコーディネータノード2へ返す(S108)。ジョブの終了を検出したコーディネータノード2は、IP管理テーブルのVIP#1とRIP#aのエントリを削除し、その結果をブロードキャストすることによりノードの解放を行う(S109)。実ノード3aは、ノードの解放を確認したことを示す情報をコーディネータノード2へ返す(S110)。
【0068】
以上のように、コーディネータノード2が実ノードの負荷状態や故障等に応じてVIPをRIPへ割り振ることにより、ノードの負荷の変化やノードの故障に柔軟に対応でき、高可用性を実現することができる。例えば、ノード故障が発生した場合でも、VIPとRIPの割り当てを自動的に変更するだけで復帰することができる。
【0069】
実施の形態2.
本実施の形態では、図1で説明した本発明のクラスタシステムをHPCモードで使う場合について説明する。HPCモードでは、複数のアプリケーションの実行を複数の実ノードで分担して行う。一般にHPC型のアプリケーションではノード間通信が行われる。本実施の形態では、コーディネータノード2がクライアント5に対して複数の仮想ノードを提供し、実ノード間で通信を行うことにより、HPC型のアプリケーションが動作可能となる。
【0070】
以下、HPCモードの動作について、図8を用いて説明する。図8は、本実施の形態に係るクラスタシステムのHPCモードにおける動作の一例を示すシーケンス図である。ここでは、説明のため、実ノード3aが持つRIPをRIP#a、実ノード3bが持つRIPをRIP#b、実ノード3cが持つRIPをRIP#cとする。
【0071】
まず、ユーザは、クライアント5を用いて宛先を指定する。ここでは例えばVIP#1とVIP#2を宛先として指定する。これにより、ノード割り当て要求が行われる(S201)。ノード割り当て要求を受けたコーディネータノード2は、各実ノード3a,3b,3cの負荷状態に応じて、VIP#1に例えばRIP#aを割り当てる(S202)。実ノード3aは、アプリケーションの実行が可能な状態であれば、そのことを示す情報をコーディネータノード2へ返す(S203)。同様に、コーディネータノード2は、VIP#2に例えばRIP#cを割り当てる(S202)。実ノード3cは、アプリケーションの実行が可能な状態であれば、そのことを示す情報をコーディネータノード2へ返す(S203)。処理S202と処理S203は、要求されたノード数分繰り返される。次に、コーディネータノード2は、図9に示すIP管理テーブルを生成し、各実ノード3a,3b,3cへブロードキャストすると共に、ノード割り当てが成功したことを示すノード割り当て完了通知をクライアント5へ返す(S204)。
【0072】
ノード割り当て完了通知を受信したクライアント5は、ジョブをVIP#1宛とVIP#2宛に投入する(S205)。ここで、例えばVIP#1で得られた実行結果をVIP#2で用いて実行するというジョブをVIP#1宛とVIP#2宛に与えたとする。VIP#1宛のジョブはコーディネータノード2を介して実ノード3aへ渡され、VIP#2宛のジョブはコーディネータノード2を介して実ノード3cへ渡される(S206)。実ノード3aは、ジョブであるアプリケーションの実行を行い、その実行結果を実ノード3cへ渡す。実ノード3cは、実ノード3aの実行結果を用いてアプリケーションの実行を行い、その実行結果をクライアント5へ返す(S207)。また、実ノード3aと実ノード3cは、ジョブが終了したことを示す情報をコーディネータノード2へ返す(S208)。ジョブの終了を検出したコーディネータノード2は、IP管理テーブルのVIP#1とRIP#aのエントリ、VIP#2とRIP#cのエントリを削除し、その結果をブロードキャストすることによりノードの解放を行う(S209)。実ノード3aと実ノード3cは、ノードの解放を確認したことを示す情報をコーディネータノード2へ返す(S210)。
【0073】
以上のように、HPC型のアプリケーションを動作させる場合において、実ノードが故障した場合でも、故障した実ノードが行っていた処理をコーディネータノード2が自動的に適切な実ノードへ割り振ることにより、処理を継続させることができるため、ユーザ側で対応する必要がない。
【0074】
実施の形態3.
本実施の形態では、本発明のクラスタシステムをWWWモードで使う場合について説明する。例えばWWWサーバのような複数のサーバに対してクライアントから大量のリクエストが来るような場合に、1つのVIPに複数のRIPを割り当てることでIPレベルの負荷分散を行うことができる。このような動作モードをWWWモードと呼び、このWWWモードでは1つのサービスの実行を複数の実ノードで分担して行う。本実施の形態では、コーディネータノード2が1つの仮想ノードを複数の実ノードに割り当て、クライアント5からの仮想ノードに対するリクエストを複数の実ノードへ分散することにより、ロードバランシング型のクラスタシステムを構成することが可能となる。
【0075】
以下、WWWモードの動作について、図10〜図14を用いて説明する。まず、本実施の形態に係るクラスタシステムの構成について、図10を用いて説明する。図10は、本実施の形態に係るクラスタシステムの構成の他の一例を示すブロック図である。図10において、図1と同一符号は図1に示された対象と同様のものであり、ここでの説明を省略する。WWWモードでは、オペレータがWWWサーバの起動と停止を行う必要があるため、図10では図1の構成にオペレータ6を加える。オペレータ6はコーディネータノード2を操作する。
【0076】
次に、WWWモードにおけるサーバ起動の動作について、図11を用いて説明する。図11は、本実施の形態に係るクラスタシステムのWWWモードにおけるサーバ起動の動作の一例を示すシーケンス図である。ここでは、説明のため、実ノード3aが持つRIPをRIP#a、実ノード3bが持つRIPをRIP#b、実ノード3cが持つRIPをRIP#cとする。
【0077】
まず事前に、オペレータ6は、立ち上げるべきWWWサーバの数を指定する。ここでは例えば3台と指定する。これにより、ノード割り当て要求が行われる(S301)。ノード割り当て要求を受けたコーディネータノード2は、各実ノード3a,3b,3cの負荷状態に応じて、VIP#1に例えばRIP#aとRIP#bとRIP#cを割り当てる(S302)。実ノード3a,3b,3cは、それぞれサービスの実行が可能な状態であれば、そのことを示す情報をコーディネータノード2へ返す(S303)。次に、コーディネータノード2は、図12に示すIP管理テーブルを生成し、各実ノード3a,3b,3cへブロードキャストすると共に、ノード割り当てが成功したことを示すノード割り当て完了通知をオペレータ6へ返す(S304)。
【0078】
ノード割り当て完了通知を受信したオペレータ6は、サーバ起動要求を行う(S305)。サーバ起動要求を受けたコーディネータノード2は、各実ノード3a,3b,3cに対してサーバ起動を指示する(S306)。各実ノード3a,3b,3cは、自ノードを起動させると共に、起動したことを示す情報をコーディネータノード2へ返す(S307)。コーディネータノード2は、サーバ起動が完了したことを示すサーバ起動完了通知をオペレータ6へ返す(S308)。以上のように、WWWモードにおけるサーバ起動の動作を行うことで、事前にVIP#1にはRIP#aとRIP#bとRIP#cが割り当てられる。
【0079】
次に、WWWモードにおけるサービス提供時の動作について、図13を用いて説明する。図13は、本実施の形態に係るクラスタシステムのWWWモードにおけるサービス提供時の動作の一例を示すシーケンス図である。まず、クライアント5は、HTTP(Hypertext Transfer Protocol)リクエストをVIP#1宛に投入する(S401)。VIP#1宛のリクエストはコーディネータノード2を介して実ノード3aへ割り振られる(S402)。実ノード3aは、リクエストに対するHTTPレスポンスをクライアント5へ返す(S403)。以上がWWWモードにおけるサービス提供時の動作である。ここではVIP#1宛のリクエストを実ノード3aへ割り振った例について説明したが、コーディネータノード2のパケット割り振り部223は、クライアント5からのリクエストを受ける度に、リクエストを転送する実ノードを変化させる。
【0080】
次に、WWWモードにおけるサーバ停止の動作について、図14を用いて説明する。図14は、本実施の形態に係るクラスタシステムのWWWモードにおけるサーバ停止の動作の一例を示すシーケンス図である。
【0081】
まず、オペレータ6は、サーバ停止要求を行う(S501)。サーバ停止要求を受けたコーディネータノード2は、各実ノード3a,3b,3cに対してサーバ停止を指示する(S502)。各実ノード3a,3b,3cは、自ノードを停止させると共に、停止したことを示す情報をコーディネータノード2へ返す(S503)。コーディネータノード2は、サーバ停止が完了したことを示すサーバ停止完了通知をオペレータ6へ返す(S504)。
【0082】
サーバ停止完了通知を受信したオペレータ6は、ノード解放要求を行う(S505)。ノード解放要求を受けたコーディネータノード2は、IP管理テーブルのVIP#1とRIP#aのエントリ、VIP#1とRIP#bのエントリ、VIP#1とRIP#cのエントリを削除し、その結果をブロードキャストすることによりノードの解放を行う(S506)。各実ノード3a,3b,3cは、ノードの解放を確認したことを示す情報をコーディネータノード2へ返す(S507)。コーディネータノード2は、ノード解放が終了したことを示すノード解放終了通知をオペレータ6へ返す(S508)。以上により、WWWモードにおけるサーバ停止の動作は終了する。
【0083】
以上のように、WWWモードのサービス提供時において、クライアント5から大量のリクエストを受けた場合でも、コーディネータノード2が実ノードの負荷状態や故障等に応じて、リクエストを適切な実ノードへ割り振ることができる。
【0084】
以上、実施の形態1から実施の形態3において本発明のクラスタシステムについて説明したが、図3で説明した本発明のクラスタシステムの構成において、コーディネータノード2が状況に応じたIP管理テーブルを作成することにより、実施の形態1で説明したrshモード、実施の形態2で説明したHPCモード、実施の形態3で説明したWWWモードからなる3つのモードをいずれかに切り替えて動作させたり、3つのモードを組み合わせて動作させるようにすることも可能である。また、実ノードのいずれかに仮想ノード提供部222とパケット割り振り部223とコーディネータ23の機能を備えることにより、コーディネータノード2として機能することが可能となるため、コーディネータノード2が故障した場合にも対応することができる。これによりさらに高信頼性を実現することができる。
【0085】
(付記1)クライアントに対して少なくとも1つの仮想的な計算機ノードを提供するクラスタシステムにおける物理的な計算機ノードであって、
前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスと前記物理的な計算機ノードのIPアドレスである実IPアドレスとの対応表であるIP管理テーブルを記憶し、該IP管理テーブルに基づいて仮想IPアドレスを用いた通信を行うIP層と、
他の計算機ノードと前記クライアントにネットワークを介して接続するネットワークデバイスと、
を備えてなる計算機ノード。
(付記2)付記1に記載の計算機ノードにおいて、
さらに、
前記クライアントから指示されたアプリケーションを実行するアプリケーション実行部を備えたことを特徴とする計算機ノード。
(付記3)付記2に記載の計算機ノードにおいて、
前記IP層は、
前記アプリケーション実行部から仮想IPアドレスを宛先とする第1のIPヘッダを付けた第1のパケットが入力された場合、宛先の仮想IPアドレスに対応する実IPアドレスを前記IP管理テーブルを用いて検索し、検索した実IPアドレスを宛先とする第2のIPヘッダを前記第1のパケットにさらに付けるカプセル化を施し、得られた第2のパケットを前記ネットワークデバイスへ出力するカプセル化部と、
前記ネットワークデバイスから実IPアドレスを宛先とする第3のIPヘッダを付けた第3のパケットが入力された場合、前記第3のパケットから前記第3のIPヘッダを外して第4のパケットを生成し、さらに仮想IPアドレスを宛先とする第4のIPヘッダの仮想IPアドレスが自らの計算機ノードの仮想IPアドレスであれば、得られた前記第4のパケットを前記アプリケーション実行部へ出力するカプセル解除部と、
を備えたことを特徴とする計算機ノード。
(付記4)付記3に記載の計算機ノードにおいて、
さらに、
前記ネットワークデバイスと同様に扱われ、自らの計算機ノードの仮想IPアドレスを宛先とするパケットを前記IP層へ出力するトンネルデバイスを備えたことを特徴とする計算機ノード。
(付記5)付記1に記載の計算機ノードにおいて、
さらに、
他の計算機ノードの負荷状態を検出する負荷状態検出部と、
前記負荷状態に基づいて前記仮想IPアドレスに前記実IPアドレスを割り当て、前記IP管理テーブルを作成するノード割り当て部と、
前記IP管理テーブルを他の計算機ノードへブロードキャストするブロードキャスト部とを備え、
前記IP層は、
前記クライアントに対して前記仮想IPアドレスを提供する仮想ノード提供部と、
前記ネットワークデバイスから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを前記ネットワークデバイスへ出力するパケット割り振り部と、
を備えたことを特徴とする計算機ノード。
(付記6)付記5に記載の計算機ノードにおいて、
前記パケット割り振り部は、前記ネットワークデバイスから前記仮想IPアドレスを宛先とする第1のIPヘッダを付けた第1のパケットが入力された場合、検索した実IPアドレスを宛先とする第2のIPヘッダを前記第1のパケットにさらに付けるカプセル化を施し、得られた第2のパケットを前記ネットワークデバイスへ出力することを特徴とする計算機ノード。
(付記7)付記5または付記6に記載の計算機ノードにおいて、
前記仮想ノード提供部は、前記ネットワークデバイスに対して実IPアドレスと異なる少なくとも1つのIPアドレスを割り当てることを特徴とする計算機ノード。
(付記8)付記5乃至付記7のいずれかに記載の計算機ノードにおいて、
前記ノード割り当て部は、1つの仮想IPアドレスに対して複数の実IPアドレスを割り当てることを特徴とする計算機ノード。
(付記9)付記8に記載の計算機ノードにおいて、
前記ノード割り振り部は、クライアントから前記1つの仮想IPアドレスに対して要求がある度に、要求を転送する実IPアドレスを変化させることを特徴とする計算機ノード。
(付記10)付記5乃至付記9のいずれかに記載の計算機ノードにおいて、
前記ブロードキャスト部は、前記IP管理テーブルのうち更新されたエントリだけを他の計算機ノードへブロードキャストすることを特徴とする計算機ノード。
(付記11)付記5乃至付記10のいずれかに記載の計算機ノードにおいて、
前記ブロードキャスト部は、前記IP管理テーブルのうち他の計算機ノードから要求されたエントリだけを要求した計算機ノードだけへ送信することを特徴とする計算機ノード。
(付記12)クライアントに対して複数の仮想的な計算機ノードを提供するクラスタシステムであって、
付記2乃至付記4のいずれかに記載の計算機ノードであり、アプリケーションを実行する計算機ノードである少なくとも1つの実ノードと、
付記5乃至付記11のいずれかに記載の計算機ノードであり、前記仮想IPアドレスを前記実ノードの実IPアドレスに割り当てる計算機ノードである少なくとも1つのコーディネータノードと、
を備えたことを特徴とするクラスタシステム。
(付記13)付記12に記載のクラスタシステムにおいて、
前記コーディネータノードは、前記IP管理テーブルを前記実ノードへ送信し、
該実ノードは、前記IP管理テーブルを受信したことを前記コーディネータノードへ送信することを特徴とするクラスタシステム。
(付記14)クライアントに対して少なくとも1つの仮想的な計算機ノードを提供し、前記クライアントから指示されたアプリケーションを実際に実行する計算機ノードである少なくとも1つの実ノードの管理を行うクラスタ管理方法であって、
前記実ノードと前記クライアントにネットワークを介して接続するステップと、
前記クライアントに対して前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスを提供するステップと、
前記実ノードの負荷状態を検出するステップと、
前記負荷状態に基づいて前記仮想IPアドレスに対して前記実ノードのIPアドレスである実IPアドレスを割り当て、前記IP管理テーブルを作成するステップと、
前記IP管理テーブルを前記実ノードへブロードキャストするステップと、
ネットワークを介して前記クライアントから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを、ネットワークを介して宛先の実ノードへ出力するステップと、
を備えてなるクラスタ管理方法。
(付記15)クライアントに対して少なくとも1つの仮想的な計算機ノードを提供し、前記クライアントから指示されたアプリケーションを実際に実行する計算機ノードである少なくとも1つの実ノードの管理を行うために、コンピュータにより読取可能な媒体に記憶されたクラスタ管理プログラムであって、
前記実ノードと前記クライアントにネットワークを介して接続するステップと、
前記クライアントに対して前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスを提供するステップと、
前記実ノードの負荷状態を検出するステップと、
前記負荷状態に基づいて前記仮想IPアドレスに対して前記実ノードのIPアドレスである実IPアドレスを割り当て、前記IP管理テーブルを作成するステップと、
前記IP管理テーブルを前記実ノードへブロードキャストするステップと、
ネットワークを介して前記クライアントから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを、ネットワークを介して宛先の実ノードへ出力するステップと、
をコンピュータに実行させることを特徴とするクラスタ管理プログラム。
【0086】
【発明の効果】
以上に詳述したように本発明によれば、コーディネータノードが実ノードの負荷状態や故障等に応じてVIPをRIPへ割り振ることにより、クライアント側でノードの変更の処理を行うことなく、ノードの負荷の変化やノードの故障に柔軟に対応でき、高可用性を実現することができる。
【図面の簡単な説明】
【図1】本実施の形態に係るクラスタシステムの構成の一例を示すブロック図である。
【図2】本実施の形態に係るコーディネータノードの機能の一例を示すブロック図である。
【図3】カプセル化とカプセル化解除の動作の一例を示す図である。
【図4】IP層の実装の一例を示すブロック図である。
【図5】本実施の形態に係る実ノードの機能の一例を示すブロック図である。
【図6】本実施の形態に係るクラスタシステムのrshモードにおける動作の一例を示すシーケンス図である。
【図7】rshモードにおけるIP管理テーブルの一例を示す図である。
【図8】本実施の形態に係るクラスタシステムのHPCモードにおける動作の一例を示すシーケンス図である。
【図9】HPCモードにおけるIP管理テーブルの一例を示す図である。
【図10】本実施の形態に係るクラスタシステムの構成の他の一例を示すブロック図である。
【図11】本実施の形態に係るクラスタシステムのWWWモードにおけるサーバ起動の動作の一例を示すシーケンス図である。
【図12】WWWモードにおけるIP管理テーブルの一例を示す図である。
【図13】本実施の形態に係るクラスタシステムのWWWモードにおけるサービス提供時の動作の一例を示すシーケンス図である。
【図14】本実施の形態に係るクラスタシステムのWWWモードにおけるサーバ停止の動作の一例を示すシーケンス図である。
【符号の説明】
1 クラスタシステム、2 コーディネータノード、21 NIC、211 ネットワークデバイス、22 IP層、221 IP処理部、222 仮想ノード提供部、223 パケット割り振り部、23 コーディネータ、231 負荷状態検出部、232 ノード割り当て部、233 ブロードキャスト部、3a,3b,3c 実ノード、31 NIC、311 ネットワークデバイス、312トンネルデバイス、32 IP層、321 IP処理部、322 カプセル解除部、323 カプセル化部、33 アプリケーション実行部、4 ネットワーク、5 クライアント、6 オペレータ、7 netfilter、71 NF_IP_PRE_ROUTING、72 routing、73 NF_IP_LOCAL_IN、74 NF_IP_FORWARD、75 NF_IP_LOCAL_OUT、76 routing、77 NF_IP_POST_ROUTING、8 下位層、9 上位層。

Claims (10)

  1. クライアントに対して少なくとも1つの仮想的な計算機ノードを提供するクラスタシステムにおける物理的な計算機ノードであって、
    前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスと前記物理的な計算機ノードのIPアドレスである実IPアドレスとの対応表であるIP管理テーブルを記憶し、該IP管理テーブルに基づいて仮想IPアドレスを用いた通信を行うIP層と、
    他の計算機ノードと前記クライアントにネットワークを介して接続するネットワークデバイスと、
    を備えてなる計算機ノード。
  2. 請求項1に記載の計算機ノードにおいて、
    さらに、前記クライアントから指示されたアプリケーションを実行するアプリケーション実行部を備えたことを特徴とする計算機ノード。
  3. 請求項2に記載の計算機ノードにおいて、
    前記IP層は、
    前記アプリケーション実行部から仮想IPアドレスを宛先とする第1のIPヘッダを付けた第1のパケットが入力された場合、宛先の仮想IPアドレスに対応する実IPアドレスを前記IP管理テーブルを用いて検索し、検索した実IPアドレスを宛先とする第2のIPヘッダを前記第1のパケットにさらに付けるカプセル化を施し、得られた第2のパケットを前記ネットワークデバイスへ出力するカプセル化部と、
    前記ネットワークデバイスから実IPアドレスを宛先とする第3のIPヘッダを付けた第3のパケットが入力された場合、前記第3のパケットから前記第3のIPヘッダを外して第4のパケットを生成し、さらに仮想IPアドレスを宛先とする第4のIPヘッダの仮想IPアドレスが自らの計算機ノードの仮想IPアドレスであれば、得られた前記第4のパケットを前記アプリケーション実行部へ出力するカプセル解除部と、
    を備えたことを特徴とする計算機ノード。
  4. 請求項3に記載の計算機ノードにおいて、
    さらに、
    前記ネットワークデバイスと同様に扱われ、自らの計算機ノードの仮想IPアドレスを宛先とするパケットを前記IP層へ出力するトンネルデバイスを備えたことを特徴とする計算機ノード。
  5. 請求項1に記載の計算機ノードにおいて、
    さらに、
    他の計算機ノードの負荷状態を検出する負荷状態検出部と、
    前記負荷状態に基づいて前記仮想IPアドレスに前記実IPアドレスを割り当て、前記IP管理テーブルを作成するノード割り当て部と、
    前記IP管理テーブルを他の計算機ノードへブロードキャストするブロードキャスト部とを備え、
    前記IP層は、
    前記クライアントに対して前記仮想IPアドレスを提供する仮想ノード提供部と、
    前記ネットワークデバイスから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを前記ネットワークデバイスへ出力するパケット割り振り部と、
    を備えたことを特徴とする計算機ノード。
  6. 請求項5に記載の計算機ノードにおいて、
    前記パケット割り振り部は、前記ネットワークデバイスから前記仮想IPアドレスを宛先とする第1のIPヘッダを付けた第1のパケットが入力された場合、検索した実IPアドレスを宛先とする第2のIPヘッダを前記第1のパケットにさらに付けるカプセル化を施し、得られた第2のパケットを前記ネットワークデバイスへ出力する
    ことを特徴とする計算機ノード。
  7. 請求項5または請求項6に記載の計算機ノードにおいて、
    前記仮想ノード提供部は、前記ネットワークデバイスに対して実IPアドレスと異なる少なくとも1つのIPアドレスを割り当てることを特徴とする計算機ノード。
  8. クライアントに対して複数の仮想的な計算機ノードを提供するクラスタシステムであって、
    請求項2乃至請求項4のいずれかに記載の計算機ノードであり、アプリケーションを実行する計算機ノードである少なくとも1つの実ノードと、
    請求項5乃至請求項7のいずれかに記載の計算機ノードであり、前記仮想IPアドレスを前記実ノードの実IPアドレスに割り当てる計算機ノードである少なくとも1つのコーディネータノードと、
    を備えたことを特徴とするクラスタシステム。
  9. クライアントに対して少なくとも1つの仮想的な計算機ノードを提供し、前記クライアントから指示されたアプリケーションを実際に実行する計算機ノードである少なくとも1つの実ノードの管理を行うクラスタ管理方法であって、
    前記実ノードと前記クライアントにネットワークを介して接続するステップと、
    前記クライアントに対して前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスを提供するステップと、
    前記実ノードの負荷状態を検出するステップと、
    前記負荷状態に基づいて前記仮想IPアドレスに対して前記実ノードのIPアドレスである実IPアドレスを割り当て、前記IP管理テーブルを作成するステップと、
    前記IP管理テーブルを前記実ノードへブロードキャストするステップと、
    ネットワークを介して前記クライアントから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを、ネットワークを介して宛先の実ノードへ出力するステップと、
    を備えてなるクラスタ管理方法。
  10. クライアントに対して少なくとも1つの仮想的な計算機ノードを提供し、前記クライアントから指示されたアプリケーションを実際に実行する計算機ノードである少なくとも1つの実ノードの管理を行うために、コンピュータにより読取可能な媒体に記憶されたクラスタ管理プログラムであって、
    前記実ノードと前記クライアントにネットワークを介して接続するステップと、
    前記クライアントに対して前記仮想的な計算機ノードのIPアドレスである仮想IPアドレスを提供するステップと、
    前記実ノードの負荷状態を検出するステップと、
    前記負荷状態に基づいて前記仮想IPアドレスに対して前記実ノードのIPアドレスである実IPアドレスを割り当て、前記IP管理テーブルを作成するステップと、
    前記IP管理テーブルを前記実ノードへブロードキャストするステップと、
    ネットワークを介して前記クライアントから前記仮想IPアドレスを宛先とするパケットが入力された場合、前記IP管理テーブルを用いて前記仮想IPアドレスから前記実IPアドレスを検索し、検索した前記実IPアドレスを宛先とするパケットを、ネットワークを介して宛先の実ノードへ出力するステップと、
    をコンピュータに実行させることを特徴とするクラスタ管理プログラム。
JP2003042104A 2003-02-20 2003-02-20 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム Expired - Lifetime JP4021780B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003042104A JP4021780B2 (ja) 2003-02-20 2003-02-20 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム
PCT/JP2004/001882 WO2004075070A1 (ja) 2003-02-20 2004-02-19 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム
US11/134,822 US7499451B2 (en) 2003-02-20 2005-05-20 Computer node, cluster system, cluster managing method, and cluster managing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003042104A JP4021780B2 (ja) 2003-02-20 2003-02-20 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007099562A Division JP2007249984A (ja) 2007-04-05 2007-04-05 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム

Publications (2)

Publication Number Publication Date
JP2004264911A true JP2004264911A (ja) 2004-09-24
JP4021780B2 JP4021780B2 (ja) 2007-12-12

Family

ID=32905340

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003042104A Expired - Lifetime JP4021780B2 (ja) 2003-02-20 2003-02-20 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム

Country Status (2)

Country Link
JP (1) JP4021780B2 (ja)
WO (1) WO2004075070A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006323526A (ja) * 2005-05-17 2006-11-30 Fujitsu Ltd クラスタ管理プログラム、該プログラムを記録した記録媒体、クラスタ管理方法、ノード、およびクラスタ
JP2007180963A (ja) * 2005-12-28 2007-07-12 Fujitsu Ltd クラスタノード制御プログラム、クラスタノード、クラスタシステム制御方法
CN100394388C (zh) * 2005-06-16 2008-06-11 武汉理工大学 单机环境中构建制造网格实验***的方法
WO2009004734A1 (ja) * 2007-07-05 2009-01-08 Fujitsu Limited 仮想サーバシステム、仮想サーバシステムの制御方法、仮想サーバシステムの制御プログラムおよびサービス負荷分散装置
JP2010271840A (ja) * 2009-05-20 2010-12-02 Yamatake Corp 通信システム
JP2013533689A (ja) * 2010-06-22 2013-08-22 マイクロソフト コーポレーション 分散型仮想ネットワーク・ゲートウェイ
JP2019041395A (ja) * 2011-11-18 2019-03-14 アマゾン・テクノロジーズ・インコーポレーテッド 仮想ネットワークインタフェースオブジェクト
US11295246B2 (en) 2012-02-29 2022-04-05 Amazon Technologies, Inc. Portable network interfaces for authentication and license enforcement

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3999353B2 (ja) * 1998-05-29 2007-10-31 株式会社東芝 コンピュータネットワークにおける通信経路の決定方法ならびにシステム及び同方法がプログラムされ記録される記録媒体
JP4015770B2 (ja) * 1998-12-22 2007-11-28 株式会社東芝 クラスタシステム、サーバ計算機及び負荷分散方法
JP2002259354A (ja) * 2001-03-01 2002-09-13 Hitachi Ltd ネットワークシステム及び負荷分散方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006323526A (ja) * 2005-05-17 2006-11-30 Fujitsu Ltd クラスタ管理プログラム、該プログラムを記録した記録媒体、クラスタ管理方法、ノード、およびクラスタ
CN100394388C (zh) * 2005-06-16 2008-06-11 武汉理工大学 单机环境中构建制造网格实验***的方法
JP2007180963A (ja) * 2005-12-28 2007-07-12 Fujitsu Ltd クラスタノード制御プログラム、クラスタノード、クラスタシステム制御方法
JP4619943B2 (ja) * 2005-12-28 2011-01-26 富士通株式会社 パケット通信方法、パケット通信システム
WO2009004734A1 (ja) * 2007-07-05 2009-01-08 Fujitsu Limited 仮想サーバシステム、仮想サーバシステムの制御方法、仮想サーバシステムの制御プログラムおよびサービス負荷分散装置
JP2010271840A (ja) * 2009-05-20 2010-12-02 Yamatake Corp 通信システム
JP2013533689A (ja) * 2010-06-22 2013-08-22 マイクロソフト コーポレーション 分散型仮想ネットワーク・ゲートウェイ
US9876717B2 (en) 2010-06-22 2018-01-23 Microsoft Technology Licensing, Llc Distributed virtual network gateways
JP2019041395A (ja) * 2011-11-18 2019-03-14 アマゾン・テクノロジーズ・インコーポレーテッド 仮想ネットワークインタフェースオブジェクト
US10848431B2 (en) 2011-11-18 2020-11-24 Amazon Technologies, Inc. Virtual network interface objects
US11218420B2 (en) 2011-11-18 2022-01-04 Amazon Technologies, Inc. Virtual network interface objects
US11295246B2 (en) 2012-02-29 2022-04-05 Amazon Technologies, Inc. Portable network interfaces for authentication and license enforcement

Also Published As

Publication number Publication date
WO2004075070A1 (ja) 2004-09-02
JP4021780B2 (ja) 2007-12-12

Similar Documents

Publication Publication Date Title
US7499451B2 (en) Computer node, cluster system, cluster managing method, and cluster managing program
CN111464592B (zh) 基于微服务的负载均衡方法、装置、设备及存储介质
CN110313163B (zh) 分布式计算***中的负载平衡
JP7085565B2 (ja) 分離されたネットワークスタックにわたるインテリジェントなスレッド管理
US7644159B2 (en) Load balancing for a server farm
JP6087922B2 (ja) 通信制御方法及びゲートウェイ
CN109937401B (zh) 经由业务旁路进行的负载均衡虚拟机的实时迁移
US6928478B1 (en) Method and apparatus for implementing a MAC address pool for assignment to a virtual interface aggregate
EP2414960B1 (en) Providing logical networking functionality for managed computer networks
JP5085831B2 (ja) リクエストの集中及びロードバランシングのためのシステム及び方法
US10318550B2 (en) Systems and methods for autonomous resource discovery, management, and stitching
US20090063706A1 (en) Combined Layer 2 Virtual MAC Address with Layer 3 IP Address Routing
Kaashoek et al. FLIP: An internetwork protocol for supporting distributed systems
AU2001276932A1 (en) System and method for concentration and load-balancing of requests
CN114070822B (zh) 一种Kubernetes Overlay IP地址管理方法
US20220166715A1 (en) Communication system and communication method
Zhang et al. Creating Linux virtual servers
JP4021780B2 (ja) 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム
WO2023207189A1 (zh) 负载均衡方法及***、计算机存储介质、电子设备
US8135772B2 (en) Single servlets for B2B message routing
CN110062057A (zh) 为热备***处理报文的代理网关及通信方法
TW201509158A (zh) 整合網路裝置及其服務整合方法
JP2007249984A (ja) 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム
CN116132542A (zh) 容器网络管理方法、容器网络插件以及相关设备
JP2004064379A (ja) ルータ装置およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050614

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070405

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070801

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070906

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070927

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

Free format text: PAYMENT UNTIL: 20101005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4021780

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20101005

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111005

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111005

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121005

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121005

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131005

Year of fee payment: 6

EXPY Cancellation because of completion of term