JP4163697B2 - 負荷分散システム、実サーバ及び負荷分散方法 - Google Patents

負荷分散システム、実サーバ及び負荷分散方法 Download PDF

Info

Publication number
JP4163697B2
JP4163697B2 JP2005098688A JP2005098688A JP4163697B2 JP 4163697 B2 JP4163697 B2 JP 4163697B2 JP 2005098688 A JP2005098688 A JP 2005098688A JP 2005098688 A JP2005098688 A JP 2005098688A JP 4163697 B2 JP4163697 B2 JP 4163697B2
Authority
JP
Japan
Prior art keywords
address
data
server
communication data
registration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005098688A
Other languages
English (en)
Other versions
JP2006277570A (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
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 JP2005098688A priority Critical patent/JP4163697B2/ja
Publication of JP2006277570A publication Critical patent/JP2006277570A/ja
Application granted granted Critical
Publication of JP4163697B2 publication Critical patent/JP4163697B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、クライアントからの要求を負荷分散装置で受けて当該要求を複数のサーバのいずれかに振り分けるのに好適な負荷分散システム、実サーバ及び負荷分散方法に関する。
クライアント・サーバシステムでは、サーバ(サーバ計算機)の負荷がボトルネックになることが多いため、サーバ数を増強し、負荷を分散する方法が取られる。このシステムでは、複数台存在するサーバのうち、ある特定のサーバが過負荷とならないように、クライアント(クライアント計算機)からの要求を振り分ける機能を提供する負荷分散装置が使用される(例えば、特許文献1参照)。
負荷分散装置を使用したクライアント・サーバシステムにおけるクライアントからサーバへの通信データの流れは次の通りとなる。まずクライアントは、負荷分散装置上の仮想サーバのアドレスに対し通信データを送信する。このため、負荷分散装置は、実際にクライアントに対しサービスを提供するサーバ(以下、実サーバと称する)に代わりクライアントからの通信データを受信する。負荷分散装置は、受信した通信データの宛先IP(Internet Protocol)アドレスを実サーバのアドレスに変換し、負荷分散のアルゴリズムに基づき実サーバに分散して配信する。
一方、上記システムにおける実サーバからクライアントへの通信データの流れは次の通りとなる。実サーバは、デフォルトゲートウェイを負荷分散装置自身のアドレス(仮想サーバのアドレスとは別のアドレス)に設定することで、クライアントへ送信する通信データが負荷分散装置を通過するようにする。負荷分散装置は、実サーバから送られたクライアント宛てパケットに対し、送信元アドレスを仮想サーバのアドレスに変換して、クライアントに送信する。
このように、クライアントに対し負荷分散装置上の仮想サーバのアドレスと通信しているように見せることで、負荷分散装置は、実サーバに対する要求を受信し、負荷分散を行う。
特開平9−218842号公報(請求項1及び2、段落0028及び0029)
上記した従来技術では、負荷分散装置に送受信の全パケットが集中する。このため、通信負荷が大きくなる可能性がある。また負荷分散装置は、送受信の全パケットに対しIPアドレス変換を行うため、処理の負荷が大きくなる可能性がある。
本発明は上記事情を考慮してなされたものでその目的は、クライアント・サーバ間の全通信データが負荷分散装置に集中することを防ぎ、且つ負荷分散装置上でのIPアドレス変換を不用にできる負荷分散システム、実サーバ及び負荷分散方法を提供することにある。
本発明の1つの観点によれば、複数のクライアントにサービスを提供する複数の実サーバと、上記複数の実サーバとネットワークアドレスが同一のセグメントに存在し、上記複数のクライアントの各々からのサービス要求を上記複数の実サーバに割り振る負荷分散装置であって、上記複数のクライアントの各々からのサービス要求を代理で受信するための仮想サーバのIPアドレスを仮想アドレスとして持つ負荷分散装置とを具備する負荷分散システムが提供される。上記負荷分散装置は、通信データを受信する負荷分散装置側受信手段であって、上記クライアントからの上記仮想アドレスを宛先IPアドレスとする仮想サーバ宛ての通信データを代理で受信する負荷分散装置側受信手段と、通信データを送信する負荷分散装置側送信手段と、上記複数の実サーバの中から、上記負荷分散装置側受信手段によって代理で受信された上記仮想サーバ宛ての通信データを転送すべき実サーバを選択する負荷分散処理手段と、上記負荷分散装置側受信手段によって代理で受信された上記仮想サーバ宛ての通信データを上記負荷分散処理手段によって選択された実サーバの物理アドレス宛てに上記負荷分散装置側送信手段によって転送させる転送処理手段とを有する。上記複数の実サーバの各々は、上記負荷分散装置によって上記仮想サーバ宛ての通信データが転送された場合に、当該仮想サーバ宛ての通信データを受信するサーバ側受信手段と、上記サーバ側受信手段によって受信された上記仮想サーバ宛ての通信データの送信元のIPアドレスを記憶する記憶手段と、上記サーバ側受信手段によって受信された上記仮想サーバ宛ての通信データを当該実サーバ宛ての通信データとして処理可能とするために、当該通信データの宛先IPアドレスを上記仮想アドレスから当該実サーバ自身のIPアドレスに変換するアドレス変換処理手段であって、上記記憶手段により記憶されたIPアドレス宛ての通信データの送信時には、当該通信データの送信元IPアドレスを当該実サーバ自身のIPアドレスから上記仮想アドレスに変換するアドレス変換処理手段と、通信データを送信するサーバ側送信手段であって、上記アドレス変換処理手段によって上記送信元IPアドレスが上記仮想アドレスに変換された通信データを上記記憶手段により記憶されたIPアドレスのクライアントに直接送信するサーバ側送信手段とを有する。
このような構成においては、クライアントからの仮想サーバ宛ての通信データ(通信パケット)のみが負荷分散装置により複数の実サーバのうちのいずれかの実サーバに転送される。一方、実サーバが送信するクライアント宛ての通信データは送信元IPアドレスに仮想アドレスを用いながら、負荷分散装置と関係なく、直接宛先のクライアントに送信される。このため、通信負荷を減らすことができる。また負荷分散装置では、クライアントからの仮想サーバ宛ての通信データを実サーバに中継しながら、従来技術とは異なってIPアドレスの変換を必要としないため、アドレス変換の処理負荷が発生しないで済む。
ここで、上記実サーバのアドレス変換処理手段が、クライアントの物理アドレスを取得するための当該クライアントのIPアドレスを宛先IPアドレスとし、当該実サーバのIPアドレスを送信元IPアドレスとするアドレス解決プロトコル要求(ARP要求)の送信時に、当該アドレス解決プロトコル要求の送信元IPアドレスを上記仮想アドレスに変換しない構成とすると良い。このようにすると、クライアントまたはルータ上に作成される、仮想アドレスと負荷分散装置の物理アドレスとを含むアドレス解決プロトコルテーブル(ARPテーブル)のエントリデータが、実サーバからのクライアントに対するアドレス解決プロトコル要求によって、仮想アドレスと当該実サーバの物理アドレスとを含むエントリデータに書き換えられることが防止される。
また、上記負荷分散装置に、上記複数の実サーバの物理アドレスを含むエントリデータを格納する負荷分散装置側登録テーブルを持たせ、上記負荷分散装置側受信手段によって代理で受信された仮想サーバ宛ての通信データを転送すべき実サーバの物理アドレスを、上記負荷分散装置の負荷分散処理手段が上記負荷分散装置側登録テーブルに格納されている物理アドレスの中から選択する構成とするならば、複数のサーバに対して効率的に負荷分散が行える。
また、上記負荷分散装置の上記見負荷分散装置側受信手段が、上記負荷分散装置のIPアドレスを宛先IPアドレスとする通信データをも受信する構成とする一方、上記負荷分散装置の上記転送処理手段に以下の各手段、即ち、上記負荷分散装置側受信手段によって通信データが受信された場合、当該通信データの宛先IPアドレスが仮想アドレスと一致するか判定する手段と、上記受信された通信データの宛先IPアドレスが仮想アドレスと一致しない場合、当該通信データをインターネットプロトコル層及び上位のプロトコル層に受け渡す手段と、上記受信された通信データの宛先IPアドレスが仮想アドレスと一致する場合、当該通信データを上記負荷分散処理手段に渡して当該負荷分散処理手段により転送先の物理アドレスを選択させる手段と、上記通信データを転送すべき実サーバの物理アドレスが上記負荷分散処理手段によって選択できなかった場合、上記通信データを破棄する手段とを持たせると良い。
このような構成においては、負荷分散装置が自身のIPアドレスで通常の通信を行うこともできる。
また、上記複数の実サーバの各々に、上記負荷分散装置の物理アドレスと仮想アドレスとを含むエントリデータを格納するサーバ側登録テーブルと、上記負荷分散装置によって当該実サーバに転送された仮想サーバ宛ての通信データの宛先IPアドレスと有効期限のデータとを含むエントリデータを格納するサーバ側セッション管理テーブルと、TCP/IP通信におけるデータリンク層の処理を行うデータリンク層処理手段と、TCP/IP通信におけるIP層の処理を行うIP層処理手段とに加えて、上記サーバ側受信手段を含み、上記データリンク層処理手段から上記IP層処理手段に送るべき通信データを当該IP層処理手段に代わり受信する第1の受信手段と、上記サーバ側送信手段を含み、上記IP層処理手段から上記データリンク層処理手段に送るべき通信データを当該データリンク層処理手段に代わり受信する第2の受信手段とを持たせると良い。ここでは更に、上記アドレス変換処理手段に以下の各手段、即ち、上記サーバ側受信手段によって受信された通信データの宛先物理アドレスが上記サーバ側登録テーブルに登録されている上記負荷分散装置の物理アドレスで且つ当該通信データの宛先IPアドレスが仮想アドレスの場合、当該通信データの宛先IPアドレスを当該実サーバ自身のIPアドレスに書き換えて上記第1の受信手段により上記IP層処理手段に送らせ、それ以外の場合、上記通信データをそのまま上記第1の受信手段により上記IP層処理手段に送らせる手段と、上記通信データの宛先IPアドレスが仮想アドレスの場合、上記サーバ側セッション管理テーブルに上記通信データの送信元IPアドレスを含むエントリデータが存在するかを判定する手段と、上記送信元IPアドレスを含むエントリデータが存在しない場合、上記通信データの送信元IPアドレスと所定の有効期限とを含むエントリデータを上記サーバ側セッション管理テーブルに追加登録することでセッションの開始とする手段と、上記送信元IPアドレスを含むエントリデータが存在する場合、セッションが保持されているものとして当該エントリデータに含まれている有効期限の値を上記所定の有効期限の値に戻す手段と、上記第2の受信手段によって受信された通信データの宛先IPアドレスを含むエントリデータが上記サーバ側セッション管理テーブルに存在するかを判定する手段と、上記宛先IPアドレスを含むエントリデータが存在する場合、上記通信データの送信元IPアドレスを仮想アドレスに書き換えて上記第2の受信手段により上記データリンク層処理手段に送らせる手段と、上記宛先IPアドレスを含むエントリデータが存在しない場合、上記通信データをそのまま前記第2の受信手段により上記データリンク層処理手段に送らせる手段とを持たせると良い。
このような構成のサーバは、TCP/IP通信機能を標準的に有する通常のサーバに、特別のプログラムを実行させることにより簡単に実現でき、サーバ自体を専用装置とする必要がない。
本発明によれば、クライアントからの仮想サーバ宛ての通信データをIPアドレスの変換を必要とすることなく負荷分散装置によって複数の実サーバのうちのいずれかの実サーバに転送でき、しかも実サーバが送信するクライアント宛ての通信データは負荷分散装置と関係なく、直接宛先のクライアントに送信できる。即ち本発明によれば、クライアント・サーバ間の全通信データが負荷分散装置に集中することを防ぎ、且つ負荷分散装置上でのIPアドレス変換を不用にできる。
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る負荷分散システムの基本構成と動作原理を説明するための図である。図1において、クライアント11と当該クライアント11を含む複数のクライアントにサービスを提供する複数の実サーバ、例えば実サーバ12-1,12-2及び12-3とは、ネットワークアドレスが異なる2つのネットワーク13及び14を介して接続されている。クライアント11はネットワーク13に接続され、実サーバ12-1乃至12-3はネットワーク14に接続されている。図1では作図の都合上、1台のクライアント11がネットワーク13に接続されているが、一般には多数のクライアントがネットワーク13に接続されている。
ネットワーク13及び14はルータ15により接続されている。ルータ15は、この異なるネットワークアドレスのネットワーク13及び14間を接続するためのルーティング機能を有する。なお、ネットワーク13及び14のネットワークアドレスが同一であるならばルータ15を必要としない。
ネットワーク14には負荷分散装置16が接続されている。つまり負荷分散装置16は、実サーバ12-1乃至12-3とネットワークアドレスが同一のセグメント上に存在する。負荷分散装置16は、仮想サーバのIPアドレス(以下、仮想アドレスと称する)“192.168.10.10”を持つ。負荷分散装置16はまた、当該負荷分散装置16自身のIPアドレスも持つ。一方、実サーバ12-1,12-2及び12-3は、それぞれIPアドレス“192.168.10.11”,“192.168.10.12”及び“192.168.10.13”を持つ。
クライアント11からの実サーバへのサービス要求は、負荷分散装置16が持つ仮想アドレス(仮想サーバのIPアドレス)、つまり仮想サーバに対して行われる。そのため負荷分散装置16は、実サーバ12-1乃至12-3の物理アドレスとしてのMAC(Media Access Control)アドレスの一覧を保持する。一方、実サーバ12-1乃至12-3は、負荷分散装置16のMACアドレスと仮想アドレスとを保持する。
クライアント11は、実サーバにサービスを要求しようとした場合、図1(a)に示すように、宛先IPアドレスとして仮想アドレス“192.168.10.10”を用いた仮想サーバ宛ての通信データ(通信パケット)を送信する(ステップS1)。この通信データの宛先MACアドレスには負荷分散装置16のMACアドレスが用いられる。
負荷分散装置16は、仮想アドレス“192.168.10.10”を用いることで実サーバにサービスを要求するクライアント11からの通信データ(仮想サーバ宛ての通信データ)を、実サーバに代わって受信する。負荷分散装置16は、実サーバに代わって受信した通信データの転送先(つまり負荷分散対象)を、負荷分散のアルゴリズムに従って実サーバ12-1乃至12-3の中から選択(決定)する。負荷分散装置16は、実サーバに変わって受信した通信データを、選択された転送先の実サーバ、例えば実サーバ12-1のMACアドレスに転送する(ステップS2)。負荷分散のアルゴリズムに関しては、従来から種々知られており、且つ本発明に直接関係しないため説明を省略する。
実サーバ12-1は、負荷分散装置16から転送された通信データ(通信パケット)を受信すると、当該通信データの宛先IPアドレスを仮想アドレス“192.168.10.10”から当該実サーバ12-1自身のアドレス“192.168.10.11”に変換して当該通信データを処理する。また実サーバ12-1は、負荷分散装置16から転送された通信データの送信元IPアドレス、即ちクライアント11のIPアドレスを保持(記録)しておく。
実サーバ12-1は、クライアント11に対するサービス提供のために当該クライアント11に通信データを送信する場合、当該通信データの送信元IPアドレスを当該実サーバ12-1自身のIPアドレスから仮想アドレスに変換する。そして実サーバ12-1は、送信元IPアドレスが仮想アドレスに変換された通信データを、図1(b)に示すようにクライアント11に対して直接送信する(ステップS11)。この通信データの宛先MACアドレス及び宛先IPアドレスには、クライアント11のMACアドレス及びIPアドレスが用いられる。ここで、クライアント11のMACアドレスを取得するためのARP(Address Resolution Protocol;アドレス解決プロトコル)要求によるアドレス解決は、仮想アドレスではなくて実サーバ12-1自身のIPアドレスで行われる。この実サーバ12-1自身のIPアドレスで行われるアドレス解決は、以下に述べるように、クライアント(セグメントが異なる場合はルータ)のARPテーブル上に作成されたデータが書き換えられるのを防止するためである。なお、通信データの転送先として、実サーバ12-1以外のサーバ、つまり実サーバ12-2または12-3が選択された場合も、同様の動作が行われる。
次に、ARP要求によるアドレス解決について図2を参照して説明する。実サーバ12-1乃至12-3のうちの例えば実サーバ12-1がクライアント11に対し通信データ(通信パケット)を送信するために、当該クライアント11のMACアドレスを取得する必要があるものとする。この場合、実サーバ12-1は、自身のIPアドレス“192.168.10.11”を送信元IPアドレスとし、クライアント11のIPアドレスをターゲットIPアドレスとして使用して、クライアント11に対するARP要求(ARP要求パケット)を送信する(ステップS21)。クライアント11は、この実サーバ12-1からのARP要求に対して、自身のMACアドレスを通知するためのARP応答(ARP応答パケット)を当該実サーバ12-1に返す(ステップS22)、これにより実サーバ12-1はクライアント11のMACアドレスを取得する。そこで実サーバ12-1は、ARP応答のデータに基づき、クライアント11宛ての通信データを、自身のIPアドレスではなくて仮想アドレス(負荷分散装置16上の仮想サーバのIPアドレス)“192.168.10.11”を送信元IPアドレスとして送信する(ステップS23)。
上記したように、実サーバ12-1からクライアント11に対するARP要求の送信に、実サーバ12-1からクライアント11に対する通信データ送信と異なって、送信元IPアドレスとして仮想アドレスではなくて実サーバ12-1自身のIPアドレスを用いるのは、次の理由による。即ち、クライアント11のARPテーブル(ネットワーク13及びネットワーク14のネットワークアドレスが同一、つまりセグメントが同一の場合)またはルータ15のARPテーブル(ネットワーク13及びネットワーク14のネットワークアドレスが異なる、つまりセグメントが異なる場合)に作成されたデータが、書き換えられないようにするためである。
仮に、実サーバ12-1から仮想アドレス“192.168.10.10”でARP要求が送信されるならば、図3に示すように、負荷分散装置16のMACアドレスで作成されたARPテーブル110のデータ(負荷分散装置16のMACアドレスと仮想アドレスとを含むデータのMACアドレス)が、実サーバ12-1のMACアドレスに書き換わる。この場合、次に送信される仮想サーバ(仮想アドレス)宛ての通信データは、このARPテーブル110のデータに基づき、負荷分散装置16ではなくて実サーバ12-1のMACアドレスに送信されてしまう。本実施形態では、(実サーバにサービスを要求するための)仮想アドレス宛て通信データは全て負荷分散装置16を中継させる必要があるため問題である。
そこで本実施形態では、実サーバ12-1はクライアント11に通信データを送信する場合と異なって、上述のようにARP要求の送信元IPアドレスに仮想アドレス“192.168.10.10”ではなくて実サーバ12-1自身のIPアドレス“192.168.10.11”を使用する。この場合、クライアント11またはルータ15のARPテーブル110には、図4に示すように実サーバ12-1のIPアドレス“192.168.10.11”を含むエントリデータが追加登録される。このため、負荷分散装置16のMACアドレスで作成されたデータ(負荷分散装置16のMACアドレスと仮想アドレスとを含むデータ)は書き換えられない。この場合、次に送信される仮想アドレス宛ての通信データは、このARPテーブル110のデータに基づき、負荷分散装置16のMACアドレスに送信される。
上述したように本実施形態では、クライアント11が送信する通信データ(通信パケット)のみ負荷分散装置16を通過する。これに対して、実サーバ12-1乃至12-3が送信する通信データは負荷分散装置16を通過しない。このため、従来の負荷分散装置の問題である負荷分散装置上の通信負荷を減らすことができる。
また本実施形態では、IPアドレスの変換が実サーバ上で行われ、負荷分散装置16におけるIPアドレスの変換が発生しない。これにより、既存の負荷分散装置の問題であるIPアドレス変換による処理の負荷を発生しないようにすることができる。
次に、図1のシステムにおける上述の動作を整理して、図5のシーケンスチャートを参照して説明する。なお、以下の説明では説明を簡略化するために、ネットワーク13及びネットワーク14が同一ネットワークアドレスであり、クライアント11は実サーバ12-1乃至12-3及び負荷分散装置16と同一セグメントに存在するものとする。
まずクライアント11は、実サーバにサービスを要求するための仮想アドレス“192.168.10.10”宛ての通信データ(仮想サーバ宛ての通信データ)を送信するため、仮想アドレス“192.168.10.10”に対するARP要求によるアドレス解決を行う。即ちクライアント11は、仮想アドレス“192.168.10.10”に対するARP要求(ARP要求パケット)を送信する(ステップS31)。負荷分散装置16は、クライアント11からの仮想アドレス“192.168.10.10”に対するARP要求に応じて、当該負荷分散装置16のMACアドレスを当該クライアント11に通知するためのARP応答(ARP応答パケット)を返す(ステップS32)。これによりクライアント11は、仮想アドレス“192.168.10.10”宛ての通信データを送信すべきMACアドレス(ここでは負荷分散装置16のMACアドレス)を取得する。この結果、クライアント11のARPテーブル110には、仮想アドレス“192.168.10.10”に対応付けて負荷分散装置16のMACアドレスが登録される。
クライアント11はアドレス解決の結果、仮想アドレス“192.168.10.10”宛ての通信データを送信すべきMACアドレスを取得すると、当該仮想アドレス“192.168.10.10”宛ての通信データを負荷分散装置16のMACアドレスに送信する(ステップS33)。
負荷分散装置16は、クライアント11からの仮想アドレス“192.168.10.10”宛ての通信データを受信する。すると負荷分散装置16は、予め登録されている実サーバ12-1乃至12-3の各々のMACアドレスから負荷分散のアルゴリズムに基づき通信データを転送すべき実サーバを決定する。ここでは、実サーバ12-1が通信データを転送すべき実サーバとして決定されたものとする。この場合、負荷分散装置16は、受信した通信データを自身が決定した実サーバ12-1のMACアドレス宛てに転送する(ステップS34)。
すると実サーバ12-1は、負荷分散装置16によって転送されたクライアント11からの通信データ(通信パケット)を受信する。実サーバ12-1が通信データをクライアント11に送信するためには、ARP要求により当該クライアント11のMACアドレスを取得する必要がある。しかし、このARP要求により、ステップS32で作成された、クライアント11のARPテーブル110上のデータ(仮想アドレス“192.168.10.10”に対応付けられた負荷分散装置16のMACアドレス)が書き換えられないようにしなければならない。そこで実サーバ12-1は、クライアント11からの通信データの宛先IPアドレスである仮想アドレス“192.168.10.10”ではなくて、当該実サーバ12-1自身のIPアドレス“192.168.10.11”を送信元IPアドレスとするARP要求(ARP要求パケット)を送信する(ステップS35)。このARP要求のターゲットIPアドレスには、負荷分散装置16によって転送された通信データの送信元IPアドレス、つまりクライアント11のIPアドレスが用いられる。
クライアント11は、実サーバ12-1からのARP要求に対して、自身のMACアドレスを通知するためのARP応答(ARP応答パケット)を当該実サーバ12-1に返す(ステップS36)。この際、クライアント11のARPテーブル110には、実サーバ12-1のIPアドレス“192.168.10.11”に対応付けて当該実サーバ12-1のMACアドレスが登録される。したがって、仮想アドレス“192.168.10.10”に対応付けてARPテーブル110に登録されている負荷分散装置16のMACアドレスが実サーバ12-1のMACアドレスに書き換えられることはない。
実サーバ12-1はクライアント11からのARP応答(ARP応答パケット)により当該クライアント11のMACアドレスを取得する。そこで実サーバ12-1は、送信元IPアドレスが当該実サーバ12-1自身のIPアドレスから仮想アドレス“192.168.10.10”に変換された通信データをクライアント11に対して直接送信する(ステップS37)。この通信データの宛先MACアドレス及び宛先IPアドレスには、前述したようにクライアント11のMACアドレス及びIPアドレスが用いられる。
クライアント11のARPテーブル110にデータが作成された後は、当該クライアント11が実サーバにサービスを要求するための仮想アドレス宛ての通信データを、当該ARPテーブル110のデータに基づいて送信する。ここでは、ステップS35での実サーバ12-1からのARP要求に応じてARPテーブル110のデータ(負荷分散装置16のMACアドレスで作成されたデータ)が書き換えられないため、クライアント11は仮想アドレス宛ての通信データを負荷分散装置16のMACアドレスに送信する(ステップS38)。負荷分散装置16は、クライアント11からの仮想アドレス宛ての通信データを受信すると、負荷分散のアルゴリズムに基づき当該通信データを転送すべき実サーバ(のMACアドレス)を決定する。負荷分散装置16は、クライアント11からの仮想アドレス宛ての通信データを、決定された実サーバ、例えば実サーバ12-1のMACアドレスに転送する(ステップS39)。
次に実サーバ12-i(i=1,2,3)が、負荷分散装置16上にMACアドレスを登録するための方法について、図6のシーケンスチャートを参照して説明する。ここでは、負荷分散装置16及び実サーバ12-iには、手動で仮想アドレスが設定されるものとする。実サーバ12-iは、負荷分散装置16によりクライアント11からのサービス要求を振り分けてもらうため、以下に述べる手順でMACアドレスを登録するための処理を行う。
まず実サーバ12-iは、仮想アドレスに対するARP要求(ARP要求パケット)によるアドレス解決を行う(ステップS41,S42)。これにより実サーバ12-iは、仮想アドレスを持つ負荷分散装置16のMACアドレスを取得する。
次に実サーバ12-iは、ARP要求に対するARP応答(ARP応答パケット)の送信元のIPアドレス(つまり仮想アドレス)及びMACアドレスを宛先のIPアドレス及びMACアドレスとするパケット転送の登録要求(登録要求パケット)を送信する(ステップS43)。この登録要求は、IP層以上のパケットを使用する必要があると共に、有効期限の情報を含んでいる必要がある。ここで有効期限の値が0の登録要求(後述する登録解除要求)は、実サーバ12-iが明示的にパケットの転送の停止を要請する場合に使用されるものとする。このような場合としては、実サーバ12-iにて自身の障害を検知した場合が相当する。
負荷分散装置16は、実サーバ12-iからの登録要求を受信した後、要求データが正当かどうかを判別する。負荷分散装置16は、要求データが正当な場合、登録成功として登録要求元の実サーバ12-iを負荷分散対象として新規登録、または登録の更新(既に登録済みの場合)を行う。その後、負荷分散装置16は登録要求のIPアドレス及びMACアドレスの送信元アドレスに対して、負荷分散のためのパケット転送の開始を示す登録応答(登録応答パケット)を送信する(ステップS44)。この登録応答は、IP層以上のパケットを使用する必要があると共に、登録成功または失敗を意味する情報を含んでいる必要がある。実サーバ12-iは登録応答を受信すると、以後定期的に登録要求を負荷分散装置16に送信する。
図7は、登録要求パケット71及び登録応答パケット72のデータフォーマットを示す。登録要求パケット71のデータリンク層ヘッダの宛先MACアドレスには負荷分散装置16のMACアドレスが、IPヘッダの宛先IPアドレスには仮想アドレスが、それぞれ用いられる。また、登録要求パケット71のデータリンク層ヘッダの送信元MACアドレスには実サーバ12-iのMACアドレスが、IPヘッダの送信元IPアドレスには実サーバ12-iのIPアドレスが、それぞれ用いられる。登録要求パケット71(の後述するIPペイロード)には、有効期限(の値)を含む登録要求データが設定される。
負荷分散装置16は、実サーバ12-iから有効期限の値が0以外の登録要求パケット71を受信した場合、登録テーブル(後述する登録テーブルTBL1)に当該実サーバ12-iのデータ、即ち当該実サーバ12-iのMACアドレスと有効期限とを含むエントリデータを追加登録する。このようにして登録された実サーバ12-iは、負荷分散装置16による負荷分散対象となり得るサーバの1台として扱われる。
負荷分散装置16は、実サーバ12-iから有効期限の値が0の登録要求パケットを受信した場合には、当該登録要求パケットで指定されるデータを上記登録から削除して、当該実サーバ12-iを負荷分散の対象から外す。同様に負荷分散装置16は、実サーバ12-iからの登録要求パケット内の有効期限を超過すると、当該登録要求パケットで指定されるデータを上記アドレス情報のテーブルから削除して、当該実サーバ12-iを負荷分散の対象から外す。
実サーバ12-iは、登録応答パケットを受信して登録成功であることが確認できた場合、登録テーブル(後述する登録テーブルTBL3)に仮想アドレスと負荷分散装置16のMACアドレスと有効期限の値とを含むエントリデータ(アドレス情報)を追加登録する。そして実サーバ12-iは、負荷分散装置16を中継した通信を開始する。また実サーバ12-iは、それ以降、登録の有効期限以内の間隔で定期的に登録要求を負荷分散装置16に送信することにより、登録を維持する。
図8は負荷分散装置16の構成を示すブロック図である。負荷分散装置16は、ネットワークIF(ネットワークインタフェース)161と、データリンク層処理部162と、IP層処理部163と、トランスポート層処理部164と、登録テーブルTBL1と、セッション管理テーブルTBL2とを含む。負荷分散装置16はまた、登録処理部165と、ARP処理部166と、パケット転送処理部167と、負荷分散処理部168とを含む。
ネットワークIF161は、負荷分散装置16が接続されているネットワーク14とのインタフェースをなす。ネットワークIF161は、IF入力部161aと、IF出力部161bとを有する。データリンク層処理部162は、データリンク入力部162aと、データリンク出力部162bとを有する。IP層処理部163は、IP入力部163aと、IP出力部163bとを有する。
次に、負荷分散装置16内の各部の動作を順次説明する。ネットワークIF161内のIF入力部161aは、ネットワーク14を介して入力された通信データ(通信パケット)を全てデータリンク層処理部162内のデータリンク入力部162aに送る。ネットワークIF161内のIF出力部161bは、データリンク層処理部162内のデータリンク出力部162bから出力された通信パケットをネットワーク14へ送信する。
ここで、負荷分散装置16内のデータリンク入力部162aの動作について、図9のフローチャート及び図10のデータフォーマットを参照して説明する。まず、IF入力部161aからデータリンク入力部162aには、図10(a)に示す通信パケット101が入力される。パケット101は、データリンク層ヘッダと、IPヘッダと、IPペイロードとを含む。IPヘッダとIPペイロードとから構成されるデータをIPパケットと呼ぶ。データリンク入力部162aは、IF入力部161aによって入力された通信パケット101を受信すると、当該パケット(入力パケット)101を、そのまま図10(b)に示すパケット102としてパケット転送処理部167に送る(ステップS51)。
次に、負荷分散装置16内のデータリンク出力部162bの動作について、図11のフローチャート及び図12のデータフォーマットを参照して説明する。まずデータリンク出力部162bは、IP出力部163b、登録処理部165、ARP処理部166またはパケット転送処理部167から、図12に示すMACアドレス111とIPパケッ112とを受け取る。このMACアドレス111には、送信先MACアドレスが用いられる。データリンク出力部162bは、MACアドレス111とIPパケット112とから、データリンク層での通信に用いられる図12に示す通信パケット113を生成する(ステップS61)。このパケット113は、データリンク層ヘッダと、上記IPパケット112とから構成される。データリンク層ヘッダは、宛先MACアドレスと、送信元MACアドレスとを含む。宛先MACアドレスには、MACアドレス111が用いられる。データリンク出力部162bは生成された通信パケット113をIF出力部161bに送る(ステップS62)。
次に、負荷分散装置16内の登録処理部165の登録要求入力時の動作について、図13のフローチャート、図14の登録テーブルTBL1のデータ構造例及び図15のデータフォーマットを参照して説明する。
登録処理部165は、パケット転送処理部167から(図7に示す登録要求パケット71に相当する)図15に示す登録要求パケット151が入力された場合、当該パケット151の処理の過程で登録テーブルTBL1を対象とするエントリデータの追加/削除を行う。
ここで登録テーブルTBL1に登録されるエントリデータは、図14に示すように、負荷分散装置16上で負荷分散の対象として予め登録しておく仮想サーバの仮想アドレス毎に管理される。ここでは負荷分散装置16は、図1の場合と異なり、仮想アドレス“192.168.10.10”に加えて、もう1つの仮想アドレス“192.168.10.110”を持っているものとする。このことは、2つの仮想アドレスの各々に対応する仮想サーバ毎に、負荷分散が行えることを意味する。
さて、仮想アドレスに対応付けて管理される登録テーブルTBL1のエントリデータは、実サーバ12-iのMACアドレス及び有効期限のデータを含む。このことは、登録テーブルTBL1のエントリデータが、仮想アドレスと実サーバ12-iのアドレスと有効期限のデータとを含むことと等価である。この有効期限は、負荷分散装置16による負荷分散の対象である実サーバにパケットを転送する期間を意味し、有効期限が超過すると当該有効期限を含むエントリデータ中のMACアドレスの実サーバに対するパケットの転送が停止される。
図14の登録テーブルTBL1の例では、仮想アドレス“192.168.10.10”に対応付けて3台の実サーバが負荷分散対象として登録されると共に、仮想アドレス“192.168.10.110”に対応付けて2台の実サーバが負荷分散対象として登録されている。このことは、図16を用いて後述するように、仮想アドレスを“192.168.10.10”とする実サーバ群(実サーバ集合)#1と、仮想アドレスを“192.168.10.110”とする実サーバ群(実サーバ集合)#2とを、負荷分散装置16が扱うことを意味している。
登録処理部165は、パケット転送処理部167から図15に示す登録要求パケット151が入力された場合、当該パケット151の宛先IPアドレスが登録テーブルTBL1に登録されている仮想アドレスと一致するかを判定する(ステップS71)。もし、入力された登録要求パケット151の宛先IPアドレスに一致する仮想アドレスが存在しない場合、登録処理部165は処理を終了する。
これに対し、入力された登録要求パケット151の宛先IPアドレスに一致する仮想アドレスが存在する場合(ステップS71)、登録処理部165は登録要求パケット151の示す登録要求が正当であるかを判定する(ステップS72)。登録要求が正当でない登録要求パケット151の例としては、予め定められた上限値(有効期限の最大値)を超える有効期限の値を含むものが挙げられる。もし、登録要求が正当である場合、登録処理部165は、登録要求パケット151中の登録要求データに含まれている有効期限の値が0であるかを判定する(ステップS73)。
有効期限の値が有効期限の最大値を超えずに且つ0以外の場合、登録処理部165は登録成功を判定する。この場合、登録処理部165は、登録要求パケット151に設定されている送信元MACアドレス及び当該有効期限の値を含むエントリデータを、当該登録要求パケット151の宛先IPアドレスに一致する仮想アドレスに対応付けて、登録テーブルTBL1に追加登録する(ステップS74)。但し、登録要求パケット151に設定されている送信元MACアドレスに一致するMACアドレスを含むエントリデータが、当該登録要求パケット151の宛先IPアドレスに一致する仮想アドレスに対応付けて既に登録テーブルTBL1に登録されている場合、上記ステップS74では、当該エントリデータの有効期限の値を、当該登録要求パケット151中の登録要求データに含まれている有効期限の値に変更(更新)する処理が行われる。
一方、登録要求が正当でないか(ステップS72)、或いは有効期限の値が0の場合(ステップS73)、登録処理部165は、登録要求パケット151に設定されている送信元MACアドレスに一致するMACアドレスを含むエントリデータが、当該登録要求パケット151の宛先IPアドレスに一致する仮想アドレスに対応付けて登録テーブルTBL1に登録されているかチェックし、登録されているならば当該エントリデータを登録テーブルTBL1から削除する(ステップS75)。このことは、有効期限の値が0の登録要求パケット151が登録解除を要求するパケット(登録解除要求パケット)として用いられることを意味する。したがって実サーバ12-iは自身の障害が発生した場合に、この登録解除要求パケットを負荷分散装置16に送信して当該実サーバ12-iの障害を通知することで、クライアント11からの通信データが負荷分散装置16によって当該実サーバ12-iに転送されるのを防止できる。なお、登録要求パケット151に設定されている送信元MACアドレスに一致するMACアドレスを含むエントリデータが(当該登録要求パケット151の宛先IPアドレスに一致する仮想アドレスに対応付けて)登録テーブルTBL1に登録されていない場合、ステップS75では何も行われない。
登録処理部165は、ステップS74またたはS75を実行すると、登録要求パケット151の送信元IPアドレス(実サーバ12-iのIPアドレス)を使用して、(図7に示す登録応答パケット72のIPパケットに相当する)図15に示す登録応答パケット(IPパケット)153を生成する(ステップS76)。この登録応答パケット153のIPペイロードには、登録結果のデータを含む登録応答データが設定される。ここで、登録失敗の場合には、登録結果のデータとして有効期限に問題があることを示すデータが用いられる。これに対し、登録成功の場合には、登録結果のデータとして登録成功を示すデータが用いられる。また、有効期限の値が0の登録要求パケット151に対応する登録応答パケット153では、登録結果のデータとして登録解除成功を示すデータが用いられる。
登録応答パケット153の宛先IPアドレスには、登録要求パケット151の送信元IPアドレス(実サーバ12-iのIPアドレス)が用いられ、当該登録応答パケット153の送信元IPアドレスには仮想アドレスが用いられる。登録処理部165は、生成された登録応答パケット153を、登録要求パケット151の送信元に送信するため、当該登録応答パケット153と、図15に示す登録要求パケット151のデータリンク層ヘッダに含まれている送信元MACアドレス152、つまり登録要求パケット151の送信元MACアドレス152とを、データリンク出力部162bに送る(ステップS77)。
上記したように、図14の登録テーブルTBL1の例では、負荷分散装置16の持つ仮想アドレスとして、“192.168.10.11”(仮想アドレス1)の他に“192.168.10.110”(仮想アドレス2)も存在する。その理由について、図16を参照して説明する。
本実施形態では、負荷分散装置16による負荷分散の対象となる実サーバ群(実サーバの集合)として、図1中の実サーバ12-1乃至12-3を含む実サーバ群#1の他に、図16に示すように実サーバ群#2も存在するものとする。実サーバ群#2は、実サーバ12-5及び12-6を含む。負荷分散装置16は、実サーバ群#1に属する実サーバ12-1乃至12-3に対応する仮想サーバの仮想アドレス1“192.168.10.11と、実サーバ群#2に属する実サーバ12-5及び12-6に対応する仮想サーバの仮想アドレス2“192.168.10.110とを持つ。
図16の例では、クライアント11から仮想アドレス“192.168.10.11”宛ての通信パケット(通信データ)が矢印A1で示されるように送信された場合、負荷分散装置16は当該通信データを実サーバ群#1に属するいずれかの実サーバに転送する。これに対して、クライアント11から仮想アドレス“192.168.10.110”宛ての通信パケット(通信データ)が矢印A2で示されるように送信された場合には、負荷分散装置16は当該通信データを実サーバ群#2に属するいずれかの実サーバに転送する。このように、実サーバ群毎に、その実サーバ群に属する全ての実サーバに共通の仮想アドレスが設定されることで、負荷分散装置16は各実サーバ群をそれぞれ異なる負荷分散の対象として扱うことができる。
登録処理部165は、定期的に登録テーブルTBL1を監視し、有効期限が0となっているエントリデータを当該登録テーブルTBL1から削除する。この登録処理部165による登録テーブルTBL1の定期監視処理について図17のフローチャートを参照して説明する。ここでは、登録テーブルTBL1に登録されるエントリデータの有効期限の単位に秒が用いられ、当該テーブルTBL1の監視が1秒毎に実行されるものとする。
登録処理部165は登録テーブルTBL1からエントリデータ(アドレス情報)を1つ取り出す(ステップS81)。登録処理部165は取り出されたデータに含まれている有効期限の値が0であるかを判定する(ステップS82)。
もし、有効期限の値が0(0秒)の場合、登録処理部165は登録テーブルTBL1から該当するデータを削除する(ステップS83)。これに対し、有効期限の値が0でない場合、登録処理部165は登録テーブルTBL1の該当するデータに含まれている有効期限の値を1(1秒)減らす(ステップS84)。
登録処理部165は、上述の処理を、登録テーブルTBL1の全エントリデータに対して行い(ステップS85)、処理を終了する。
さて実サーバ12-iは、登録要求パケットに対して負荷分散装置16から返される登録応答パケットから登録成功が確認できた場合、前記したように登録の有効期限以内の間隔で定期的に登録要求パケットを負荷分散装置16に送信する。これにより実サーバ12-iは、登録テーブルTBL1から当該実サーバ12-iのMACアドレスを含むデータが削除されるのを防ぎ、当該実サーバ12-iの登録を維持することができる。もし、実サーバ12-iに障害が発生して、登録要求パケットを定期的に送信することができなくなると、当該実サーバ12-iのMACアドレスを含むデータの登録有効期限が切れるため、負荷分散装置16の登録処理部165は登録テーブルTBL1から当該データを削除する(ステップS83)。つまり負荷分散装置16は、障害が発生したために登録要求を定期的に送信できなくなった実サーバ12-iを検知できる。これにより、障害の発生した実サーバ12-iにクライアント11からの通信データを転送することが防止できる。
次に、負荷分散装置16内のARP処理部166の動作について、図18のフローチャート及び図19のデータフォーマットを参照して説明する。ARP処理部166はパケット転送処理部167からパケットを受信した場合、当該パケットがARP要求パケットであるかを判定する(ステップS91)。パケット転送処理部167から受信したパケット(受信パケット)がARP要求パケットでない場合、ARP処理部166は当該受信パケットをIP入力部163aに送り、通常のTCP/IP通信データとして処理させる(ステップS92)。
これに対し、パケット転送処理部167からの受信パケットが、実サーバ12-iからの図19に示すARP要求パケット191の場合、ARP処理部166は登録テーブルTBL1をチェックして、当該ARP要求パケット191のターゲットIPアドレスと一致する仮想アドレスが存在するかを判定する(ステップS93)。もし、ARP要求パケット191のターゲットIPアドレスが仮想アドレスと一致しない場合、ARP処理部166は当該ARP要求パケット191をIP入力部163aに送り、通常のTCP/IP通信データとして処理させる(ステップS92)。
一方、ARP要求パケット191のターゲットIPアドレスに一致する仮想アドレスが登録テーブルTBL1に存在する場合(ステップS93)、ARP処理部166はARP要求パケット191に対する図19に示すARP応答パケット193を作成する(ステップS94)。このARP応答パケット193には、送信元MACアドレスに負荷分散装置16のMACアドレスが設定され、送信元IPアドレスに登録テーブルTBL1で一致が判定された仮想アドレスが設定される。また、ターゲットMACアドレス及びターゲットIPアドレスには、それぞれARP要求パケット191の送信元MACアドレス(実サーバ12-iのMACアドレス)及び送信元IPアドレス(実サーバ12-iのIPアドレス)が設定される。
ARP処理部166はARP応答パケット193を作成すると、当該ARP応答パケット193を、ARP要求パケット191の送信元に送信するため、当該ARP応答パケット193と、ARP要求パケット191の送信元MACアドレス192とを、データリンク出力部162bに送る(ステップS95)。
次に、負荷分散装置16内のパケット転送処理部167の動作について、図20のフローチャート及び図21のデータフォーマットを参照して説明する。まず、データリンク入力部162aからパケット転送処理部167に入力される通信パケット(データリンク層パケット)は、データフォーマット上、図21(a)に示すパケット211と図21(b)に示すパケット212とに大別される。パケット211は、データリンク層ヘッダとIPパケットとを含む。IPパケットは、IPヘッダ及びIPペイロードから構成される。
一方、パケット212は、データリンク層ヘッダと、ARP要求/応答(ARP要求またはARP応答)のデータとを含むARPパケット(ARP要求/応答パケット)である。パケット211及び212のデータリンク層ヘッダは、いずれも宛先MACアドレス及び送信元MACアドレスを含む。
パケット転送処理部167は、データリンク入力部162aによって入力された通信パケットを受信すると、当該パケット(入力パケット)が図20(b)に示すフォーマットのARPパケット212であるかを判別する(ステップS101)。もし、入力パケットがARPパケット212であるならば、パケット転送処理部167は、当該ARPパケット212からデータリンク層ヘッダを除いた部分(ARP要求/応答)を、図21(c)に示すARPパケット213としてARP処理部166に送る(ステップS102)。
これに対し、入力パケットがARPパケット212でないならば、つまり図20(a)に示すフォーマットのパケット211であるならば(ステップS101)、パケット転送処理部167は当該入力パケット(パケット211)が(図15の登録要求パケット151に相当する)登録要求パケットであるかを判定する(ステップS103)。もし、入力パケット(パケット211)が登録要求パケットの場合、パケット転送処理部167は当該入力パケット(パケット211)を図21(d)に示す登録要求パケット214としてそのまま登録処理部165に送る(ステップS104)。
一方、入力パケット(パケット211)が登録要求パケットではない場合、パケット転送処理部167は、転送先(負荷分散先)の実サーバ12-iのMACアドレスを取得するために、当該入力パケット(パケット211)からデータリンク層ヘッダを除いた部分を、図20(e)に示すIPパケット215として負荷分散処理部168に送る(ステップS105)。
パケット転送処理部167は、負荷分散処理部168から転送先のMACアドレスを図21(f)に示すMACアドレス216として取得できた場合(ステップS106)、負荷分散処理部168に送った図21(e)に示すIPパケット215を図21(f)に示すIPパケット217として、取得されたMACアドレス216と共にデータリンク出力部162bに送る(ステップS107)。これに対し、転送先のMACアドレスの取得に失敗した場合、パケット転送処理部167は負荷分散処理部168に送った図21(e)に示すIPパケット215を図21(g)に示すIPパケット218としてIP入力部163a送り、通常のTCP/IP通信データとして処理させる(ステップS108)。
次に、負荷分散装置16内の負荷分散処理部168の動作について、図22のフローチャート及び図23のセッション管理テーブルTBL2のデータ構造例を参照して説明する。負荷分散処理部168は、パケット転送処理部167から図21(e)のIPパケット215が送られると登録テーブルTBL1をチェックして、当該IPパケット215の宛先IPアドレスと一致する仮想アドレスが存在するかを判定する(ステップS111)。
もし、パケット転送処理部167から送られたIPパケット215の宛先IPアドレスに一致する仮想アドレスが登録テーブルTBL1に存在しない場合、負荷分散処理部168は当該IPパケット215が負荷分散対象となるパケットではないと判定する。この場合、負荷分散処理部168はパケット転送処理部167にエラーを返して処理を終了する(ステップS112)。パケット転送処理部167は、負荷分散処理部168からエラー応答を受け取ると、IPパケット215を通常のTCP/IP通信データとして処理させるために、前述したように当該IPパケット215をIP入力部163aに送る(図20ステップS106,S108)。
これに対し、パケット転送処理部167から送られたIPパケット215の宛先IPアドレスに一致する仮想アドレスが登録テーブルTBL1に存在する場合(ステップS111)、負荷分散処理部168は、当該IPパケット215を転送すべき実サーバ12-iのMACアドレスを取得するため、セッション管理テーブルTBL2をチェックする(ステップS113)。
セッション管理テーブルTBL2はセッション管理のために用意される。セッション管理テーブルTBL2のエントリデータ(エントリの集合)は、図23に示すように仮想アドレス別に用意され(つまり仮想アドレスに対応付けて用意され)、クライアントのIPアドレス、実サーバのMACアドレス及び有効期限の値を持つものとする。
セッション管理とは、コネクション型通信の場合、セッションが切れるまでの間同一のサーバに通信データを転送する必要があるため、当該セッションを保持しておく有効期限を設けて管理することを指す。有効期限の間に、クライアントからパケットの送信が無ければ、負荷分散処理部168はセッションが切れたと判断し、セッション管理テーブルTBL2から該当するエントリデータを削除する。またパケット転送処理部167から送られるIPパケット215が、TCPのFINパケットのように、明示的にセッション(コネクション)を停止(切断)するパケットの場合にも、負荷分散処理部168はセッションが切れたと判断して、セッション管理テーブルTBL2から該当するエントリデータを削除する。
さて、上記ステップS113において負荷分散処理部168は、セッション管理テーブルTBL2のうち、パケット転送処理部167から送られるIPパケット215の宛先IPアドレスと一致する仮想アドレスに対応付けられたエントリの集合から、当該IPパケット215の送信元IPアドレスがクライアントのIPアドレスと一致するエントリのデータを検索する。
もし、セッション管理テーブルTBL2に該当するエントリのデータが存在する場合(ステップS113)、負荷分散処理部168は、パケット転送処理部167に転送先のMACアドレスを通知するため、当該エントリのデータからIPパケット215の送信元IPアドレスと対をなす実サーバ12-iのMACアドレスを取得(選択)する(ステップS114)。次に負荷分散処理部168は、IPパケット215がTCPのFINパケットであるかを判定する(ステップS115)。
もし、IPパケット215がFINパケットである場合、負荷分散処理部168はセッション管理テーブルTBL2から該当するエントリのデータを削除する(ステップS116)。これに対し、IPパケット215がFINパケットでない場合、負荷分散処理部168はセッション管理テーブルTBL2の該当するエントリのデータに含まれている有効期限の値を初期値に設定する(ステップS117)。この初期値は必ずしも固定値である必要はなく、負荷分散装置16で変更可能なパラメータとしても良い。例えば、負荷分散装置16の管理者が環境に合わせて手動にて初期値(例えば3分)を設定する構成であっても構わない。またこの初期値は、後述するセッション管理テーブル登録時に使用しても良い。
一方、セッション管理テーブルTBL2に該当するエントリのデータが存在しない場合(ステップS113)、負荷分散処理部168は、登録テーブルTBL1(図14参照)上でIPパケット215の宛先IPアドレス(例えば“192.168.10.10”)と一致する仮想アドレスに対応付けられたエントリの集合から、当該IPパケット215を転送すべき実サーバ12-iに関するエントリのデータを選択(決定)する(ステップS118)。つまり負荷分散処理部168は、IPパケット215を転送すべき実サーバ12-iを決定する。どの実サーバが最適な転送先(負荷分散先)であるかを決定する方法は、本発明とは直接関係しないが、従来から種々知られている。例えば、クライアントとの間でセッションを張っている数の最も少ないサーバを選択する方法が知られている。この方法を適用した場合、実サーバのMACアドレス毎の登録テーブルTBL1のデータ数を計算すれば、転送先として最適な実サーバを決定できる。
負荷分散処理部168は転送先の実サーバ12-iを決定すると、登録テーブルTBL1の該当するエントリのデータから当該実サーバ12-iのMACアドレスを取得する(ステップS119)。そして負荷分散処理部168は、この実サーバ12-iのMACアドレス、IPパケット215の送信元IPアドレス(クライアントのIPアドレス)及びセッションを保持する有効期限を含むエントリデータを、当該IPパケット215の宛先IPアドレスと一致する仮想アドレスに対応付けて、セッション管理テーブルTBL2に追加登録する(ステップS120)。これにより、IPパケット215の送信元と実サーバ12-iとのセッションが開始されることになる。ここでセッション管理テーブルTBL2に登録される有効期限は、負荷分散装置16で変更可能なパラメータとし、負荷分散装置16の管理者が環境に合わせて手動にて設定されるものとする。この有効期限の値が、上記ステップS117で設定される初期値と同一であっても構わない。
負荷分散処理部168はステップS116,S117またはS120の後、MACアドレスをパケット転送処理部167に送って処理を終了する。ここで、負荷分散処理部168からパケット転送処理部167に送られるMACアドレスは、IPパケット215の送信元IPアドレスがセッション管理テーブルTBL2に存在する場合(ステップS113のYESの場合)には、当該セッション管理テーブルTBL2から取得されたMACアドレスである。これに対し、IPパケット215の送信元IPアドレスがセッション管理テーブルTBL2に存在しない場合(ステップS113のNOの場合)には、負荷分散処理部168からパケット転送処理部167に送られるMACアドレスは、登録テーブルTBL1上から転送先として決定された実サーバ12-iのMACアドレスである。
このように本実施形態では、負荷分散装置16においてセッション管理テーブルTBL2を用いることにより、レイヤ4のセッション管理が可能となる。特に本実施形態では、セッション管理テーブルTBL2に登録されるエントリデータが、固有の仮想アドレスに対応付けられる実サーバ群(実サーバの集合)毎に管理されるため、負荷分散装置16において複数の実サーバ群に対し負荷分散及びレイヤ4のセッション管理が可能となる。
負荷分散処理部168は、定期的にセッション管理テーブルTBL2を監視し、有効期限が0となっていエントリデータを当該セッション管理テーブルTBL2から削除する。この負荷分散処理部168によるセッション管理テーブルTBL2の定期監視処理について図24のフローチャートを参照して説明する。ここでは、セッション管理テーブルTBL2に登録されるエントリデータの有効期限の単位に秒が用いられ、当該テーブルTBL2の監視が1秒毎に実行されるものとする。
負荷分散処理部168はセッション管理テーブルTBL2からエントリデータを1つ取り出す(ステップS131)。負荷分散処理部168は取り出されたデータに含まれている有効期限の値が0であるかを判定する(ステップS132)。
もし、有効期限の値が0(0秒)の場合、負荷分散処理部168はセッション管理テーブルTBL2から該当するデータを削除する(ステップS133)。これに対し、有効期限の値が0でない場合、負荷分散処理部168はセッション管理テーブルTBL2の該当するデータに含まれている有効期限の値を1(1秒)減らす(ステップS134)。
負荷分散処理部168は、上述の処理を、セッション管理テーブルTBL2の全エントリデータに対して行い(ステップS135)、処理を終了する。
さて、IP層処理部163内のIP入力部163a及びIP出力部163bと、上位プロトコル層の処理部であるトランスポート層処理部164とは、入力されたデータを通常のTCP/IP通信データとして処理する。これにより、負荷分散装置16のIPアドレスを使用した通常の通信が可能となる。
図25は実サーバ12-iの構成を示すブロック図である。実サーバ12-iは、ネットワークIF(ネットワークインタフェース)121と、データリンク層処理部122と、IP層処理部123と、トランスポート層処理部124とを含む。また実サーバ12-iは、専用装置120と当該専用装置120によってアクセスされる登録テーブルTBL3及びセッション管理テーブルTBL4とを含む。専用装置120は、実サーバ12-iのデータリンク層処理部122とIP層処理部123との中間に存在する。本実施形態における専用装置120は、当該実サーバ12-i上の通信を制御する専用のソフトウェアを、実サーバ12-i(のCPU)が読み取って実行することにより実現されるものとする。これにより、実サーバ12-i自体を専用装置としなくて済む。この専用装置120の存在により、従来の実サーバが有するデータリンク層処理部122及びIP層処理部123の間のパス、即ちデータリンク入力部122a及びIP入力部123aの間のパスと、IP出力部123b及びデータリンク出力部122bの間のパスは存在しない。
ネットワークIF121は、実サーバ12-iが接続されているネットワーク14とのインタフェースをなす。ネットワークIF121は、IF入力部121aと、IF出力部121bとを有する。データリンク層処理部122は、データリンク入力部122aと、データリンク出力部122bとを有する。IP層処理部123は、IP入力部123aと、IP出力部123bとを有する。
専用装置120は、データリンク層処理部122(オリジナルのデータリンク層処理部122)に相当するデータリンク層処理部125とIP層処理部123(オリジナルのIP層処理部123)に相当するIP層処理部126とから構成される。データリンク層処理部125は、データリンク入力部125aと、データリンク出力部125bとを含む。IP層処理部126は、IP入力部126aと、IP出力部126bと、登録処理部126cと、アドレス変換処理部126dとを含む。
次に、実サーバ12-iの専用装置120を中心とする動作について説明する。専用装置120は、実サーバ12-i上のオリジナルのデータリンク層処理部122から、オリジナルのIP層処理部123に代わって通信パケット(データリンク層ヘッダを含むデータリンク層パケット)を受信して、当該専用装置120内部でデータ処理を行い、実サーバ12-iのオリジナルのIP層処理部123にIPパケットを送る。また専用装置120は、実サーバ12-iのオリジナルのIP層処理部123から、オリジナルのデータリンク層処理部122に代わってIPパケットまたはARP要求パケットを受信して、当該専用装置120内部でデータ処理を行い、実サーバ12-iのオリジナルのデータリンク層処理部122にデータリンク層パケットを送る。
次に、専用装置120内の各部の動作を順次説明する。
まず、専用装置120内のデータリンク入力部125aの動作について、図26のフローチャート及び図27のデータフォーマットを参照して説明する。データリンク入力部125aは、実サーバ12-iのオリジナルのデータリンク層処理部122(のデータリンク入力部122a)から、図27(a)に示すフォーマットの通信パケット(データリンク層パケット)271を受け取る。
するとデータリンク入力部125aは、パケット271が、(図7(b)に示す登録応答パケット72に相当する)登録応答パケットであるかを判定する(ステップS141)。もし、パケット271が登録応答パケットであるならば、データリンク入力部125aは当該パケット271を、そのまま図27(c)に示す登録応答パケット273として登録処理部126cに送る(ステップS142)。これに対し、パケット271が登録応答パケットでないならば、データリンク入力部125aは当該パケット271を、そのまま図27(b)に示すパケット272としてアドレス変換処理部126dに送る(ステップS143)。
次に、専用装置120内のデータリンク出力部125bの動作について、図28のフローチャート及び図29のデータフォーマットを参照して説明する。データリンク出力部125bは、登録処理部126cまたはアドレス変換処理部126dから、図29(a)に示す送信先MACアドレス291とIPパケット292とを受け取る。データリンク出力部125bは、この送信先MACアドレス291とIPパケット292とを、それぞれ図29(b)に示す送信先MACアドレス293とIPパケット294として、オリジナルのデータリンク層処理部122(のデータリンク出力部122b)に送る(ステップS151)。
次に専用装置120内の登録処理部126cの動作について説明する。登録処理部126cは、主として以下の処理A1乃至A3を行う。
(1)まず登録処理部126cは、負荷分散装置16への実サーバ12-iの登録を開始するため、専用装置120の起動時及び実サーバ12-iの管理者の操作により、登録要求(登録要求パケット)を生成してオリジナルのIP層処理部123に送信する(処理A1)。
(2)また登録処理部126cは、データリンク入力部125aから登録応答(登録応答パケット)を受信した場合に、登録テーブルTBL3にエントリデータを登録する(処理A2)。
(3)また登録処理部126cは、登録テーブルTBL3を定期的に監視し、有効期限がある値以下(但し0より大)になった場合に登録要求を送信し、有効期限が0となった場合に当該登録テーブルTBL3から該当するデータを削除する(処理A3)。
次に、登録処理部126cによる上記処理A1の詳細について、図30のフローチャート及び図31のデータフォーマットを参照して説明する。登録処理部126cは専用装置120の起動時に、負荷分散装置16への実サーバ12-iの登録を開始するため、図31に示す登録要求パケット311を生成する(ステップS161)。
登録要求パケット311の宛先IPアドレスには仮想アドレスが用いられ、送信元IPアドレスには実サーバ12-i自身のIPアドレスが用いられる。登録要求パケット311のIPペイロードには、パケット転送の登録の有効期限を示すデータを含む登録要求データが設定される。この登録の有効期限を、実サーバ12-iの管理者が自身で判断して専用装置120に設定可能な構成とすることも可能である。
登録処理部126cは、生成された登録要求パケット311をオリジナルのトランスポート層処理部124(のIP出力部123b)に送り、実サーバ12-iの通常のTCP/IP通信における送信データとして処理させる(ステップS162)。
以上の処理は、上述した専用装置120の起動時だけでなく、実サーバ12-iの管理者が負荷分散装置16への登録が必要と判断した場合に特別の操作を行うことによっても実行される。
次に、登録処理部126cによる上記処理A2の詳細について、図32のフローチャート及び図33のデータフォーマットを参照して説明する。この処理A2は、登録処理部126cがデータリンク入力部125aから(図7(b)に示す登録応答パケット72に相当する)図33に示す登録応答パケット331を受信した場合に実行される。この登録応答パケット331の送信元のMACアドレス及びIPアドレスには、それぞれ負荷分散装置16のMACアドレス及び仮想サーバの仮想アドレスが用いられ、宛先のMACアドレス及びIPアドレスには、それぞれ実サーバ12-iのMACアドレス及びIPアドレスが用いられている。また、登録応答パケット331のIPペイロードには、登録結果のデータを含む登録応答データが設定されている。
登録処理部126cは、データリンク入力部125aから登録応答パケット331を受信すると、当該パケット331の登録応答データに含まれている登録結果から登録成功かを判定する(ステップS171)。もし、登録成功の場合、登録処理部126cは、登録応答パケット331の送信元MACアドレス(負荷分散装置16のMACアドレス)と送信元IPアドレス(仮想アドレス)と有効期限とを含むエントリデータを登録テーブルTBL3に追加登録する(ステップS172)。ここで、有効期限には、上記ステップS161で登録要求パケット311を送信した際に当該パケット311に設定された値が用いられる。なお、登録解除成功の場合、登録処理部126cは上記ステップS172において、登録応答パケット331の送信元MACアドレスと送信元IPアドレスとを含むエントリデータを登録テーブルTBL3から削除する。
このように本実施形態においては、実サーバ12-iから送信される仮想アドレスを宛先IPアドレスとする登録要求パケットに対する負荷分散装置16内の登録処理部165による前記ステップS74の処理と、当該登録要求パケットに応じて負荷分散装置16から当該登録要求パケットの送信元(実サーバ12-i)に返される登録応答パケットに対する専用装置120内の登録処理部126cによる上記ステップS172の処理とにより、実サーバ12-i及び負荷分散装置16のMACアドレスを自動的に交換することができる。
一方、登録失敗の場合で(ステップS171)、その登録失敗の要因が有効期限にある場合、即ち登録応答パケット331の登録応答データに含まれている登録結果が有効期限に問題があることを示している場合(ステップS173)、登録処理部126cは前回送信した登録要求パケットよりも有効期限が短く設定された図33に示す新たな登録要求パケット333を生成する(ステップS174)。ここで、有効期限を短くするのに、必ず毎回ある一定の値を差し引く引く処理を行っても、前回送信した有効期限の値の一定の割り合いの時間を差し引く処理を行っても構わない。
登録処理部126cは、新たな登録要求パケット333を生成すると(ステップS174)、受信パケット(登録応答パケット331)の送信元MACアドレス(負荷分散装置16のMACアドレス)332と当該登録要求パケット333とを、データリンク出力部125bに送る(ステップS175)。この登録要求パケット333が負荷分散装置16で受信されることにより、登録テーブルTBL1の該当するエントリのデータに設定されている有効期限の値を、当該登録要求パケット333中に設定されている値に更新することができる。また、登録失敗が、有効期限以外の理由の場合(ステップS173)、登録処理部126cは受信パケットを破棄して処理を終了する(ステップS176)。
次に、登録処理部126cによる上記処理A3の詳細について、図34のフローチャート及び図35の登録テーブルTBL3のデータと登録処理部126cからの出力データとの関係を示す図を参照して説明する。ここでは、登録テーブルTBL3に登録されるエントリデータの有効期限の単位に秒が用いられ、当該テーブルTBL3の監視が1秒毎に実行されるものとする。
登録処理部126cは登録テーブルTBL3からエントリデータを1つ取り出す(ステップS181)。登録処理部126cは取り出されたデータに含まれている有効期限の値が0であるかを判定する(ステップS182)。
もし、有効期限の値が0(0秒)の場合、登録処理部126cは登録テーブルTBL3から該当するデータを削除する(ステップS183)。これに対し、有効期限の値が0でない場合、登録処理部166は有効期限の値がある一定の閾値、例えば10(10秒)以下であるかを判定する(ステップS184)。
もし、有効期限の値が0よりは大きいものの10以下であるならば、登録処理部126cは近い将来有効期限が到来して該当するエントリのデータが削除されるのを防止するために、新たな登録要求パケットを生成する(ステップS185)。これにより、図35の登録テーブルTBL3の例のように有効期限の値が9の場合であれば、登録要求パケット352が生成される。この登録要求パケット352の宛先IPアドレスには、登録テーブルTBL3中の該当するエントリのデータに含まれている仮想アドレス(ここでは“192.168.10.10”)が用いられる。なお、新たな登録要求パケットを送信する条件となる有効期限の閾値は10秒に限らない。例えば、この閾値を有効期限の初期値の1/2としても構わない。
登録処理部126cは、登録テーブルTBL3中の該当するエントリのデータに含まれている負荷分散装置16のMACアドレス351と生成された登録要求パケット352とをデータリンク出力部125bに送る(ステップS186)。この登録要求パケット352が負荷分散装置16で受信されることにより、登録テーブルTBL1の該当するエントリのデータに設定されている有効期限の値を、当該登録要求パケット352中に設定されている値に更新することができる。
登録処理部126cは上記ステップS186を実行すると、登録テーブルTBL3の該当するデータに含まれている有効期限の値を1(1秒)減らす(ステップS187)。一方、有効期限の値が10よりも大きい場合には(ステップS184)、登録処理部126cは上記ステップS185及びS186をスキップして、上記ステップS187を実行する。
次に、専用装置120内のアドレス変換処理部126dの動作について説明する。アドレス変換処理部126dは、主として以下の処理B1乃至B3を行う。
(1)まずアドレス変換処理部126dは、データリンク入力部125aからデータリンク層ヘッダを含む通信パケット(データリンク層パケット)を受け取った場合、当該パケットが負荷分散装置16から転送されたデータであれば、セッション管理テーブルTBL4に送信元IPアドレスを登録し、宛先IPアドレスを仮想アドレスから自身のIPアドレスへ変換して、IP入力部126aにIPパケットを渡す(処理A1)。
(2)またアドレス変換処理部126dは、IP出力部126bからIPパケットと宛先MACアドレスとを受け取った場合、当該IPパケットの宛先IPアドレスがセッション管理テーブルTBL4に登録されているならば、送信元アドレスを自身のIPアドレスから仮想アドレスへ変換してデータリンク出力部125bに渡す(処理B2)。
(3)またアドレス変換処理部126dは、セッション管理テーブルTBL4を定期的に監視し、有効期限が0となった場合に当該登録テーブルTBL4から該当するデータを削除する(処理B3)。
次に、アドレス変換処理部126dによる上記処理B1の詳細について、図36のフローチャート及び図37のセッション管理テーブルTBL4のデータ構造例を参照して説明する。今、アドレス変換処理部126dが、データリンク入力部125aから図27(b)の通信パケット(データリンク層パケット)272に相当する通信パケットを受け取ったものとする。この場合、アドレス変換処理部126dは登録テーブルTBL1をチェックし、データリンク入力部125aから受け取った通信パケットの送信元MACアドレスが負荷分散装置16のMACアドレスと一致するかを判定する(ステップS191)。
もし、データリンク入力部125aから受け取った通信パケットの送信元MACアドレスが負荷分散装置16のMACアドレスと一致しない場合、アドレス変換処理部126dは、当該通信パケットは負荷分散装置16によって転送されたクライアントからのデータではないと判断する。そこでデータリンク入力部125aは、データリンク入力部125aから受け取った通信パケットからデータリンク層ヘッダを取り除き、残りのIPパケットをIP入力部126aに送信して、通常のTCP/IP通信データとして処理させる(ステップS192)。
一方、データリンク入力部125aから受け取った通信パケットの送信元MACアドレスが負荷分散装置16のMACアドレスと一致する場合、アドレス変換処理部126dは、当該通信パケットの宛先IPアドレスが仮想アドレスと一致するかを判定する(ステップS193)。もし、一致しない場合、アドレス変換処理部126dはクライアントとは関係ない通信パケットが負荷分散装置16から転送されているとして、当該通信パケットを破棄する(ステップS194)。
これに対し、データリンク入力部125aから受け取った通信パケットの宛先IPアドレスが仮想アドレスと一致する場合(ステップS193)、アドレス変換処理部126dは当該通信パケットが負荷分散装置16によって転送されたクライアントからのパケットであると判断する。この場合、アドレス変換処理部126dは、データリンク入力部125aから受け取った通信パケットの宛先IPアドレスを仮想アドレスから実サーバ12-iのIPアドレスに書き換える(ステップS195)。
そしてアドレス変換処理部126dは、データリンク入力部125aから受け取った通信パケットの送信元IPアドレス(クライアントのIPアドレス)を含むエントリデータが、セッション管理テーブルTBL4に存在するかを判定する(ステップS196)。本実施形態において、セッション管理テーブルTBL4は、負荷分散装置16内のセッション管理テーブルTBL2と同様に、セッション管理のために用意される。セッション管理テーブルTBL4のエントリデータは、図37に示すように、クライアントのIPアドレスと有効期限のデータとを含む。セッション管理とは、前述したようにコネクション型通信の場合、セッションが切れるまでの間同一のサーバに通信データを転送する必要があるため、当該セッションを保持しておく有効期限を設けて管理することを指す。
もし、データリンク入力部125aから受け取った通信パケットの送信元IPアドレスがセッション管理テーブルTBL4に存在する場合(ステップS196)、アドレス変換処理部126dは当該パケットがTCPのFINパケットであるかを判定する(ステップS198)。もし、FINパケットである場合、つまりデータリンク入力部125aから受け取った通信パケットが明示的にセッションを停止するパケットの場合、アドレス変換処理部126dはセッションが切れたと判断して、セッション管理テーブルTBL4から該当するエントリのデータ(通信パケットの送信元IPアドレスを含むエントリのデータ)を削除する(ステップS198)。これに対し、データリンク入力部125aから受け取った通信パケットがFINパケットでない場合、アドレス変換処理部126dは、セッション管理テーブルTBL4の該当するエントリのデータに含まれている有効期限の値を初期値に設定する(ステップS199)。この初期値は必ずしも固定値である必要はなく、専用装置120上で変更可能なパラメータとしても良い。例えば、専用装置120を含む実サーバ12-iの管理者が環境に合わせて手動にて初期値(例えば3分)を設定する構成であっても構わない。
一方、データリンク入力部125aから受け取った通信パケットの送信元IPアドレスがセッション管理テーブルTBL4に存在しない場合(ステップS196)、アドレス変換処理部126dは当該送信元IPアドレス及びセッションを保持する有効期限のデータを含むエントリデータをセッション管理テーブルTBL4に追加登録する(ステップS200)。ここでセッション管理テーブルTBL4に登録される有効期限は、専用装置120上で変更可能なパラメータとし、当該専用装置120を含む実サーバ12-iの管理者が環境に合わせて手動にて設定されるものとする。この有効期限の値が、上記ステップS199で設定される初期値と同一であっても構わない。
アドレス変換処理部126dは上記ステップS198,S199またはS200を実行すると、即ちセッション管理テーブルTBL4に対する処理を実行すると、上記ステップS195で送信元IPアドレスが仮想アドレスから実サーバ12-iのIPアドレスに書き換えられた通信パケットからデータリンク層ヘッダを取り除き、残りのIPパケットをIP入力部126aに送信して、通常のTCP/IP通信データとして処理させる(ステップS192)。
次に、アドレス変換処理部126dによる上記処理B2の詳細について、図38のフローチャート及び図39のデータフォーマットを参照して説明する。今、アドレス変換処理部126dが、IP出力部126bから、図39(a)に示すIPパケット392と宛先MACアドレス391とを受け取ったものとする。本実施形態では、IPパケット392のIPヘッダには、宛先IPアドレスとしてクライアント(例えばクライアント11)のIPアドレスが設定されると共に、送信元IPアドレスとして実サーバ12-iのIPアドレスが設定されているものとする。
アドレス変換処理部126dはIP出力部126bからIPパケット392を受け取ると、セッション管理テーブルTBL4をチェックし、当該パケット392の宛先IPアドレスがセッション管理テーブルTBL4に存在するかを判定する(ステップS201)。
もし、IP出力部126bから受け取ったパケット392の宛先IPアドレスがセッション管理テーブルTBL4に存在する場合、アドレス変換処理部126dは当該通信パケットは負荷分散装置16によって転送されたクライアントからの通信パケット(サービス要求)に対して当該クライアントに直接送信すべきデータであると判断する。この場合、アドレス変換処理部126dは、IP出力部126bから受け取ったIPパケット392の宛先IPアドレスを実サーバ12-iのIPアドレスから仮想アドレスに書き換える(ステップS202)。そしてアドレス変換処理部126dは、宛先IPアドレスが仮想アドレスに書き換えられたIPパケット392及びIP出力部126bから受け取った宛先MACアドレス391を、それぞれ図39(b)に示すIPパケット394及び宛先MACアドレス393としてデータリンク出力部125bに送る(ステップS203)。
これに対し、IP出力部126bから受け取ったパケット392の宛先IPアドレスがセッション管理テーブルTBL4に存在しない場合(ステップS201)、アドレス変換処理部126dは当該通信パケットは、クライアントに直接送信すべきデータとは無関係であると判断する。この場合、アドレス変換処理部126dは、IP出力部126bから受け取ったパケット392及び宛先MACアドレス391をそのままデータリンク出力部125bに送る(ステップS202)。これにより、クライアントの物理アドレスを取得するためのARP要求パケット、即ち当該クライアントのIPアドレスを宛先IPアドレスとし、実サーバ12-i自身のIPアドレスを送信元IPアドレスとするARP要求パケットは、送信元IPアドレスが仮想アドレスに書き換えられることなく送信される。
次に、アドレス変換処理部126dによる上記処理B3、つまりセッション管理テーブルTBL4の定期監視処理の詳細について、図24のフローチャートを援用して説明する。ここで図24のフローチャートを援用する理由は、本実施形態で適用される処理B3が、負荷分散装置16内の負荷分散処理部168によるセッション管理テーブルTBL2の定期監視処理と同一手順で実行されるためである。ここでは、セッション管理テーブルTBL4に登録されるエントリデータの有効期限の単位に秒が用いられ、当該テーブルTBL4の監視が1秒毎に実行されるものとする。
アドレス変換処理部126dはセッション管理テーブルTBL4からエントリデータを1つ取り出す(ステップS131)。アドレス変換処理部126dは取り出されたデータに含まれている有効期限の値が0であるかを判定する(ステップS132)。
もし、有効期限の値が0(0秒)の場合、アドレス変換処理部126dはセッションが切れたと判断して、セッション管理テーブルTBL4から該当するデータを削除する(ステップS133)。これに対し、有効期限の値が0でない場合、アドレス変換処理部126dはセッション管理テーブルTBL4の該当するデータに含まれている有効期限の値を1(1秒)減らす(ステップS134)。
アドレス変換処理部126dは、上述の処理を、セッション管理テーブルTBL4の全エントリデータに対して行い(ステップS135)、処理を終了する。
以上の処理により、有効期限の間にクライアントからパケットの送信が無ければ、セッション管理テーブルTBL4の該当するエントリデータに含まれている有効期限の値が0となって、当該データはセッション管理テーブルTBL4から削除される。
次に専用装置120内のIP入力部126aの動作について、図40のフローチャート及び図41のデータフォーマットを参照して説明する。IP入力部126aには、アドレス変換処理部126dから図41(a)に示すフォーマットのIPパケット411が送られる。今、IP入力部126aが、アドレス変換処理部126dから送られたIPパケット411を受け取ったものとする。
するとIP入力部126aはアドレス変換処理部126dから受け取ったIPパケット411を通常のTCP/IP通信データとして実サーバ12-iのオリジナルのIP層処理部123(更には上位層であるトランスポート層処理部124)で処理させるために、当該IPパケット411をそのまま図41(b)に示すIPパケット412として当該IP層処理部123のIP入力部123aに送り、処理を終了する(ステップS211)。
次に専用装置120内のIP出力部126bの動作について、図42のフローチャート及び図43のデータフォーマットを参照して説明する。IP出力部126bには、実サーバ12-iのオリジナルのIP層処理部123のIP出力部123bから、図43(a)に示すIPパケット432及び宛先MACアドレス431が送られる。IP出力部126bは、IP出力部123bから送られたIPパケット432及び宛先MACアドレス431を受け取ると、当該IPパケット432及び宛先MACアドレス431をそのまま図43(b)に示すIPパケット434及び宛先MACアドレス433として、アドレス変換処理部126dに送り、処理を終了する(ステップS221)。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
本発明の一実施形態に係る負荷分散システムの基本構成と動作原理を説明するための図。 同実施形態における実サーバ12-1からクライアント11に対するARP要求によるアドレス解決について説明するための図。 ARP要求により負荷分散装置16のMACアドレスで作成されたARPテーブル110のデータが、実サーバ12-1のMACアドレスに書き換えられる例を示す図。 ARP要求により負荷分散装置16のMACアドレスで作成されたARPテーブル110のデータが、実サーバ12-1のMACアドレスに書き換えられない例を示す図。 図1のシステムの動作を整理して示すシーケンスチャート。 実サーバ12-i(i=1,2,3)が、負荷分散装置16上にMACアドレスを登録するための方法を説明するためのシーケンスチャート。 登録要求パケット71及び登録応答パケット72のデータフォーマットを示す図。 負荷分散装置16の構成を示すブロック図。 負荷分散装置16内のデータリンク入力部162aの動作を説明するためのフローチャート。 データリンク入力部162aに入力されるデータ及び当該データリンク入力部162aから出力されるデータのフォーマットを示す図。 負荷分散装置16内のデータリンク出力部162bの動作を説明するためのフローチャート。 データリンク出力部162bに入力されるデータ及び当該データリンク出力部162bから出力されるデータのフォーマットを示す図。 負荷分散装置16内の登録処理部165の登録要求入力時の動作を説明するためのフローチャート。 登録テーブルTBL1のデータ構造例を示す図。 登録処理部165に入力されるデータ及び当該登録処理部156から出力されるデータのフォーマットを示す図。 負荷分散装置16による負荷分散の対象となる実サーバ群が2組存在する場合の、通信データの宛先IPアドレスと負荷分散装置16の動作との関係を説明するための図。 登録処理部165による登録テーブルTBL1の定期監視処理を説明するためのフローチャート。 負荷分散装置16内のARP処理部166の動作を説明するためのフローチャート。 ARP処理部166に入力されるデータ及び当該ARP処理部166から出力されるデータのフォーマットを示す図。 負荷分散装置16内のパケット転送処理部167の動作を説明するためのフローチャート。 パケット転送処理部167に入力されるデータ及び当該パケット転送処理部167から出力されるデータのフォーマットを示す図。 負荷分散装置16内の負荷分散処理部168の動作を説明するためのフローチャート。 セッション管理テーブルTBL2のデータ構造例を示す図。 負荷分散処理部168によるセッション管理テーブルTBL2の定期監視処理を説明するためのフローチャート。 実サーバ12-iの構成を示すブロック図。 専用装置120内のデータリンク入力部125aの動作を説明するためのフローチャート。 データリンク入力部125aに入力されるデータ及び当該データリンク入力部125aから出力されるデータのフォーマットを示す図。 専用装置120内のデータリンク出力部125bの動作を説明するためのフローチャート。 データリンク出力部125bに入力されるデータ及び当該データリンク出力部125bから出力されるデータのフォーマットを示す図。 専用装置120内の登録処理部126cによる処理A1を説明するためのフローチャート。 処理A1で登録処理部126cから出力されるデータのフォーマットを示す図。 登録処理部126cによる処理A2を説明するためのフローチャート。 処理A2で登録処理部126cに入力されるデータ及び当該登録処理部126cから出力されるデータのフォーマットを示す図。 登録処理部126cによる処理A3を説明するためのフローチャート。 処理A3における登録テーブルTBL3のデータと登録処理部126cからの出力データとの関係を示す図。 専用装置120内のアドレス変換処理部126dによる処理B1を説明するためのフローチャート。 セッション管理テーブルTBL4のデータ構造例を示す図。 アドレス変換処理部126dによる処理B2を説明するためのフローチャート。 処理B2でアドレス変換処理部126dに入力されるデータ及び当該アドレス変換処理部126dから出力されるデータのフォーマットを示す図。 専用装置120内のIP入力部126aの動作を説明するためのフローチャート。 IP入力部126aに入力されるデータ及び当該IP入力部126aから出力されるデータのフォーマットを示す図。 専用装置120内のIP出力部126bの動作を説明するためのフローチャート。 IP出力部126bに入力されるデータ及び当該IP出力部126bから出力されるデータのフォーマットを示す図。
符号の説明
11…クライアント、12-1〜12-3,12-5,12-6,12-i…実サーバ、13,14…ネットワーク、16…負荷分散装置、121,161…ネットワークIF、122,125,162…データリンク層処理部、122a…IP入力部、122b…データリンク出力部、123,126,163…IP層処理部、123a,163a…IP入力部、123b…IP出力部、124,164…トランスポート層処理部、125a…データリンク入力部(サーバ側受信手段、第1の受信手段)、125b…データリンク出力部(サーバ側送信手段、第2の受信手段)、126a…IP入力部(第1の受信手段)、126b…IP出力部(第2の受信手段)、126c,165…登録処理部、126d…アドレス変換処理部、162a…データリンク入力部(負荷分散装置側受信手段)、162b…データリンク出力部(負荷分散装置側送信手段)、163b…IP出力部、166…ARP処理部、167…パケット転送処理部、168…負荷分散処理部、TBL1,TBL3…登録テーブル、TBL2,TBL4…セッション管理テーブル。

Claims (8)

  1. 複数のクライアントにサービスを提供する複数の実サーバと、
    前記複数の実サーバとネットワークアドレスが同一のセグメントに存在し、前記複数のクライアントの各々からのサービス要求を前記複数の実サーバに割り振る負荷分散装置であって、前記複数のクライアントの各々からのサービス要求を代理で受信するための仮想サーバのIPアドレスを仮想アドレスとして持つ負荷分散装置とを具備し、
    前記負荷分散装置は、
    通信データを受信する負荷分散装置側受信手段であって、前記クライアントからの前記仮想アドレスを宛先IPアドレスとする仮想サーバ宛ての通信データを代理で受信する負荷分散装置側受信手段と、
    通信データを送信する負荷分散装置側送信手段と、
    前記複数の実サーバの中から、前記負荷分散装置側受信手段によって代理で受信された前記仮想サーバ宛ての通信データを転送すべき実サーバを選択する負荷分散処理手段と、
    前記負荷分散装置側受信手段によって代理で受信された前記仮想サーバ宛ての通信データを前記負荷分散処理手段によって選択された実サーバの物理アドレス宛てに前記負荷分散装置側送信手段によって転送させる転送処理手段と、
    前記複数の実サーバの物理アドレスを含むエントリデータを格納する負荷分散装置側登録テーブルと、
    前記負荷分散処理手段によって選択された実サーバの物理アドレス宛てに転送される前記仮想サーバ宛ての通信データの送信元のIPアドレスと当該通信データの転送先の実サーバの物理アドレスと有効期限のデータとを含むエントリデータを格納する負荷分散装置側セッション管理テーブルとを有し、
    前記負荷分散装置の前記負荷分散処理手段は、前記負荷分散装置側受信手段によって代理で受信された前記仮想サーバ宛ての通信データを転送すべき実サーバの物理アドレスを、前記負荷分散装置側登録テーブルに格納されている物理アドレスの中から選択し、
    前記負荷分散装置の前記負荷分散装置側受信手段は、前記負荷分散装置のIPアドレスを宛先IPアドレスとする通信データをも受信し、
    前記負荷分散装置の前記転送処理手段は、前記負荷分散装置側受信手段によって通信データが受信された場合、当該通信データの宛先IPアドレスが前記仮想アドレスと一致するか判定する手段と、前記受信された通信データの宛先IPアドレスが前記仮想アドレスと一致しない場合、当該通信データをインターネットプロトコル層及び上位のプロトコル層に受け渡す手段と、前記受信された通信データの宛先IPアドレスが前記仮想アドレスと一致する場合、当該通信データを前記負荷分散処理手段に渡して当該負荷分散処理手段により転送先の物理アドレスを選択させる手段と、前記通信データを転送すべき実サーバの物理アドレスが前記負荷分散処理手段によって選択できなかった場合、前記通信データを破棄する手段とを含み、
    前記負荷分散装置の前記負荷分散処理手段は、前記負荷分散装置の前記転送処理手段から前記宛先IPアドレスが前記仮想アドレスと一致する通信データが受け渡された場合、当該通信データの送信元IPアドレスを含むエントリデータが前記セッション管理テーブルに存在するかを判定する手段と、前記通信データの送信元IPアドレスを含むエントリデータが前記負荷分散装置側セッション管理テーブルに存在しない第1の場合、前記通信データを転送すべき実サーバの物理アドレスを、前記負荷分散装置側登録テーブルに格納されている物理アドレスの中から選択する手段と、前記第1の場合、前記通信データの送信元IPアドレスと前記選択された物理アドレスと所定の有効期限とを含むエントリデータを前記負荷分散装置側セッション管理テーブルに追加登録することでセッションの開始とする手段と、前記通信データの送信元IPアドレスを含むエントリデータが前記負荷分散装置側セッション管理テーブルに存在する第2の場合、当該エントリデータに含まれている物理アドレスを前記通信データを転送すべき実サーバの物理アドレスとして選択する手段と、前記第2の場合、セッションが保持されているものとして前記負荷分散装置側セッション管理テーブル上の該当する前記エントリデータに含まれている有効期限の値を前記所定の有効期限の値に戻す手段と、前記第2の場合で且つ前記通信データがセッション終了を意味するデータである場合、前記負荷分散装置側セッション管理テーブル上の該当する前記エントリデータを削除する手段とを含み、
    前記複数の実サーバの各々は、
    前記負荷分散装置によって前記仮想サーバ宛ての通信データが転送された場合に、当該仮想サーバ宛ての通信データを受信するサーバ側受信手段と、
    前記サーバ側受信手段によって受信された前記仮想サーバ宛ての通信データの送信元のIPアドレスを記憶する記憶手段と、
    前記サーバ側受信手段によって受信された前記仮想サーバ宛ての通信データを当該実サーバ宛ての通信データとして処理可能とするために、当該通信データの宛先IPアドレスを前記仮想アドレスから当該実サーバ自身のIPアドレスに変換するアドレス変換処理手段であって、前記記憶手段により記憶されたIPアドレス宛ての通信データの送信時には、当該通信データの送信元IPアドレスを当該実サーバ自身のIPアドレスから前記仮想アドレスに変換するアドレス変換処理手段と、
    通信データを送信するサーバ側送信手段であって、前記アドレス変換処理手段によって前記送信元IPアドレスが前記仮想アドレスに変換された通信データを前記記憶手段により記憶されたIPアドレスのクライアントに直接送信するサーバ側送信手段と、
    前記負荷分散装置の物理アドレスと前記仮想アドレスとを含むエントリデータを格納するサーバ側登録テーブルと、
    前記負荷分散装置によって当該実サーバに転送された前記仮想サーバ宛ての通信データの宛先IPアドレスと有効期限のデータとを含むエントリデータを格納するサーバ側セッション管理テーブルと、
    TCP/IP通信におけるデータリンク層の処理を行うデータリンク層処理手段と、
    前記TCP/IP通信におけるIP層の処理を行うIP層処理手段と、
    前記サーバ側受信手段を含み、前記データリンク層処理手段から前記IP層処理手段に送るべき通信データを当該IP層処理手段に代わり受信する第1の受信手段と、
    前記サーバ側送信手段を含み、前記IP層処理手段から前記データリンク層処理手段に送るべき通信データを当該データリンク層処理手段に代わり受信する第2の受信手段とを有し、
    前記アドレス変換処理手段は、前記サーバ側受信手段によって受信された通信データの宛先物理アドレスが前記サーバ側登録テーブルに登録されている前記負荷分散装置の物理アドレスで且つ当該通信データの宛先IPアドレスが仮想アドレスの場合、当該通信データの宛先IPアドレスを当該実サーバ自身のIPアドレスに書き換えて前記第1の受信手段により前記IP層処理手段に送らせ、それ以外の場合、前記通信データをそのまま前記第1の受信手段により前記IP層処理手段に送らせる手段と、前記通信データの宛先IPアドレスが仮想アドレスの場合、前記サーバ側セッション管理テーブルに前記通信データの送信元IPアドレスを含むエントリデータが存在するかを判定する手段と、前記送信元IPアドレスを含むエントリデータが存在しない場合、前記通信データの送信元IPアドレスと所定の有効期限とを含むエントリデータを前記サーバ側セッション管理テーブルに追加登録することでセッションの開始とする手段と、前記送信元IPアドレスを含むエントリデータが存在する場合、セッションが保持されているものとして当該エントリデータに含まれている有効期限の値を前記所定の有効期限の値に戻す手段と、前記第2の受信手段によって受信された通信データの宛先IPアドレスを含むエントリデータが前記サーバ側セッション管理テーブルに存在するかを判定する手段と、前記宛先IPアドレスを含むエントリデータが存在する場合、前記通信データの送信元IPアドレスを前記仮想アドレスに書き換えて前記第2の受信手段により前記データリンク層処理手段に送らせる手段と、前記宛先IPアドレスを含むエントリデータが存在しない場合、前記通信データをそのまま前記第2の受信手段により前記データリンク層処理手段に送らせる手段とを含む、
    ことを特徴とする負荷分散システム。
  2. 前記負荷分散装置は、
    前記実サーバと互いに物理アドレス及びIPアドレスの対を交換するため、前記実サーバを前記負荷分散装置による前記仮想サーバ宛ての通信データの振り分けの対象として登録することを要求するための登録要求であって、宛先のIPアドレス及び物理アドレスとしてそれぞれ前記仮想アドレス及び前記負荷分散装置の物理アドレスを含み、送信元のIPアドレス及び物理アドレスとしてそれぞれ前記実サーバのIPアドレス及び物理アドレスを含む登録要求が送られた場合、当該登録要求の送信元の物理アドレスを含むエントリデータを前記負荷分散装置側登録テーブルに追加登録すると共に、当該登録の結果を前記登録要求の送信元の前記サーバに通知するためのIPパケットを含む登録応答を前記負荷分散装置側送信手段により送信させる登録処理手段を更に有し、
    前記実サーバは、前記負荷分散装置と互いに物理アドレス及びIPアドレスの対を交換するため、前記登録要求を前記サーバ側送信手段により送信させ、前記登録要求に応じて前記負荷分散装置から前記登録応答が返された場合、前記サーバ側登録テーブルに前記負荷分散装置の物理アドレスを含むエントリデータを登録する登録処理手段を更に有する
    ことを特徴とする請求項1記載の負荷分散システム。
  3. 前記実サーバから送られる前記登録要求は登録の有効期限のデータを含み、
    前記負荷分散装置の前記登録処理手段は、前記実サーバから前記登録要求が送られた場合、当該登録要求に含まれている前記有効期限のデータの示す値が正当であるならば、当該登録要求の送信元の前記実サーバの物理アドレスと前記有効期限の値とを含むエントリデータを前記負荷分散装置側登録テーブルに追加登録し、当該登録要求の送信元の前記実サーバの物理アドレスを含むエントリデータが既に登録済みであれば当該エントリデータ中の有効期限の値を当該登録要求に含まれている前記有効期限のデータの示す値に変更する手段と、前記登録要求に含まれている前記有効期限のデータの示す値が正当でないならば、前記負荷分散装置側登録テーブルへの前記エントリデータの登録を控え、当該登録要求の送信元の前記実サーバの物理アドレスを含むエントリデータが既に登録済みであれば当該エントリデータを前記負荷分散装置側登録テーブルから削除する手段と、前記負荷分散装置側送信手段により送信させる前記登録応答として、前記負荷分散装置側登録テーブルへの登録の成功または失敗を表す登録結果のデータを含む前記登録応答を生成する手段とを含み、
    前記実サーバの前記登録処理手段は、前記有効期限のデータを含む前記登録要求を前記サーバ側送信手段により送信させる手段と、前記登録要求に応じて前記負荷分散装置から前記登録結果のデータを含む前記登録応答が返された場合、当該登録応答の送信元の前記負荷分散装置の物理アドレスと前記登録要求に含まれている前記有効期限の値とを含むエントリデータを前記サーバ側登録テーブルに追加登録し、当該登録応答の送信元の前記負荷分散装置の物理アドレスを含むエントリデータが既に登録済みであれば当該エントリデータ中の有効期限の値を前記登録要求に含まれている前記有効期限の値に変更する手段と、前記登録応答に含まれている前記登録結果のデータにより登録失敗が示されている場合、前記登録要求に含まれている有効期限より短い値に変更された新たな登録要求を前記サーバ側送信手段により再度送信させる手段とを含む
    ことを特徴とする請求項2記載の負荷分散システム。
  4. 前記負荷分散装置の前記登録処理手段は、前記負荷分散装置側登録テーブルを定期的に監視して、その都度当該負荷分散装置側登録テーブルに登録されている前記エントリデータの有効期限の値を減らし、当該有効期限が切れたデータを当該負荷分散装置側登録テーブルから削除する手段を含み、
    前記負荷分散装置の前記負荷分散処理手段は、前記負荷分散装置側セッション管理テーブルを定期的に監視して、その都度当該負荷分散装置側セッション管理テーブルに登録されている前記エントリデータの有効期限の値を減らし、当該有効期限が切れたデータを当該負荷分散装置側セッション管理テーブルから削除する手段を含む
    ことを特徴とする請求項3記載の負荷分散システム。
  5. 前記実サーバの前記登録処理手段は、前記サーバ側登録テーブルを定期的に監視して、その都度当該サーバ側登録テーブルに登録されている前記エントリデータの有効期限の値を減らし、当該有効期限が切れたデータを当該サーバ側登録テーブルから削除する手段を含み、
    前記実サーバの前記アドレス変換処理手段は、前記サーバ側セッション管理テーブルを定期的に監視して、その都度当該サーバ側セッション管理テーブルに登録されている前記エントリデータの有効期限の値を減らし、当該有効期限が切れたデータを当該サーバ側セッション管理テーブルから削除する手段を含む
    ことを特徴とする請求項3記載の負荷分散システム。
  6. 前記負荷分散装置の前記登録処理手段は、前記実サーバから登録解除を示す登録要求として登録解除要求が送られた場合、当該登録解除要求の送信元の前記実サーバの物理アドレスを含むエントリデータを前記負荷分散装置側登録テーブルから削除する手段を含み、
    前記登録応答を生成する手段は、前記登録解除要求に対する前記登録応答として、登録解除成功を表す登録結果のデータを含む登録応答を生成し、
    前記実サーバの前記登録処理手段は、前記登録解除要求を前記サーバ側送信手段により送信させる手段と、前記登録解除要求に応じて前記負荷分散装置から前記登録解除成功を表す登録結果のデータを含む前記登録応答が返された場合、当該登録応答の送信元の前記負荷分散装置の物理アドレスを含むエントリデータを前記サーバ側登録テーブルから削除する手段とを含む
    ことを特徴とする請求項3記載の負荷分散システム。
  7. 複数のクライアントの各々からのサービス要求を代理で受信するための仮想サーバのIPアドレスを仮想アドレスとして持つ負荷分散装置によって割り振られた前記複数のクライアントの各々からのサービス要求に応じて当該クライアントにサービスを提供する、前記負荷分散装置とネットワークアドレスが同一のセグメントに存在する実サーバであって、
    前記クライアントからの前記仮想アドレスを宛先IPアドレスとする仮想サーバ宛ての通信データが前記負荷分散装置で代理で受信されて、当該負荷分散装置による振り分けで当該仮想サーバ宛ての通信データが自身の物理アドレス宛てに送信された場合に、当該通信データを受信する受信手段と、
    前記受信手段によって受信された前記仮想サーバ宛ての通信データの送信元のIPアドレスを記憶する記憶手段と、
    前記受信手段によって受信された前記仮想サーバ宛ての通信データを当該実サーバ宛ての通信データとして処理可能とするために、当該通信データの宛先IPアドレスを前記仮想アドレスから当該実サーバ自身のIPアドレスに変換するアドレス変換処理手段であって、前記記憶手段により記憶されたIPアドレス宛ての通信データの送信時には、当該通信データの送信元IPアドレスを当該実サーバ自身のIPアドレスから前記仮想アドレスに変換し、前記クライアントの物理アドレスを取得するための当該クライアントのIPアドレスを宛先IPアドレスとし、当該実サーバのIPアドレスを送信元IPアドレスとするアドレス解決プロトコル要求の送信時には、当該アドレス解決プロトコル要求の前記送信元IPアドレスを前記仮想アドレスに変換しないアドレス変換処理手段と、
    通信データを送信する送信手段であって、前記アドレス変換処理手段によって前記送信元IPアドレスが前記仮想アドレスに変換された通信データを前記記憶手段により記憶されたIPアドレスのクライアントに直接送信する送信手段と、
    前記負荷分散装置の物理アドレスと前記仮想アドレスとを含むエントリデータを格納する登録テーブルと、
    前記負荷分散装置によって当該実サーバに転送された前記仮想サーバ宛ての通信データの宛先IPアドレスと有効期限のデータとを含むエントリデータを格納するセッション管理テーブルと、
    TCP/IP通信におけるデータリンク層の処理を行うデータリンク層処理手段と、
    前記TCP/IP通信におけるIP層の処理を行うIP層処理手段と、
    前記受信手段を含み、前記データリンク層処理手段から前記IP層処理手段に送るべき通信データを当該IP層処理手段に代わり受信する第1の受信手段と、
    前記送信手段を含み、前記IP層処理手段から前記データリンク層処理手段に送るべき通信データを当該データリンク層処理手段に代わり受信する第2の受信手段とを具備し、
    前記アドレス変換処理手段は、前記受信手段によって受信された通信データの宛先物理アドレスが前記登録テーブルに登録されている前記負荷分散装置の物理アドレスで且つ当該通信データの宛先IPアドレスが仮想アドレスの場合、当該通信データの宛先IPアドレスを当該実サーバ自身のIPアドレスに書き換えて前記第1の受信手段により前記IP層処理手段に送らせ、それ以外の場合、前記通信データをそのまま前記第1の受信手段により前記IP層処理手段に送らせる手段と、前記通信データの宛先IPアドレスが仮想アドレスの場合、前記セッション管理テーブルに前記通信データの送信元IPアドレスを含むエントリデータが存在するかを判定する手段と、前記送信元IPアドレスを含むエントリデータが存在しない場合、前記通信データの送信元IPアドレスと所定の有効期限とを含むエントリデータを前記セッション管理テーブルに追加登録することでセッションの開始とする手段と、前記送信元IPアドレスを含むエントリデータが存在する場合、セッションが保持されているものとして当該エントリデータに含まれている有効期限の値を前記所定の有効期限の値に戻す手段と、前記第2の受信手段によって受信された通信データの宛先IPアドレスを含むエントリデータが前記セッション管理テーブルに存在するかを判定する手段と、前記宛先IPアドレスを含むエントリデータが存在する場合、前記通信データの送信元IPアドレスを前記仮想アドレスに書き換えて前記第2の受信手段により前記データリンク層処理手段に送らせる手段と、前記宛先IPアドレスを含むエントリデータが存在しない場合、前記通信データをそのまま前記第2の受信手段により前記データリンク層処理手段に送らせる手段とを含む、
    ことを特徴とする実サーバ
  8. 複数のクライアントにサービスを提供する複数の実サーバと、前記複数の実サーバとネットワークアドレスが同一のセグメントに存在し、且つ前記複数のクライアントの各々からのサービス要求を代理で受信するための仮想サーバのIPアドレスを仮想アドレスとして持ち、前記複数のクライアントの各々からのサービス要求を前記複数の実サーバに割り振る負荷分散装置とから構成される負荷分散システムに適用される負荷分散方法であって、
    前記クライアントからの前記仮想アドレスを宛先IPアドレスとする仮想サーバ宛ての通信データを前記負荷分散装置が代理で受信するステップと、
    前記負荷分散装置のIPアドレスを宛先IPアドレスとする通信データを前記負荷分散装置が受信するステップと、
    前記受信された通信データの宛先IPアドレスが前記仮想アドレスと一致するかを前記負荷分散装置の転送処理手段が判定するステップと、
    前記受信された通信データの宛先IPアドレスが前記仮想アドレスと一致しない場合、前記負荷分散装置の前記転送処理手段が当該通信データをインターネットプロトコル層及び上位のプロトコル層に受け渡すステップと、
    前記受信された通信データの宛先IPアドレスが前記仮想アドレスと一致する場合、当該通信データを前記負荷分散装置の前記転送処理手段が前記負荷分散装置の負荷分散処理手段に渡すステップと、
    前記負荷分散装置の前記転送処理手段から前記負荷分散装置の前記負荷分散処理手段に前記宛先IPアドレスが前記仮想アドレスと一致する通信データが受け渡された場合、当該通信データの送信元IPアドレスを含むエントリデータが前記負荷分散装置の負荷分散装置側セッション管理テーブルに存在するかを前記負荷分散処理手段が判定するステップと、
    前記通信データの送信元IPアドレスを含むエントリデータが前記負荷分散装置側セッション管理テーブルに存在しない第1の場合、前記通信データを転送すべき実サーバの物理アドレスを、前記負荷分散装置が有する負荷分散装置側登録テーブルに格納されているエントリデータに含まれている前記複数の実サーバの物理アドレスの中から前記負荷分散処理手段が選択するステップと、
    前記第1の場合、前記負荷分散処理手段が、前記通信データの送信元IPアドレスと前記選択された物理アドレスと所定の有効期限とを含むエントリデータを前記負荷分散装置側セッション管理テーブルに追加登録することでセッションを開始するステップと、
    前記通信データの送信元IPアドレスを含むエントリデータが前記負荷分散装置側セッション管理テーブルに存在する第2の場合、前記負荷分散処理手段が、当該エントリデータに含まれている物理アドレスを前記通信データを転送すべき実サーバの物理アドレスとして選択するステップと、
    前記第2の場合、セッションが保持されているものとして、前記負荷分散処理手段が、前記負荷分散装置側セッション管理テーブル上の該当する前記エントリデータに含まれている有効期限の値を前記所定の有効期限の値に戻すステップと、
    前記第2の場合で且つ前記通信データがセッション終了を意味するデータである場合、前記負荷分散処理手段が、前記負荷分散装置側セッション管理テーブル上の該当する前記エントリデータを削除するステップと、
    前記通信データを転送すべき実サーバの物理アドレスを前記負荷分散処理手段が選択できなかった場合、前記通信データを前記転送処理手段が破棄するステップと、
    前記宛先IPアドレスが前記仮想アドレスと一致する、前記代理で受信された前記仮想サーバ宛ての前記通信データを前記選択された実サーバの物理アドレス宛てに前記負荷分散装置の負荷分散装置側送信手段が送信するステップと、
    前記選択された実サーバの物理アドレス宛てに前記負荷分散装置側送信手段によって送信された前記仮想サーバ宛ての通信データを当該実サーバの受信手段が受信するステップと、
    前記実サーバの前記受信手段で受信された前記仮想サーバ宛ての通信データの送信元のIPアドレスを当該実サーバが記憶手段に記憶するステップと、
    前記実サーバの前記受信手段で前記仮想サーバ宛ての通信データが受信された場合には、前記受信された通信データを当該実サーバ宛ての通信データとして処理可能とするために、当該通信データの送信元IPアドレスを前記仮想アドレスから当該実サーバ自身のIPアドレスに変換し、前記記憶手段に記憶されたIPアドレス宛ての通信データの送信時には、当該通信データの送信元IPアドレスを当該実サーバ自身のIPアドレスから前記仮想アドレスに変換するアドレス変換処理を当該実サーバのアドレス変換処理手段が実行するアドレス変換処理ステップと、
    前記送信元IPアドレスが前記仮想アドレスに変換された通信データを前記記憶手段に記憶されたIPアドレスのクライアントに前記実サーバのサーバ側送信手段が直接送信するステップと
    TCP/IP通信におけるデータリンク層の処理を行う前記実サーバのデータリンク層処理手段から前記TCP/IP通信におけるIP層の処理を行う当該実サーバのIP層処理手段に送るべき通信データを、前記受信手段を含む当該実サーバの第1の受信手段が当該IP層処理手段に代わり受信するステップと、
    前記実サーバの前記IP層処理手段から当該実サーバの前記データリンク層処理手段に送るべき通信データを、前記サーバ側送信手段を含む当該実サーバの第2の受信手段が当該データリンク層処理手段に代わり受信するステップとを具備し、
    前記アドレス変換処理ステップは、前記第1の受信手段によって受信された通信データの宛先物理アドレスが前記負荷分散装置の物理アドレスと前記仮想アドレスとを含むエントリデータを格納するための前記実サーバが有するサーバ側登録テーブルに登録されている前記負荷分散装置の物理アドレスで且つ当該通信データの宛先IPアドレスが前記仮想アドレスの場合、前記アドレス変換処理手段が当該通信データの宛先IPアドレスを当該実サーバ自身のIPアドレスに書き換えて前記第1の受信手段により前記IP層処理手段に送らせるステップと、それ以外の場合、前記アドレス変換処理手段が前記通信データをそのまま前記第1の受信手段により前記IP層処理手段に送らせるステップと、前記第1の受信手段によって受信された通信データの宛先IPアドレスが仮想アドレスの場合、前記負荷分散装置側送信手段によって当該実サーバに送信された前記仮想サーバ宛ての通信データの宛先IPアドレスと有効期限のデータとを含むエントリデータを格納するための当該サーバが有するサーバ側セッション管理テーブルに前記第1の受信手段によって受信された通信データの送信元IPアドレスを含むエントリデータが存在するかを前記アドレス変換処理手段が判定するステップと、前記送信元IPアドレスを含むエントリデータが存在しない場合、前記第1の受信手段によって受信された通信データの送信元IPアドレスと所定の有効期限とを含むエントリデータを前記アドレス変換処理手段が前記サーバ側セッション管理テーブルに追加登録することでセッションの開始とするステップと、前記送信元IPアドレスを含むエントリデータが存在する場合、セッションが保持されているものとして当該エントリデータに含まれている有効期限の値を前記アドレス変換処理手段が前記所定の有効期限の値に戻すステップと、前記第2の受信手段によって受信された通信データの宛先IPアドレスを含むエントリデータが前記サーバ側セッション管理テーブルに存在するかを前記アドレス変換処理手段が判定するステップと、前記宛先IPアドレスを含むエントリデータが存在する場合、前記通信データの送信元IPアドレスを前記アドレス変換処理手段が前記仮想アドレスに書き換えて前記第2の受信手段により前記データリンク層処理手段に送らせるステップと、前記宛先IPアドレスを含むエントリデータが存在しない場合、前記アドレス変換処理手段が前記通信データをそのまま前記第2の受信手段により前記データリンク層処理手段に送らせるステップとを含む
    とを特徴とする負荷分散方法。
JP2005098688A 2005-03-30 2005-03-30 負荷分散システム、実サーバ及び負荷分散方法 Expired - Fee Related JP4163697B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005098688A JP4163697B2 (ja) 2005-03-30 2005-03-30 負荷分散システム、実サーバ及び負荷分散方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005098688A JP4163697B2 (ja) 2005-03-30 2005-03-30 負荷分散システム、実サーバ及び負荷分散方法

Publications (2)

Publication Number Publication Date
JP2006277570A JP2006277570A (ja) 2006-10-12
JP4163697B2 true JP4163697B2 (ja) 2008-10-08

Family

ID=37212239

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005098688A Expired - Fee Related JP4163697B2 (ja) 2005-03-30 2005-03-30 負荷分散システム、実サーバ及び負荷分散方法

Country Status (1)

Country Link
JP (1) JP4163697B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4683345B2 (ja) * 2008-04-04 2011-05-18 日本電気株式会社 ネットワーク負荷分散装置、ネットワーク負荷分散方法及びプログラム
JP5252347B2 (ja) * 2008-12-08 2013-07-31 株式会社日立製作所 ネットワークシステム及び通信計画サーバ
US8085693B2 (en) * 2009-02-25 2011-12-27 Genesys Telecommunications Laboratories, Inc Virtualization of one or more sets of physical contact center resources for use by one or more virtual contact centers
JP5381247B2 (ja) * 2009-03-31 2014-01-08 富士通株式会社 負荷分散装置、負荷分散方法、負荷分散プログラム及び負荷分散システム
JP5903934B2 (ja) * 2012-03-01 2016-04-13 日本電気株式会社 情報処理システム、サーバシステム、コントローラ、情報処理方法及びプログラム
JP2014165560A (ja) * 2013-02-22 2014-09-08 Nippon Telegr & Teleph Corp <Ntt> サーバおよびプログラム
JP6107641B2 (ja) * 2013-12-24 2017-04-05 富士ゼロックス株式会社 セッション管理システム、サービス提供装置、及びプログラム
JP6014633B2 (ja) 2014-07-24 2016-10-25 京セラドキュメントソリューションズ株式会社 通信装置、通信システムおよび通信装置の制御方法
CN110324163B (zh) 2018-03-29 2020-11-17 华为技术有限公司 一种数据传输的方法及相关装置
EP3918754B1 (en) 2019-01-29 2024-08-21 Oracle International Corporation System and method for a single logical ip subnet across multiple independent layer 2 (l2) subnets in a high performance computing environment
JP7237176B2 (ja) * 2019-10-08 2023-03-10 日立Astemo株式会社 通信システム、電子制御装置及び通信方法
KR102275218B1 (ko) 2020-03-24 2021-07-09 주식회사 셀리코 이중 자극 모드 기반의 인공 망막 장치 및 인공 망막 시스템

Also Published As

Publication number Publication date
JP2006277570A (ja) 2006-10-12

Similar Documents

Publication Publication Date Title
JP4163697B2 (ja) 負荷分散システム、実サーバ及び負荷分散方法
US8892768B2 (en) Load balancing apparatus and load balancing method
JP4177346B2 (ja) 負荷分散システム、実サーバ及び負荷分散方法
US7415536B2 (en) Address query response method, program, and apparatus, and address notification method, program, and apparatus
CN105308930B (zh) 分布负载平衡器中的连接发布
CN105308931B (zh) 分布负载平衡器系统和负载平衡方法
US7363347B2 (en) Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
TWI491229B (zh) 基於網路位址轉譯類型之順暢的主機遷移
US6993595B1 (en) Address translation change identification
JP2018528679A (ja) 負荷平衡システムにおいて接続を確立するデバイス及び方法
CN109040243B (zh) 一种报文处理方法及装置
US9112901B2 (en) Method and system for providing connection resiliency
CN110430274A (zh) 一种基于云存储的文件下载方法及系统
CN111917900B (zh) 一种域名代理的请求处理方法及装置
US8619631B2 (en) Information communication system, information communication method, node device included in information communication system and recording medium recording information processing program
JP4910881B2 (ja) 通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法
US10608981B2 (en) Name identification device, name identification method, and recording medium
CN113810349B (zh) 数据传输方法、装置、计算机设备和存储介质
JP5154313B2 (ja) Sipメッセージ振分方法およびsipメッセージ振分装置
JP7367793B2 (ja) 通信中継装置およびデータ中継方法
US8572245B1 (en) Using the TCP window size for identifying packets and debugging
CN109039687A (zh) 请求的负载均衡方法、装置、系统、设备以及存储介质
JP5871908B2 (ja) ネットワーク内部のデータ通信を制御するための方法およびシステム
US10834179B2 (en) Load balancing
JP2006339726A (ja) 中継装置およびデータ中継方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080627

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

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

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

Free format text: PAYMENT UNTIL: 20110801

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees