JP2011041006A - 負荷分散装置、負荷分散方法および負荷分散プログラム - Google Patents

負荷分散装置、負荷分散方法および負荷分散プログラム Download PDF

Info

Publication number
JP2011041006A
JP2011041006A JP2009186699A JP2009186699A JP2011041006A JP 2011041006 A JP2011041006 A JP 2011041006A JP 2009186699 A JP2009186699 A JP 2009186699A JP 2009186699 A JP2009186699 A JP 2009186699A JP 2011041006 A JP2011041006 A JP 2011041006A
Authority
JP
Japan
Prior art keywords
message
unit
relay device
identifier
control identifier
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
JP2009186699A
Other languages
English (en)
Other versions
JP5338555B2 (ja
Inventor
Koichiro Amamiya
宏一郎 雨宮
Kazumine Matoba
一峰 的場
Masaaki Takase
正明 高瀬
Kenichi Abiru
健一 阿比留
Hitoshi Ueno
仁 上野
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 JP2009186699A priority Critical patent/JP5338555B2/ja
Priority to US12/853,330 priority patent/US8892768B2/en
Publication of JP2011041006A publication Critical patent/JP2011041006A/ja
Application granted granted Critical
Publication of JP5338555B2 publication Critical patent/JP5338555B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1027Persistence of sessions during load balancing

Abstract

【課題】一意性を保証しつつ、クライアントへの応答性能の劣化を防止することを課題とする。
【解決手段】負荷分散装置は、クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子と、経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶する。そして、負荷分散装置は、クライアント装置からメッセージを受信した場合に、当該メッセージに経路制御識別子が含まれているか否かを判定する。負荷分散装置は、経路制御識別子が含まれていると判定された場合に、当該経路制御識別子と対応付けられた中継装置情報を負荷分散装置用転送ルールから特定し、特定した中継装置情報によって特定される中継装置にメッセージを振分ける。また、負荷分散装置は、経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置にメッセージを振分ける。
【選択図】図20

Description

本発明は、負荷分散装置、負荷分散方法および負荷分散プログラムに関する。
従来より、クライアント端末に対して同じサービスを提供する複数のサーバ間の負荷がなるべく均等になるように、処理を分散させる負荷分散装置が利用されている。負荷分散装置は、ラウンドロビンなどの自律振分アルゴリズムに従って、クライアント端末から受け付けたメッセージリクエストなどのアクセスを各サーバに振分ける。
そして、負荷分散装置は、商品購入サイトなどセッションを維持する必要があるHTTP(HyperText Transfer Protocol)などを利用したWebサーバに対して振り分ける場合には、一意性保証を行う。一意性保証とは、同じセッションに属するリクエストメッセージを、同じサーバに振分けることを保証することである。
ここで、図51を用いて、HTTPを例にした負荷分散装置の一意性保証について説明する。負荷分散装置は、クライアントから初回のHTTPメッセージを受け付けると、振り分け先のサーバを決定する。HTTPメッセージを受信したサーバはセッションを識別するセッション識別子を生成する。そして、負荷分散装置は、決定した振り分け先とサーバで生成されたセッション識別子とを対応付けて転送ルールテーブルとして格納する。
その後、負荷分散装置は、セッション識別子が含まれるリクエストをクライアントから受信すると(図51の(1)参照)、セッション識別子に基づいて転送ルールテーブルから振り分け先を特定し、当該リクエストを振り分け先に送信する(図51の(2)参照)。そして、負荷分散装置は、当該リクエストに対する応答を振り分け先のサーバから受信すると(図51の(3)参照)、リクエスト要求元のクライアントに当該応答を送信する(図51の(4)参照)。このように、セッションが継続する間は、同じクライアントからのリクエストは、同じサーバに振分けられる。
そして、近年のサービス指向アーキテクチャ(SOA:Service-Oriented Architecture)においては、高度なWebサービス機能をWebインタフェースで実現するために、SOAP(Simple Object Access Protocol)が用いられている。SOAPのメッセージは、図52に示すように、レイヤ3プロトコルヘッダと、レイヤ4プロトコルヘッダと、レイヤ7プロトコルヘッダと、メッセージコンテンツ部とを有している。レイヤ3プロトコルヘッダには、プロトコル番号などが記載され、レイヤ4プロトコルヘッダには、ポート番号などが記載され、レイヤ7プロトコルヘッダには、Cookieなどが記載される。また、メッセージコンテンツ部には、SOAPのヘッダ・ボディであり、SOAPの機能を提供する制御情報が記載されるため、一意性保証を行うためのセッション識別子が記載される場合もある。
一般的な負荷分散装置は、上述したレイヤ3プロトコルヘッダ、レイヤ4プロトコルヘッダ、レイヤ7プロトコルヘッダを参照して負荷分散を行うが、SOAPを用いる場合には、メッセージコンテンツを参照できる装置を用いる必要がある。そこで、最近では、負荷分散装置と振り分け先となるサーバとの間に、メッセージコンテンツ部を参照して、サーバに振り分けを行うメッセージ中継装置が用いるシステムが利用されている。
特開2008−40763号公報
しかしながら、メッセージコンテンツ部のフォーマットがアプリケーションに依存し、メッセージごとに異なることから、メッセージを受信するたびにメッセージコンテンツ部の中身まで参照すると、処理負荷が非常に高くなる。そのため、クライアントへの応答性能が劣化するという課題があった。
上述したように、メッセージ中継装置がシステム上のボトルネックとなる可能性が高い。これを解消する手法として、メッセージ中継装置を並列化して負荷分散する手法も考えられ、この手法であっても一意性保証を行う必要がある。具体的に例を挙げると、図53に示すように、クライアント端末と負荷分散装置が接続され、負荷分散装置と複数のサーバとの間に複数のメッセージ中継装置が接続されるシステムが考えられる。
図53に示すクライアント端末は、サーバが提供するサービスを利用する端末であり、各サーバは、セッション情報など利用者固有のステートを生成し、ステートを特定する識別子をメッセージコンテンツ部に含めて送受信する。負荷分散装置は、自律振分アルゴリズムに従って、クライアント端末から受信したメッセージをメッセージ中継装置に振分ける。管理装置は、サーバからセッション識別子と当該セッション識別子を保持するサーバのIPアドレスとを収集し、一意性を保証するための情報であるこれらを対応付けた転送ルールを生成して、各メッセージ中継装置に配布する。各メッセージ中継装置は、負荷分散装置から送信されたメッセージのメッセージコンテンツ部からセッション識別子を参照し、転送ルールに基づいて、該当のサーバにメッセージを中継する。また、各メッセージ中継装置は、転送ルールがない場合には、自律振分アルゴリズムに従って、メッセージを各サーバに振分ける。
次に、図54を用いて、図53に示したシステムの処理シーケンスを説明する。図54に示すように、クライアント端末は、負荷分散装置に対してリクエストを発行し(ステップS1)、負荷分散装置は、自律振分アルゴリズムに従って、いずれかのメッセージ中継装置にリクエストを振分ける(ステップS2)。続いて、リクエストを受信したメッセージ中継装置は、自律振分アルゴリズムに従って、いずれかのサーバにリクエストを振分ける(ステップS3)。リクエストを受信したサーバは、セッション情報(セッション識別子)を生成して管理装置に送信する(ステップS4とステップS5)。
管理装置は、受信したセッション識別子と受信したサーバのIPアドレスとを対応付けた一意性保証設定(転送ルール)を生成し、全てのメッセージ中継装置に配布する(ステップS6)。そして、管理装置は、セッション識別子を生成したサーバに対して、全てのメッセージ中継装置に一意性保証設定が設定されたことを通知し(ステップS7)、設定完了通知を受けたサーバは、クライアント装置に応答する(ステップS8)。
その後、同一セッションにおいて、クライアント装置が後続リクエストを負荷分散装置に発行すると(ステップS9)、負荷分散装置は、自律振分アルゴリズムに従って、いずれかのメッセージ中継装置にリクエストを振分ける(ステップS10)。続いて、リクエストを受信したメッセージ中継装置は、保持する一意性保証設定(転送ルール)に基づいて、該当するサーバにリクエストを中継する(ステップS11)。このようにして、メッセージ中継装置を並列化して負荷分散しつつ、一意性保証を行うこともできる。
しかしながら、この手法の場合、管理装置は、すべてのメッセージ中継装置へ転送ルールを配布しなければならない。さらに、メッセージを確実に適切なサーバへ届けるためには、すべてのメッセージ中継装置への設定が完了したことを確認した後に、処理を継続することが必要とされる。したがって、転送ルールを設定する回数が多く、また、全てのメッセージ中継装置が設定を完了するまで待機状態となり、クライアントへの応答性能が劣化する。
開示の技術は、上記に鑑みてなされたものであって、一意性を保証しつつ、クライアントへの応答性能の劣化を防止することが可能である負荷分散装置、負荷分散方法および負荷分散プログラムを提供することを目的とする。
本願の開示する負荷分散装置は、クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子と、前記経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶するルール記憶部と、前記クライアント装置からメッセージを受信した場合に、当該メッセージに経路制御識別子が含まれているか否かを判定する識別子判定部と、前記識別子判定部によって経路制御識別子が含まれていると判定された場合に、当該経路制御識別子と対応付けられた中継装置情報を前記ルール記憶部に記憶される負荷分散装置用転送ルールから特定し、特定した中継装置情報によって特定される中継装置に前記メッセージを振分ける第一振分部と、前記識別子判定部によって経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置に前記メッセージを振分ける第二振分部とを有する。
本願の開示する負荷分散装置、負荷分散方法および負荷分散プログラムの一つの態様によれば、一意性を保証しつつ、クライアントへの応答性能の劣化を防止することが可能であるという効果を奏する。
図1は、実施例1にかかる負荷分散装置を含むシステムの全体構成を示す図である。 図2−1は、クライアント装置が保持するARPテーブルを示す図である。 図2−2は、クライアント装置のネットワーク構成を示す図である。 図3−1は、負荷分散装置が保持するARPテーブルを示す図である。 図3−2は、負荷分散装置のネットワーク構成を示す図である。 図4−1は、中継装置が保持するARPテーブルを示す図である。 図4−2は、中継装置のネットワーク構成を示す図である。 図5は、中継装置が保持するコネクションテーブルを保持する図である。 図6−1は、各サーバ装置が保持するARPテーブルを示す図である。 図6−2は、各サーバ装置のネットワーク構成を示す図である。 図7は、クライアント装置の構成を示すブロック図である。 図8は、Cookieテーブル12aに保持される情報の例を示す図である。 図9は、アプリセッション識別子テーブル12bに保持される情報の例を示す図である。 図10は、負荷分散装置の構成を示すブロック図である。 図11は、中継装置リストテーブル22aに記憶される情報の例を示す図である。 図12は、転送ルールテーブル22bに記憶される情報の例を示す図である。 図13は、中継装置の構成を示すブロック図である。 図14は、転送ルールテーブル32aに記憶される情報の例を示す図である。 図15は、サーバリストテーブル32bに記憶される情報の例を示す図である。 図16は、コネクションテーブル32cに記憶される情報の例を示す図である。 図17は、サーバ装置の構成を示すブロック図である。 図18は、セッションテーブル42aに記憶される情報の例を示す図である。 図19は、管理装置の構成を示すブロック図である。 図20は、実施例1にかかる負荷分散装置を含むシステムの処理シーケンスを示す図である。 図21は、各装置の様々なシチュエーションを説明する図である。 図22は、リクエスト送信時のクライアント動作を示すフローチャートである。 図23は、セッション確立までのメッセージ例を示す図である。 図24は、セッション確立後のメッセージ例を示す図である。 図25は、リクエスト受信時の負荷分散装置動作を示すフローチャートである。 図26は、セッション確立後に中継装置へ送信されるメッセージ例を示す図である。 図27は、セッション確立前に中継装置へ送信されるメッセージ例を示す図である。 図28は、リクエスト受信時の中継装置動作を示すフローチャートである。 図29は、セッション確立後にサーバ装置へ送信されるメッセージ例を示す図である。 図30は、セッション確立前にサーバ装置へ送信されるメッセージ例を示す図である。 図31は、リクエスト受信時のサーバ装置動作を示すフローチャートである。 図32は、セッション確立後にサーバ装置から中継装置へ送信されるメッセージ例を示す図である。 図33は、セッション識別子受信時の管理装置動作を示すフローチャートである。 図34は、管理装置50が受信するセッション情報の例を示す図である。 図35は、管理装置50が作成する転送ルールの例を示す図である。 図36は、管理装置50が配布する転送ルールの例を示す図である。 図37は、応答受信時の中継装置動作を示すフローチャートである。 図38は、セッション確立後に経路制御識別子が埋め込まれたメッセージ例を示す図である。 図39は、セッション確立後に中継装置から負荷分散装置へ送信されるメッセージ例を示す図である。 図40は、応答受信時の負荷分散装置動作を示すフローチャートである。 図41は、セッション確立後に負荷分散装置からクライアント装置へ送信されるメッセージ例を示す図である。 図42は、応答受信時のクライアント動作を示すフローチャートである。 図43は、ルール設定時の中継装置動作を示すフローチャートである。 図44は、実施例2に係る中継装置の構成を示すブロック図である。 図45は、実施例2に係る管理装置の構成を示すブロック図である。 図46は、実施例2に係るシステムにおける処理シーケンスを示す図である。 図47は、実施例3に係る中継装置の構成を示すブロック図である。 図48は、セッション対応テーブル32dに記憶される情報の例を示す図である。 図49は、実施例3に係る管理装置の構成を示すブロック図である。 図50は、実施例3に係るシステムにおける処理シーケンスを示す図である。 図51は、サーバ負荷分散時の一意性保証を説明する図である。 図52は、SOAPメッセージの一例を示す図である。 図53は、従来技術を説明する図である。 図54は、従来技術の処理シーケンスを説明する図である。
以下に、本願の開示する負荷分散装置、負荷分散方法および負荷分散プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[全体構成]
まず、図1を用いて、開示する負荷分散装置を含むシステムの全体構成について説明する。図1は、実施例1にかかる負荷分散装置を含むシステムの全体構成を示す図である。
図1に示すように、このシステムは、クライアント装置、負荷分散装置、複数の中継装置、複数のサーバ装置、管理装置を有している。なお、図示した装置の台数などは、図示したものに限定されるものではない。
クライアント装置は、サーバ装置が提供するWebサービスなどを利用する端末装置である。そして、クライアント装置は、図2−1に示すように、負荷分散装置のIP(Internet Protocol)アドレスを示す「IP」、負荷分散装置のMAC(Media Access Control address)アドレスを示す「MAC」を対応付けたARPテーブル1を保持している。ここでは、「IP」として「IP−SLB」、「MAC」として「MAC-SLB」を記憶している。なお、ARPとは、Address Resolution Protocolのことである。また、クライアント装置は、図2−2に示すように、自装置のIPアドレスとして「IP−CL」、MACとして「MAC−CL」をネットワーク情報として記憶しており、これらを用いて通信を行う。図2−1は、クライアント装置が保持するARPテーブルを示す図であり、図2−2は、クライアント装置のネットワーク構成を示す図である。
負荷分散装置は、クライアント装置から受信したリクエストメッセージを中継装置に負荷分散する装置である。そして、負荷分散装置は、図3−1に示すように、クライアント装置の「IP、MAC」として「IP−CL、MAC−CL」、中継装置の「IP、MAC」として「IP−MSG、MAC−MSG」をARPテーブル2として保持している。なお、このARPテーブル2は、中継装置の台数分保持することとなる。また、負荷分散装置は、図3−2に示すように、自装置のIPアドレスとして「IP−SLB」、MACとして「MAC−SLB」をネットワーク情報として記憶しており、これらを用いて通信を行う。図3−1は、負荷分散装置が保持するARPテーブルを示す図であり、図3−2は、負荷分散装置のネットワーク構成を示す図である。
各中継装置は、負荷分散装置から受信したリクエストメッセージをサーバ装置に負荷分散する装置である。そして、各中継装置は、図4−1に示すように、クライアント装置の「IP、MAC」として「IP−CL、MAC−SLB」、負荷分散装置の「IP、MAC」として「IP−SLB、MAC−SLB」をARPテーブル3として保持している。また、各中継装置は、サーバ装置の「IP、MAC」として「IP−SVR、MAC−SLB」をARPテーブル3にさらに保持している。なお、このARPテーブル3は、サーバの台数分保持することとなる。そして、各中継装置は、図4−2に示すように、自装置のIPアドレスとして「IP−MSG」、MACとして「MAC−MSG」をネットワーク情報として記憶しており、これらを用いて通信を行う。
また、各中継装置は、図5に示すように、クライアント側コネクションと、サーバ側コネクションとをコネクションテーブルとして保持している。具体的には、接続される装置のTCP(Transmission Control Protocol)、UDP(User Datagram Protocol)ポート番号を記憶している。例えば、クライアント側コネクションとして、「IP−CL:Port#1、IP−MSG:Port#2」を記憶している。この情報は、ポート1に接続されるIP−CLのアドレスを持つクライアント装置と、ポート2に接続されるIP−MSGのアドレスを持つ中継装置とのセッションが確立されていることを示している。また、サーバ側コネクションとして、「IP−MSG:Port#3、IP−SVR:Port#2」を記憶している。この情報は、ポート3に接続されるIP−MSGのアドレスを持つ中継装置と、ポート2に接続されるIP−SVRのアドレスを持つサーバ装置とのセッションが確立されていることを示している。なお、図4−1は、中継装置が保持するARPテーブルを示す図であり、図4−2は、中継装置のネットワーク構成を示す図であり、図5は、中継装置が保持するコネクションテーブルを保持する図である。
各サーバ装置は、クライアント装置との間で一意性を保証しつつ、Webサービスなどを提供する装置である。そして、各サーバ装置は、図6−1に示すように、中継装置の「IP、MAC」として「IP−MSG、MAC−MSG」をARPテーブル4として保持している。また、各サーバ装置は、図6−2に示すように、自装置のIPアドレスとして「IP−SVR」、MACとして「MAC−SVR」をネットワーク情報として記憶しており、これらを用いて通信を行う。なお、このARPテーブル4は、サーバの台数分保持することとなる。図6−1は、各サーバ装置が保持するARPテーブルを示す図であり、図6−2は、各サーバ装置のネットワーク構成を示す図である。
管理装置は、負荷分散を行う転送ルールを中継装置や負荷分散装置に配布する装置である。そして、管理装置もARPテーブルを保持しており、具体的には、中継装置の「IP、MAC」、負荷分散装置の「IP、MAC」、サーバ装置の「IP、MAC」を保持している。
[各装置の構成]
次に、図7〜19を用いて、上述した各装置の構成について説明する。ここでは、クライアント装置10、負荷分散装置20、中継装置30、サーバ装置40、管理装置50の順に説明する。
(クライアント装置の構成)
まず、図7を用いて、クライアント装置の構成について説明する。図7は、クライアント装置の構成を示すブロック図である。図7に示すように、クライアント装置10は、通信制御I/F部11と、記憶部12と、制御部13とを有している。
通信制御I/F部11は、負荷分散装置20などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御I/F部11は、負荷分散装置20に対してリクエストメッセージを送信し、負荷分散装置20からリクエストメッセージを受信する。また、通信制御I/F部11は、サーバ装置40とセッションを確立して、利用するサービスの情報を送受信する。
記憶部12は、制御部13による各種処理に必要なデータおよびプログラムを格納するとともに、Cookieテーブル12aと、アプリセッション識別子テーブル12bとを有する。
Cookieテーブル12aは、アプリケーションによって指定される宛先のURL(Uniform Resource Locator)やIPアドレスなどリクエストメッセージの宛先に対応付けてcookieを保持する。ここで記憶されるcookieとしては、例えば、後述する経路制御識別子を用いることができる。具体的に例をあげると、Cookieテーブル12aは、図8に示すように、「宛先、cookie」として「192.168.1.1、K00000」や「xxx.url、Kaaaaa」などを記憶する。なお、図8は、Cookieテーブル12aに保持される情報の例を示す図である。
アプリセッション識別子テーブル12bは、アプリケーションによって指定される宛先のURLやIPアドレスなどリクエストメッセージの宛先に対応付けてアプリケーションの識別子を保持する。ここで記憶されるアプリケーションの識別子としては、例えば、後述するセッション情報を用いることができる。具体的に例をあげると、アプリセッション識別子テーブル12bは、図9に示すように、「宛先、アプリケーションのセッション識別子」として「192.168.1.1、S00000」や「xxx.url、S11111」などを記憶する。なお、図9は、アプリセッション識別子テーブル12bに保持される情報の例を示す図である。
制御部13は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、アプリ実行部13aを有し、これらによって各種処理を実行する。
アプリ実行部13aは、Webブラウザなどを用いたアプリケーションを実行し、負荷分散装置20に対して、リクエストメッセージを送信したり、各種サービスを利用したりする。例えば、アプリ実行部13aは、アプリケーションを実行し、宛先となるURLやIPアドレスがCookieテーブル12aに記憶されている場合には、宛先に対応するcookie(経路制御識別子)を取得する。そして、アプリ実行部13aは、取得したcookieを、SOAPメッセージのレイヤ7プロトコルヘッダに含める。同様に、アプリ実行部13aは、宛先となるURLやIPアドレスがアプリセッション識別子テーブル12bに記憶されている場合には、宛先に対応するプリケーションのセッション識別子を取得する。そして、アプリ実行部13aは、取得したセッション識別子を、SOAPメッセージのメッセージコンテンツ部に含める。アプリ実行部13aは、cookie(経路制御識別子)やセッション識別子を格納したメッセージを負荷分散装置20に送信する。
(負荷分散装置の構成)
次に、図10を用いて、負荷分散装置の構成について説明する。図10は、負荷分散装置の構成を示すブロック図である。図10に示すように、負荷分散装置20は、通信制御I/F部21と、記憶部22と、制御部23とを有している。
通信制御I/F部21は、クライアント装置10や中継装置30などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御I/F部21は、クライアント装置10からリクエストメッセージを受信し、クライアント装置10に対して応答メッセージを送信する。また、通信制御I/F部21は、中継装置30に対してリクエストメッセージを送信し、中継装置30から応答メッセージを受信する。また、通信制御I/F部21は、中継装置30に対してリクエストメッセージを負荷分散する際に利用する転送ルールを中継装置30から受信する。
記憶部22は、制御部23による各種処理に必要なデータおよびプログラムを格納するとともに、中継装置リストテーブル22aと、転送ルールテーブル22bとを有する。
中継装置リストテーブル22aは、負荷分散装置20が負荷分散の対象とする中継装置のIPアドレスを記憶する。例えば、中継装置リストテーブル22aは、図11に示すように、「中継装置のIPアドレス」として「10.1.1.1」、「10.1.1.2」、「10.1.1.3」などと記憶する。なお、図11は、中継装置リストテーブル22aに記憶される情報の例を示す図である。
転送ルールテーブル22bは、一意性を保証するセッションを特定し、適切な中継装置に負荷分散する転送ルールを保持する。例えば、転送ルールテーブル22bは、図12に示すように、「経路情報識別子、転送先の中継装置のIPアドレス」として「K00000、10.1.1.1」などと記憶する。ここで記憶される「経路情報識別子」とは、適切な転送先の中継装置を特定するための識別子である。なお、図12は、転送ルールテーブル22bに記憶される情報の例を示す図である。
制御部23は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、メッセージ識別部23aと、負荷分散機能部23bと、自律学習部23cとを有し、これらによって各種処理を実行する。
メッセージ識別部23aは、リクエストメッセージをクライアント装置10から受信し、当該メッセージに「経路情報識別子」が含まれているか否かを識別する。例えば、メッセージ識別部23aは、SOAPのリクエストメッセージをクライアント装置10から受信した場合、メッセージのレイヤ7プロトコルヘッダのcookieを参照して、「経路情報識別子」が含まれているか否かを識別する。そして、メッセージ識別部23aは、受信したメッセージと、識別した結果とを負荷分散機能部23bに送信する。
負荷分散機能部23bは、クライアント装置10から受信したリクエストメッセージを中継装置30に負荷分散する。例えば、負荷分散機能部23bは、メッセージ識別部23aによって「経路情報識別子」が含まれていないと判定されたメッセージについては、ラウンドロビンなどの自律振分アルゴリズムに従って、負荷分散先の中継装置を決定する。そして、負荷分散機能部23bは、決定した中継装置のIPアドレスを中継装置リストテーブル22aから特定し、クライアント装置10から受信したリクエストメッセージを送信する。
また、負荷分散機能部23bは、メッセージ識別部23aによって「経路情報識別子」が含まれていると判定されたメッセージについては、メッセージのレイヤ7プロトコルヘッダのcookieを参照して、「経路情報識別子」を取得する。そして、負荷分散機能部23bは、取得した「経路情報識別子」に対応する中継装置のIPアドレスを転送ルールテーブル22bから特定し、クライアント装置10から受信したリクエストメッセージを送信する。
自律学習部23cは、中継装置から応答メッセージを受信し、経路制御識別子と転送先の中継装置のIPアドレスとを取得し、転送ルールを生成して転送ルールテーブル22bに格納する。例えば、自律学習部23cは、中継装置からSOAPの応答メッセージを受信した場合に、レイヤ7プロトコルヘッダのcookieを参照して「経路情報識別子」を取得する。また、自律学習部23cは、当該応答メッセージのレイヤ3プロトコルヘッダなどから送信元の「中継装置のIPアドレス」を取得する。そして、自律学習部23cは、「経路情報識別子」と「中継装置のIPアドレス」とを対応付けた転送ルールを作成して、転送ルールテーブル22bに格納する。
(中継装置の構成)
次に、図13を用いて、各中継装置の構成について説明する。図13は、中継装置の構成を示すブロック図である。図13に示すように、中継装置30は、通信制御I/F部31と、記憶部32と、制御部33とを有している。
通信制御I/F部31は、負荷分散装置20、サーバ装置40、管理装置50などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御I/F部31は、負荷分散装置20からリクエストメッセージを受信し、負荷分散装置20に対して応答メッセージを送信する。また、通信制御I/F部31は、サーバ装置40に対してリクエストメッセージを負荷分散し、サーバ装置40から応答メッセージを受信する。また、通信制御I/F部41は、サーバ装置40に対してリクエストメッセージを負荷分散する際に利用する転送ルールを管理装置50から受信する。
記憶部32は、制御部33による各種処理に必要なデータおよびプログラムを格納するとともに、転送ルールテーブル32aと、サーバリストテーブル32bと、コネクションテーブル32cとを有する。
転送ルールテーブル32aは、クライアント装置10とサーバ装置との間のセッションを識別するセッション情報と、クライアント装置から送信されたメッセージが振り分けられたサーバ装置を特定するサーバ情報とが対応付けられた転送ルールを保持する。例えば、転送ルールテーブル32aは、図14に示すように、「セッション識別子、転送先サーバのIPアドレス」として「S00001、1.1.1.1」などを記憶する。なお、図14は、転送ルールテーブル32aに記憶される情報の例を示す図である。
サーバリストテーブル32bは、中継措置30が負荷分散の対象とするサーバ装置のIPアドレスを記憶する。例えば、サーバリストテーブル32bは、図15に示すように、「サーバのIPアドレス」として「1.1.1.1」や「1.1.1.2」などを記憶する。なお、図15は、サーバリストテーブル32bに記憶される情報の例を示す図である。
コネクションテーブル32cは、クライアント装置10からメッセージリクエストを受信して、サーバ装置に中継した際に書き換えたパケットヘッダの情報を保持する。例えばコネクションテーブル32cは、図16に示すように、クライアント装置からのリクエストを受信したコネクションを示す「クライアント側コネクション」とサーバ装置からのリクエストを送受信したコネクションを示す「サーバ側コネクション」とを記憶する。「クライアント側コネクション」には、送信元のクライアント装置のIPアドレスとポート番号、宛先の中継装置のIPとポート番号とがそれぞれ対応付けられた情報が格納される。また、「サーバ側コネクション」には、送信元の中継装置のIPアドレスとポート番号、宛先のサーバ装置のIPとポート番号とがそれぞれ対応付けられた情報が格納される。なお、図16は、コネクションテーブル32cに記憶される情報の例を示す図である。
制御部33は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。また、制御部33は、メッセージ判定部33aと、第一振分部33bと、第二振分部33cと、転送ルール格納部33dと、メッセージ応答部33eとを有し、これらによって各種処理を実行する。
メッセージ判定部33aは、負荷分散装置20から振り分けられたリクエストメッセージを受信し、当該リクエストメッセージにセッション識別子が含まれるか否かを判定する。例えば、メッセージ判定部33aは、負荷分散装置20から振り分けられたSOAPのリクエストメッセージを受信した場合に、当該メッセージのメッセージコンテンツ部を参照して、「セッション識別子」が含まれているか否かを判定する。そして、メッセージ判定部33aは、「セッション識別子」が含まれていると判定したメッセージを第一振分部33bに送信し、「セッション識別子」が含まれていないと判定したメッセージを第二振分部33cに送信する。
第一振分部33bは、メッセージ判定部33aによってセッション識別子が含まれると判定された場合に、転送ルールテーブル32aに保持される転送ルールに従って、適切なサーバ装置にメッセージを振り分ける。例えば、第一振分部33bは、リクエストメッセージのメッセージコンテンツ部にセッション識別子「S00001」が含まれている場合には、「S00001」に対応する転送先のIPアドレス「1.1.1.1」を転送ルールテーブル32aから特定する。そして、第一振分部33bは、特定したIPアドレス「1.1.1.1」に対して、リクエストメッセージを送信する。
第二振分部33cは、メッセージ判定部33aによってセッション識別子が含まれないと判定された場合に、所定の条件に基づいて特定されるサーバ装置に対して、当該メッセージを振り分ける。例えば、第二振分部33cは、メッセージ判定部33aによってセッション識別子が含まれないと判定された場合に、ラウンドロビンなどの自律振分アルゴリズムに従って、振分先のサーバ装置を特定する。そして、第二振分部33cは、特定したサーバ装置のIPアドレスをサーバリストテーブル32bから特定して、リクエストメッセージを送信する。
また、第二振分部33cは、メッセージ判定部33aによって受信されたときの送信元のクライアント装置のIPアドレスとポート番号、宛先の中継装置のIPとポート番号を取得して、コネクションテーブル32cの「クライアント側コネクション」に格納する。同様に、第二振分部33cは、メッセージを振り分けたときの送信元の中継装置のIPアドレスとポート番号、宛先のサーバ装置のIPとポート番号とを取得して、コネクションテーブル32cの「サーバ側コネクション」に格納する。
転送ルール格納部33dは、セッション識別子と、第二振分部33cによってメッセージが振り分けられたサーバ装置を特定するサーバ情報とが対応付けられた転送ルールを管理装置50から受信して転送ルールテーブル32aに格納する。例えば、転送ルール格納部33dは、セッション識別子「S11111」とサーバ情報「1.1.1.2」とを管理装置50から受信し、これらを対応付けて転送ルールテーブル32aに格納する。
メッセージ応答部33eは、クライアント装置10から送信されたメッセージが通過する経路を識別する経路制御識別子を埋め込んだ応答メッセージを負荷分散装置20に送信する。例えば、メッセージ応答部33eは、第一振分部33b又は第二振分部33cがメッセージを振り分けたサーバ装置からSOAPの応答メッセージを受信する。すると、メッセージ応答部33eは、当該応答メッセージを受信するクライアント装置10とのセッションを識別するための識別子であり、当該中継装置30を特定する識別子である経路制御識別子を生成する。そして、メッセージ応答部33eは、負荷分散装置20が参照可能な領域であるレイヤ7プロトコルヘッダのcookieの領域に、生成した経路制御識別子を埋め込んだ応答メッセージを生成して、負荷分散装置20に送信する。
(サーバ装置の構成)
次に、図17を用いて、各サーバ装置の構成について説明する。図17は、サーバ装置の構成を示すブロック図である。図17に示すように、サーバ装置40は、通信制御I/F部41と、記憶部42と、制御部43とを有している。
通信制御I/F部41は、中継装置30、管理装置50などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御I/F部41は、中継装置30からリクエストメッセージを受信し、中継装置30に対して応答メッセージを送信する。また、通信制御I/F部41は、管理装置50に対して、セッション識別子を含むセッション情報を送信する。
記憶部42は、制御部43による各種処理に必要なデータおよびプログラムを格納するとともに、セッションテーブル42aを有する。
セッションテーブル42aは、クライアント装置10との間で接続されるセッションでやり取りされているデータを記憶する。例えば、セッションテーブル42aは、図18に示すように、「セッション識別子、セッションデータ」として「S00001、XXXX」や「S11111、YYYY」などを記憶する。ここで記憶される「セッション識別子」や「セッションデータ」は、中継装置30から送信されたメッセージから取得することができる。なお、図18は、セッションテーブル42aに記憶される情報の例を示す図である。
制御部43は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、セッション情報通知部43aと、アプリ提供部43bとを有し、これらによって各種処理を実行する。
セッション情報通知部43aは、クライアント装置10とサーバ装置との間のセッションを識別するセッション識別子を管理装置50に送信する。例えば、セッション情報通知部43aは、後述するアプリ提供部43bによって作成されたセッション識別子「S00001」と、自装置のIPアドレス「1.1.1.1」とを対応付けたセッション情報を管理装置50に送信する。
また、セッション情報通知部43aは、クライアント装置10とのメッセージの経路として特定された中継装置のIPアドレスを管理装置50から受信する。そして、セッション情報通知部43aは、受信したリクエストメッセージの応答メッセージのメッセージコンテンツ部にセッション識別子を埋め込んで、受信した中継装置のIPアドレスに送信する。
アプリ提供部43bは、負荷分散装置20および中継装置30を介してセッションが確立されたクライアント装置10が要求するサービスを、メモリなどから取得して、クライアント装置10に提供する。例えば、アプリ提供部43bは、は、中継装置からセッション識別子が含まれていないメッセージを受信した場合に、当該メッセージを送信したクライアント装置10との間のセッションを識別するためのセッション識別子「S00001」を作成する。そして、アプリ提供部43bは、セッション情報通知部43aに作成したセッション識別子「S00001」を送信する。
(管理装置の構成)
次に、図19を用いて、管理装置の構成について説明する。図19は、管理装置の構成を示すブロック図である。図19に示すように、管理装置50は、通信制御I/F部51と、記憶部52と、制御部53とを有している。
通信制御I/F部51は、中継装置30、サーバ装置40などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御I/F部51は、サーバ装置40からセッション情報を受信する。また、通信制御I/F部51は、中継装置30に対して転送ルールを送信する。
記憶部52は、制御部53による各種処理に必要なデータおよびプログラムを格納するとともに、転送ルールテーブル52aを有する。転送ルールテーブル52aは、後述するルール作成部53bによって作成された転送ルールを保持する記憶部であり、中継装置30の転送ルールテーブル32aと同様の情報を記憶する。
制御部53は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、セッション情報受信部53a、ルール作成部53b、ルール配布部53cを有し、これらによって各種処理を実行する。
セッション情報受信部53aは、クライアント装置10から送信されたメッセージが負荷分散装置20によって中継装置30に振分けられ、中継装置30によってメッセージが振分けられたサーバ装置40からセッション識別子を受信する。例えば、セッション情報受信部53aは、セッション識別子「S00001」と、メッセージが振り分けられたサーバ装置のIPアドレス「1.1.1.1」と、負荷分散元の中継装置30のIPアドレスを対応付けたセッション情報を受信する。
ルール作成部53bは、中継装置30がメッセージを振分ける際に参照する転送ルールであって、セッション識別子と、サーバ情報とを対応付けた中継装置用転送ルールを作成する。例えば、ルール作成部53bは、セッション情報受信部53aによって受信されたセッション識別子「S00001」と、メッセージが振り分けられたサーバ装置のIPアドレス「1.1.1.1」とを対応付けた中継装置用転送ルールを作成する。そして、ルール作成部53bは、作成した中継装置用転送ルールを転送ルールテーブル52aに格納する。
ルール配布部53cは、ルール作成部53bによって作成された中継装置用転送ルールを、所定の条件に基づいて特定される中継装置に対して配布する。例えば、ルール配布部53cは、セッション情報に含まれる負荷分散元の中継装置30やラウンドロビンなどの自律振分アルゴリズムや予め定めた順番などに従って中継装置を特定する。そして、ルール配布部53cは、特定した中継装置に対して、ルール作成部53bにより作成されたルールを転送ルールテーブル52aから取得して配布する。
[処理シーケンス]
次に、図20を用いて、上述したシステムにおける処理シーケンスを説明する。図20は、実施例1にかかる負荷分散装置を含むシステムの処理シーケンスを示す図である。
図20に示すように、クライアント装置10のアプリ実行部13aは、アプリを起動し、負荷分散装置20に対してリクエストメッセージを送信する(ステップS101)。そして、負荷分散装置20のメッセージ識別部23aは、受信したメッセージに経路制御識別子が含まれていないと判定し、負荷分散機能部23bは、自律振分アルゴリズムに従って特定した中継装置30にリクエストメッセージを負荷分散する(ステップS102)。
リクエストメッセージを受信した中継装置30のメッセージ判定部33aは、メッセージに経路制御識別子が含まれていないと判定し、第二振分部33cは、自律振分アルゴリズムで特定したサーバ装置40にメッセージを負荷分散する(ステップS103)。
その後、メッセージを受信したサーバ装置40のアプリ提供部43bは、当該メッセージを送信したクライアント装置10との間のセッションを確立するセッション識別子を生成する(ステップS104)。続いて、セッション情報通知部43aは、生成したセッション識別子と、自装置のIPアドレスとを含むセッション情報を管理装置50に送信する(ステップS105)。
管理装置50のルール作成部53bは、受信したセッション識別子とIPアドレスとを対応付けた転送ルールを作成し、ルール配布部53cは、自律振分アルゴリズムなどで特定した中継装置に作成された転送ルールを配布する(ステップS106)。その後、管理装置50のルール配布部53cは、中継装置30が転送ルールを格納したことを示す完了通知を受信すると、転送ルール設定完了通知をサーバ装置40に送信する(ステップS107)。このとき、管理装置50のルール配布部53cは、クライアント装置10とのメッセージの経路として特定された中継装置30のIPアドレスもあわせて送信する。
設定完了通知を受信したサーバ装置40のセッション情報通知部43aは、受信したリクエストメッセージの応答メッセージのメッセージコンテンツ部にセッション識別子を埋め込んで、受信した中継装置30のIPアドレスに送信する(ステップS108)。
セッション識別子を受信した中継装置30は、クライアント装置10から送信されたメッセージが通過する経路を識別する経路制御識別子を埋め込んだ応答メッセージを負荷分散装置20に送信する(ステップS109)。負荷分散装置20は、受信したメッセージをクライアント装置10に送信する(ステップS110)。
その後、クライアント装置10のアプリ実行部13aは、経路制御識別子とセッション識別子とが埋め込まれたリクエストメッセージを、負荷分散装置20に対して送信する(ステップS111)。
そして、負荷分散装置20のメッセージ識別部23aは、受信したメッセージに経路制御識別子が含まれていると判定し、負荷分散機能部23bは、経路制御識別子によって特定される転送ルールに従って、中継装置30に負荷分散する(ステップS112)。
さらに、中継装置30のメッセージ判定部33aは、メッセージに経路制御識別子が含まれていると判定し、第一振分部33bは、経路制御識別子によって特定されるサーバ装置40にメッセージを負荷分散する(ステップS113)。このようにして、一意性が保証された通信が可能となる。
[フローチャート]
次に、図21〜43を用いて、上述したシステムにおける各装置のフローチャートを説明する。ここでは、各装置の様々なシチュエーションにおいて実行されるフローチャートを説明する。具体的には、図21に示すように、リクエスト送信時のクライアント動作、リクエスト受信時の負荷分散装置動作、リクエスト受信時の中継装置動作、リクエスト受信時のサーバ装置動作、セッション識別子受信時の管理装置動作について説明する。さらに、応答受信時の中継装置動作、応答受信時の負荷分散装置動作、応答受信時のクライアント動作、ルール設定時の中継装置動作についても説明する。なお、図21は、各装置の様々なシチュエーションを説明する図である。
(リクエスト送信時のクライアント動作)
まず、図22を用いて、リクエスト送信時のクライアント動作を示すフローチャートについて説明する。図22は、リクエスト送信時のクライアント動作を示すフローチャートである。
図22に示すように、クライアント装置10のアプリ実行部13aは、ユーザからの指定や実行されるアプリケーションによって、宛先(URLまたはIPアドレス)が指定され、送信するリクエストメッセージを生成する(ステップS201)。
ここで生成されるメッセージは、図23に示すように、L2プロトコルヘッダを示すL2ヘッダと、L3プロトコルヘッダおよびL4プロトコルヘッダを示すパケットヘッダと、L7プロトコルヘッダを示すプロトコルヘッダと有する。さらに、ここで生成されるメッセージは、メッセージコンテンツ部も有する。L2ヘッダには、送信元MACアドレスであるクライアント装置10のMACアドレスと、宛先MACアドレスである負荷分散装置20のMACアドレスとが記載される。パケットヘッダには、送信元IPアドレスとポート番号としてクライアント装置10のIPアドレスとポート番号、宛先IPアドレスとポート番号として負荷分散装置20のIPアドレスとポート番号とが記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体が記載される。また、送信元MACアドレス、IPアドレス、ポート番号は、クライアント装置10自体のネットワーク設定から取得することができる。宛先MACアドレスは、例えば、URL(Uniform Resource Locator)などユーザから入力された宛先情報から取得した宛先IPアドレスをキーにしてARPテーブル1を検索することで取得できる。ポート番号は、ユーザから入力された宛先情報から取得することができる。なお、図23は、セッション確立までのメッセージ例を示す図である。
続いて、アプリ実行部13aは、付与するアプリセッション識別子(セッション識別子)が存在するか否かを判定する(ステップS202)。例えば、アプリ実行部13aは、ステップS201で指定された宛先をキーにして、アプリセッション識別子テーブル12bを検索することにより、アプリセッション識別子の存在を確認することができる。
そして、アプリ実行部13aは、付与するアプリセッション識別子が存在する場合(ステップS202肯定)、該当するセッション識別子をアプリセッション識別子テーブル12bから取得し、送信対象のリクエストメッセージに付与する(ステップS203)。ここで、アプリ実行部13aは、送信対象のリクエストメッセージのメッセージコンテンツ部にセッション識別子を付与する。
続いて、アプリ実行部13aは、付与するCookie(経路制御識別子)が存在するか否かを判定する(ステップS204)。例えば、アプリ実行部13aは、ステップS201で指定された宛先をキーにして、Cookieテーブル12aを検索することにより、Cookie(経路制御識別子)の存在を確認することができる。
そして、アプリ実行部13aは、付与するCookie(経路制御識別子)が存在する場合(ステップS204肯定)、該当する経路制御識別子をCookieテーブル12aから取得し、送信対象のリクエストメッセージに付与する(ステップS205)。ここで、アプリ実行部13aは、送信対象のリクエストメッセージのプロトコルヘッダに経路制御識別子を付与する。
その後、アプリ実行部13aは、セッション識別子と経路制御識別子とを付与したリクエストメッセージを宛先の負荷分散装置20に送信する(ステップS206)。ここで送信されるメッセージは、図24に示すように、L2ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。L2ヘッダには、送信元MACアドレスであるクライアント装置10のMACアドレスと、宛先MACアドレスである負荷分散装置20のMACアドレスとが記載される。パケットヘッダには、送信元IPアドレスとポート番号としてクライアント装置10のIPアドレスとポート番号、宛先IPアドレスとポート番号として負荷分散装置20のIPアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子とが記載される。なお、図24は、セッション確立後のメッセージ例を示す図である。
一方、ステップS202に戻り、アプリ実行部13aは、付与するアプリセッション識別子が存在しない場合(ステップS202否定)、ステップS204と同様、付与するCookie(経路制御識別子)が存在するか否かを判定する(ステップS207)。
そして、アプリ実行部13aは、付与するCookie(経路制御識別子)が存在する場合(ステップS207肯定)、図23や図24とは異なる処理対象外のメッセージを負荷分散装置20に送信する(ステップS208)。一方、アプリ実行部13aは、付与するCookie(経路制御識別子)が存在しない場合(ステップS207否定)、図24に示したリクエストメッセージを負荷分散装置20に送信する(ステップS209)。
また、ステップS204において、アプリ実行部13aは、付与するアプリセッション識別子が存在しないと判定した場合(ステップS204否定)、図23や図24とは異なる処理対象外のメッセージを負荷分散装置20に送信する(ステップS210)。
(リクエスト受信時の負荷分散装置動作)
次に、図25を用いて、リクエスト受信時の負荷分散装置動作を示すフローチャートについて説明する。図25は、リクエスト受信時の負荷分散装置動作を示すフローチャートである。
図25に示すように、負荷分散装置20のメッセージ識別部23aは、クライアント装置10からリクエストメッセージを受信し、当該メッセージに「経路制御識別子」が含まれているか否かを識別する(ステップS301)。例えば、メッセージ識別部23aは、受信したリクエストメッセージのプロトコルヘッダのcookieを参照して、「経路制御識別子」が存在するか否かを判定する。
そして、負荷分散機能部23bは、メッセージ識別部23aによって、「経路制御識別子」が抽出された場合(ステップS301肯定)、抽出された「経路制御識別子」に対応する転送ルールが存在するか否かを判定する(ステップS302)。例えば、負荷分散機能部23bは、抽出された「経路制御識別子」をキーにして転送ルールテーブル22bを検索し、抽出された「経路制御識別子」に対応する転送ルールが存在するか否かを判定する。
抽出された「経路制御識別子」に対応する転送ルールが存在する場合(ステップS302肯定)、負荷分散機能部23bは、転送ルールに従って中継装置30を特定し(ステップS303)、受信したリクエストメッセージを送信する(ステップS304)。具体的には、負荷分散機能部23bは、受信したメッセージのパケットヘッダのDestination値を中継装置のIPアドレスに書換える。また、負荷分散機能部23bは、中継装置のIPアドレスをキーにしてARPテーブル2から特定した中継装置のMACアドレスで、受信したメッセージのL2ヘッダのDestination値を書換える。
このようにして作成されたメッセージは、例えば、図26に示すように、L2ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。L2ヘッダには、送信元MACアドレスであるクライアント装置10のMACアドレスと、宛先MACアドレスである中継装置30のMACアドレスとが記載される。パケットヘッダには、送信元IPアドレスとポート番号としてクライアント装置10のIPアドレスとポート番号、宛先IPアドレスとポート番号として中継装置30のIPアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子とが記載される。なお、図26は、セッション確立後に中継装置へ送信されるメッセージ例を示す図である。
一方、負荷分散機能部23bは、メッセージに「経路制御識別子」が含まれていない場合(ステップS301否定)、自律負荷分散アルゴリズムに従って、負荷分散先の中継装置30を選択し、受信したリクエストメッセージを送信する(ステップS305)。また、抽出された「経路制御識別子」に対応する転送ルールが存在しない場合も(ステップS302否定)、同様の処理が実行される。
ここで送信されるメッセージは、図26と同様に、パケットヘッダのDestination値を中継装置のIPアドレスに書換えられ、メッセージのL2ヘッダのDestination値が中継装置のMACアドレスで書き換えられたメッセージである。図26と異なる点は、図27に示すように、プロトコルヘッダに、経路制御識別子が記載されておらず、メッセージコンテンツ部にセッション識別子とが記載されていない点である。なお、図27は、セッション確立前に中継装置へ送信されるメッセージ例を示す図である。
(リクエスト受信時の中継装置動作)
次に、図28を用いて、リクエスト受信時の中継装置動作を示すフローチャートについて説明する。図28は、リクエスト受信時の中継装置動作を示すフローチャートである。
図28に示すように、中継装置30のメッセージ判定部33aは、負荷分散装置20から振り分けられたリクエストメッセージを受信し、当該リクエストメッセージにセッション識別子が含まれるか否かを判定する(ステップS401)。例えば、メッセージ判定部33aは、受信したリクエストメッセージのメッセージコンテンツ部を参照して、「セッション識別子」が存在するか否かを判定する。
そして、メッセージ判定部33aによって、「セッション識別子」が抽出された場合(ステップS401肯定)、第一振分部33bは、抽出された「経路情報識別子」に対応する転送ルールが存在するか否かを判定する(ステップS402)。例えば、第一振分部33bは、抽出された「セッション識別子」をキーにして転送ルールテーブル32aを検索し、抽出された「セッション識別子」に対応する転送ルールが存在するか否かを判定する。
抽出された「セッション識別子」に対応する転送ルールが存在する場合(ステップS402肯定)、第一振分部33bは、転送ルールに従ってサーバ装置40を特定し(ステップS403)、受信したリクエストメッセージを送信する(ステップS404)。具体的には、第一振分部33bは、受信したメッセージのパケットヘッダのDestination値をサーバ装置40のIPアドレスに書換える。また、第一振分部33bは、サーバ装置40のIPアドレスをキーにしてARPテーブル2から特定したサーバ装置40のMACアドレスで、受信したメッセージのL2ヘッダのDestination値を書換える。
さらに、第一振分部33bは、受信したメッセージのL2ヘッダのSource値を、メッセージを送信した中継装置30のMACアドレスに書き換える。また、第一振分部33bは、受信したメッセージのパケットヘッダのSource値を、メッセージを送信した中継装置30のIPアドレスに書換える。
このようにして作成されたメッセージは、例えば、図29に示すように、L2ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。L2ヘッダには、送信元MACアドレスである中継装置30のMACアドレスと、宛先MACアドレスであるサーバ装置40のMACアドレスとが記載される。パケットヘッダには、送信元IPアドレスとポート番号として中継装置30のIPアドレスとポート番号、宛先IPアドレスとポート番号としてサーバ装置40のIPアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子とが記載される。なお、図29は、セッション確立後にサーバ装置へ送信されるメッセージ例を示す図である。
一方、第二振分部33cは、メッセージに「セッション識別子」が含まれていない場合(ステップS401否定)、自律負荷分散アルゴリズムに従って、負荷分散先のサーバ装置40を選択し、受信したリクエストメッセージを送信する(ステップS405)。また、抽出された「セッション識別子」に対応する転送ルールが存在しない場合も(ステップS402否定)、同様の処理が実行される。
ここで送信されるメッセージは、図29と同様に、パケットヘッダのDestination値とSource値とが書換えられ、メッセージのL2ヘッダのDestination値とSource値とが書き換えられたメッセーである。図29と異なる点は、図30に示すように、プロトコルヘッダに、経路制御識別子が記載されておらず、メッセージコンテンツ部にセッション識別子とが記載されていない点である。なお、図30は、セッション確立前にサーバ装置へ送信されるメッセージ例を示す図である。
(リクエスト受信時のサーバ装置動作)
次に、図31を用いて、リクエスト受信時のサーバ装置動作を示すフローチャートについて説明する。図31は、リクエスト受信時のサーバ装置動作を示すフローチャートである。
図31に示すように、サーバ装置40のアプリ提供部43bは、中継装置30から受信したリクエストメッセージのメッセージコンテンツ部にセッション識別子が含まれているか否かを判定する(ステップS501)。
そして、アプリ提供部43bは、セッション識別子が含まれている場合(ステップS501肯定)、同セッションに関するアプリを実行し(ステップS502)、クライアントへ応答を送信する(ステップS503)。
具体的には、アプリ提供部43bは、抽出したセッション識別子をキーにして、セッションテーブル42aを参照し、セッションデータを取得し、これを用いた処理を実行した応答を作成する。また、アプリ提供部43bは、図29に示したメッセージのパケットヘッダのSource値から取得した中継装置30のIPアドレスで、パケットヘッダのDestination値を書き換える。そして、アプリ提供部43bは、中継装置30のIPアドレスをキーにして、ARPテーブル4を参照して取得した中継装置30のMACアドレスで、図29に示したメッセージのL2ヘッダのDestination値を書き換える。さらに、アプリ提供部43bは、メッセージのメッセージコンテンツ部に、セッション識別子およびセッションデータを格納する。
このようにして作成されたメッセージは、例えば、図32に示すように、L2ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。L2ヘッダには、送信元MACアドレスであるサーバ装置40のMACアドレスと、宛先MACアドレスである中継装置30のMACアドレスとが記載される。パケットヘッダには、送信元IPアドレスとポート番号としてサーバ装置40のIPアドレスとポート番号、宛先IPアドレスとポート番号として中継装置30のIPアドレスとポート番号とが記載される。さらに、メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子およびセッションデーとが記載される。なお、図32は、セッション確立後にサーバ装置から中継装置へ送信されるメッセージ例を示す図である。
一方、アプリ提供部43bは、セッション識別子が含まれていない場合(ステップS501否定)、セッション作成、すなわち、アプリケーションがセッションデータを生成し、そのデータに付与するセッション識別子を生成する(ステップS504)。
その後、セッション情報通知部43aは、セッション識別子、サーバ装置40のIPアドレス、送信元(負荷分散元)の中継装置のIPアドレスを含むセッション情報を管理装置50に送信する(ステップS505)。そして、セッション情報通知部43aは、管理装置50から応答を受信すると(ステップS506肯定)、ステップS502以降の処理を実行する。
(セッション識別子受信時の管理装置動作)
続いて、図33を用いて、セッション識別子受信時の管理装置動作を示すフローチャートについて説明する。図33は、セッション識別子受信時の管理装置動作を示すフローチャートである。
図33に示すように、管理装置50のセッション情報受信部53aは、サーバ装置40からセッション情報を受信し(ステップS601)、メッセージを中継する中継装置30を選択する(ステップS602)。続いて、ルール作成部53bは、転送ルールを作成する(ステップS603)。
例えば、セッション情報受信部53aは、図34に示すように、「セッション識別子、セッション保持サーバアドレス、中継装置アドレス」が対応付けられたメッセージを受信する。ここで「セッション識別子」とは、サーバ装置40が生成した識別子であり、「セッション保持サーバアドレス」とは、セッション識別子を生成したサーバ装置40のIPアドレスである。また、「中継装置アドレス」とは、メッセージをサーバ装置40に送信した中継装置のIPアドレスである。
そして、セッション情報受信部53aは、図35に示すように、「セッション識別子」と「中継装置アドレス」とを対応付けた転送ルールを作成する。なお、図34は、管理装置50が受信するセッション情報の例を示す図であり、図35は、管理装置50が作成する転送ルールの例を示す図である。
図33に戻り、ルール配布部53cは、ルール作成部53bによって作成された転送ルールを、ステップS602で選択・特定された中継装置に対して配布する(ステップS604)。例えば、ルール配布部53cは、図36に示すように、ルール配布先の中継装置30のIPアドレスを示す「設定先アドレス」、セッション識別子とサーバのIPアドレスが含まれる「転送ルール」とを選択・特定された中継装置30に対して配布する。なお、図36は、管理装置50が配布する転送ルールの例を示す図である。
その後、ルール配布部53cは、ルール配布先の中継装置30からルール設定完了通知を受信すると(ステップS605肯定)、セッション情報送信元のサーバ装置40に対して、設定完了通知を送信する(ステップS606)。
(応答受信時の中継装置動作)
続いて、図37を用いて、応答受信時の中継装置動作を示すフローチャートについて説明する。図37は、応答受信時の中継装置動作を示すフローチャートである。
図37に示すように、中継装置30のメッセージ応答部33eは、クライアント装置10から送信されたメッセージが通過する経路として自装置を選択する(ステップS701)。そして、メッセージ応答部33eは、自装置を通過する経路制御識別子を、負荷分散装置20が参照できる領域に埋め込んだ応答メッセージを作成し(ステップS702)、負荷分散装置20に送信する(ステップS703)。
例えば、メッセージ応答部33eは、任意に文字列からなる経路制御識別子を生成し、図32に示したメッセージのプロトコルヘッダ領域(cookie)に埋め込む。具体的には、メッセージ応答部33eは、図38に示すように、図32のメッセージのプロトコルヘッダに経路制御識別子を埋め込んだメッセージを作成する。なお、図38の各領域については、図32と同様の情報が埋め込まれているため、ここでは詳細な説明は省略する。図38は、セッション確立後に経路制御識別子が埋め込まれたメッセージ例を示す図である。
その後、メッセージ応答部33eは、図38のパケットヘッダからコネクションを特定する情報として「送信元IPアドレス:ポート番号、宛先IPアドレス:ポート番号」を抽出する。続いて、メッセージ応答部33eは、抽出したコネクションを特定する情報をキーにして、コネクションテーブル32cを検索し、リクエスト送信時に格納したコネクションを特定する。そして、メッセージ応答部33eは、特定したコネクション情報を図38に示したメッセージのパケットヘッダに書き込む。さらに、メッセージ応答部33eは、書き換えたパケットヘッダの宛先IP(IP−CL)をキーにして、ARPテーブル3を検索し、負荷分散装置20のMACアドレス(MAC−SLB)を取得し、L2ヘッダの宛先MACアドレスをMAC−SLBに書き換える。メッセージ応答部33eは、生成した応答メッセージを負荷分散装置20に送信する。
このようにして作成されたメッセージは、例えば、図39に示すように、L2ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。L2ヘッダには、送信元MACアドレスである中継装置30のMACアドレスと、宛先MACアドレスである負荷分散装置20のMACアドレスとが記載される。パケットヘッダには、送信元IPアドレスとポート番号として中継装置30のIPアドレスとポート番号、宛先IPアドレスとポート番号としてクライアント装置10のIPアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載されている。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子およびセッションデータとが記載される。なお、図39は、セッション確立後に中継装置から負荷分散装置へ送信されるメッセージ例を示す図である。
(応答受信時の負荷分散装置動作)
次に、図40を用いて、応答受信時の負荷分散装置動作を示すフローチャートについて説明する。図40は、応答受信時の負荷分散装置動作を示すフローチャートである。
図40に示すように、負荷分散装置20の自律学習部23cは、中継装置30からリクエストメッセージを受信し、当該メッセージから「経路制御識別子」を抽出する(ステップS801)。例えば、自律学習部23cは、受信したリクエストメッセージのプロトコルヘッダのcookieから「経路制御識別子」を抽出する。
そして、自律学習部23cは、抽出した「経路制御識別子」に対応する転送ルールが存在するか否かを判定する(ステップS802)。例えば、自律学習部23cは、抽出された「経路制御識別子」をキーにして転送ルールテーブル22bを検索し、抽出された「経路制御識別子」に対応する転送ルールが存在するか否かを判定する。
抽出された「経路制御識別子」に対応する転送ルールが存在する場合(ステップS802肯定)、自律学習部23cは、新たに受信した転送ルールで既存の転送ルールを更新する(ステップS803)。そして、自律学習部23cは、中継装置30から受信した応答メッセージをクライアント装置10へ送信する(ステップS804)。
一方、抽出された「経路制御識別子」に対応する転送ルールが存在しない場合(ステップS802否定)、自律学習部23cは、受信した転送ルールを新たなエントリとして格納する(ステップS805)。そして、自律学習部23cは、中継装置30から受信した応答メッセージをクライアント装置10へ送信する(ステップS804)。
例えば、自律学習部23cは、図39に示したL2ヘッダとパケットヘッダのSource値を自装置の負荷分散装置20の値に書き換える。また、自律学習部23cは、クライアント装置のIPアドレスであるパケットヘッダのDistination値をキーにして、ARPテーブル2を検索し、クライアント装置10のMACアドレスを特定する。そして、自律学習部23cは、図39に示したL2ヘッダのDistination値をクライアント装置10のMACアドレスで書き換える。
このようにして作成されたメッセージは、例えば、図41に示すように、L2ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。L2ヘッダには、送信元MACアドレスである負荷分散装置20のMACアドレスと、宛先MACアドレスであるクライアント装置10のMACアドレスとが記載される。パケットヘッダには、送信元IPアドレスとポート番号として負荷分散装置20のIPアドレスとポート番号、宛先IPアドレスとポート番号としてクライアント装置10のIPアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子とが記載される。なお、図41は、セッション確立後に負荷分散装置からクライアント装置へ送信されるメッセージ例を示す図である。
(応答受信時のクライアント動作)
続いて、図42を用いて、応答受信時のクライアント動作を示すフローチャートについて説明する。図42は、応答受信時のクライアント動作を示すフローチャートである。
図42に示すように、クライアント装置10のアプリ実行部13aは、負荷分散装置20から受信した応答メッセージのプロトコルヘッダを参照して、経路制御識別子が含まれているか否かを判定する(ステップS901)。
そして、アプリ実行部13aは、経路制御識別子が含まれている場合(ステップS901肯定)、応答メッセージから経路制御識別子を取得し、cookieテーブル12aに格納する(ステップS902)。一方、アプリ実行部13aは、経路制御識別子が含まれていない場合(ステップS901否定)、ステップS902をスキップして、ステップS903を実行する。
さらに、アプリ実行部13aは、負荷分散装置20から受信した応答メッセージのメッセージコンテンツ部を参照して、セッション識別子が含まれているか否かを判定する(ステップS903)。
そして、アプリ実行部13aは、セッション識別子が含まれている場合(ステップS903肯定)、応答メッセージからセッション識別子を取得し、アプリセッション識別子テーブル12bに格納する(ステップS904)。一方、アプリ実行部13aは、セッション識別子が含まれていない場合(ステップS903否定)、処理を終了する。
(ルール設定時の中継装置動作)
続いて、図43を用いて、ルール設定時の中継装置動作を示すフローチャートについて説明する。図43は、ルール設定時の中継装置動作を示すフローチャートである。
図43に示すように、中継装置30の転送ルール格納部33dは、管理装置50からリクエストメッセージ(図36参照)を受信し、当該メッセージから「セッション識別子」を抽出する(ステップS1001)。例えば、転送ルール格納部33dは、受信したリクエストメッセージのメッセージコンテンツ部から「セッション識別子」を抽出する。
そして、転送ルール格納部33dは、抽出した「セッション識別子」に対応する転送ルールが存在するか否かを判定する(ステップS1002)。例えば、転送ルール格納部33dは、抽出された「セッション識別子」をキーにして転送ルールテーブル32aを検索し、抽出された「セッション識別子」に対応する転送ルールが存在するか否かを判定する。
抽出された「セッション識別子」に対応する転送ルールが存在する場合(ステップS1002肯定)、転送ルール格納部33dは、受信したメッセージに含まれる転送ルールで既存の転送ルールを更新する(ステップS1003)。そして、転送ルール格納部33dは、管理装置50に対して設定完了通知を送信する(ステップS1004)。
一方、抽出された「セッション識別子」に対応する転送ルールが存在しない場合(ステップS1002否定)、転送ルール格納部33dは、受信したメッセージに含まれる転送ルールを新たなエントリとして、転送ルールテーブル32aに格納する(ステップS1005)。そして、転送ルール格納部33dは、管理装置50に対して設定完了通知を送信する(ステップS1004)。
[実施例1による効果]
このように、実施例1によれば、転送ルールを設定する中継装置30は1台のみとなり、転送ルールを設定する回数が少ない。また、1台の中継装置30が設定時間だけが待機状態となるため、待機時間を大幅に削減できる。その結果、一意性を保証しつつ、クライアントへの応答性能の劣化を防止することが可能である。
また、実施例1によれば、並列化されたN台の中継装置30に一意性保証のための転送ルールを配布して一意性保証を実現する方式と比較して、設定配布先が1カ所になるため配布のための処理を1/Nに削減できる。この効果は、中継装置30の並列度Nが増すほど大きくなる。さらにシステムへの波及効果として、設定配布の負荷が1/Nとなったことで、ある処理性能を持つサーバで単位時間当たりにさばける設定処理がN倍になり、所望のシステム性能に対して必要な設定処理サーバ数の削減が期待できる。設定回数削減による効果として、クライアントへの応答時間も削減されることが期待できる。
ところで、実施例1では、負荷分散装置20が中継装置30から受信した情報に基づいて転送ルールを作成する例について説明したが、これに限定されるものではない。例えば、負荷分散装置20は、管理装置50から転送ルールを受信して格納するようにすることもできる。
そこで、実施例2では、負荷分散装置20が管理装置50から転送ルールを受信して格納する例について説明する。なお、実施例2では、実施例1と異なる機能を有する中継装置30の構成、管理装置50の構成、実施例2に係る処理シーケンスについて説明する。
(中継装置の構成)
図44に示すように、中継装置30は、通信制御I/F部31と、記憶部32と、制御部33とを有している。ここでは、実施例1とは異なる機能である経路制御識別子通知部33fについて説明し、その他の機能は実施例1と同様であるので、ここでは省略する。なお、図44は、実施例2に係る中継装置の構成を示すブロック図である。
経路制御識別子通知部33fは、メッセージ応答部33eによって作成された経路制御識別子を管理装置50に送信する。具体的には、経路制御識別子通知部33fは、メッセージ応答部33eによって作成された経路制御識別子と、自装置である中継装置30のIPアドレスとを対応付けて、管理装置50に送信する。
(管理装置の構成)
図45に示すように、管理装置50は、通信制御I/F部51と、記憶部52と、制御部53とを有している。ここでは、実施例1とは異なる機能である負荷分散装置用ルール配布部53dについて説明し、その他の機能は実施例1と同様であるので、ここでは省略する。なお、図45は、実施例2に係る管理装置の構成を示すブロック図である。
負荷分散装置用ルール配布部53dは、負荷分散装置20が使用する転送ルールを作成して配布する。具体的には、負荷分散装置用ルール配布部53dは、中継装置30の経路制御識別子通知部33fから送信された経路制御識別子と中継装置30のIPアドレスとを対応付けた転送ルールを作成し、負荷分散装置20に配布する。その後、負荷分散装置用ルール配布部53dは、設定が完了したことを負荷分散装置20から受信し、受信した中継装置30のIPアドレスに対して設定完了通知を送信する。
(処理シーケンス)
次に、図46を用いて、実施例2に係るシステムにおける処理シーケンスを説明する。図46は、実施例2に係るシステムにおける処理シーケンスを示す図である。
図46に示すように、ステップS1101〜ステップS1108までの処理は、実施例1で説明したステップS101〜ステップS108までの処理と同様であるので、ここでは省略する。
実施例1とは異なる点は、ステップS1110〜ステップS1115であり、具体的には、中継装置30の経路制御識別子通知部33fは、メッセージ応答部33eによって作成された経路制御識別子を管理装置50に送信する(ステップS1109)。
続いて、管理装置50の負荷分散装置用ルール配布部53dは、中継装置30の経路制御識別子通知部33fから送信された経路制御識別子と中継装置30のIPアドレスとを対応付けた転送ルールを作成する(ステップS1110)。そして、負荷分散装置用ルール配布部53dは、作成した転送ルールを負荷分散装置20に配布する(ステップS1111)。
負荷分散装置20は、管理装置50から受信した転送ルールを転送ルールテーブル22bに格納し、格納が終了したことを示す完了応答を管理装置50に送信する(ステップS1112)。管理装置50の負荷分散装置用ルール配布部53dは、負荷分散装置用の転送ルールの配布が完了したことを示す完了応答を中継装置30に送信する(ステップS1113)。
その後、中継装置30は、クライアント装置10から送信されたメッセージが通過する経路を識別する経路制御識別子を埋め込んだ応答メッセージを負荷分散装置20に送信する(ステップS1114)。負荷分散装置20は、受信したメッセージをクライアント装置10に送信する(ステップS1115)。
その後に実行されるステップS1116〜ステップS1118の処理は、実施例1で説明したステップS111〜ステップS113の処理と同様であるので、ここでは省略する。
[実施例2による効果]
このように、実施例2によれば、負荷分散装置20は、自律して転送ルールを作成する必要がないので、ボトルネックとなる可能性が高い負荷分散装置20の処理負荷を軽減することができ、クライアントへの応答時間も削減されることがより期待できる。
ところで、実施例1や2では、中継装置30が経路制御識別子を生成する例について説明したが、これに限定されるものではない。例えば、管理装置50が、メッセージの経路となる中継装置を特定して、経路制御識別子を生成することもできる。
そこで、実施例3では、管理装置50が、メッセージの経路となる中継装置を特定して、経路制御識別子を生成する例について説明する。なお、実施例3では、実施例1と異なる機能を有する中継装置30の構成、管理装置50の構成、実施例3に係る処理シーケンスについて説明する。
(中継装置の構成)
図47に示すように、中継装置30は、通信制御I/F部31と、記憶部32と、制御部33とを有している。ここでは、実施例1とは異なる機能であるセッション対応テーブル32dと、テーブル格納部33gとについて説明し、その他の機能は実施例1と同様であるので、ここでは省略する。なお、図47は、実施例3に係る中継装置の構成を示すブロック図である。
セッション対応テーブル32dは、管理装置50から送信されたセッション識別子と経路制御識別子とを対応付けて記憶する。例えば、セッション対応テーブル32dは、図48に示すように、「セッション識別子、経路制御識別子」として「S00001、K00001」や「S00002、Kaaaaa」などと記憶する。なお、図48は、セッション対応テーブル32dに記憶される情報の例を示す図である。
テーブル格納部33gは、管理装置50から受信したセッション識別子と経路制御識別子とを対応付けて、セッション対応テーブル32dに格納する。なお、メッセージ応答部33eは、実施例1とは異なり、サーバ装置40から応答メッセージを受信した場合に、当該応答メッセージからセッション識別子を抽出する。そして、メッセージ応答部33eは、抽出したセッション識別子に対応する経路制御識別子をセッション対応テーブル32dから取得し、応答メッセージに組み込んで、負荷分散装置20に送信する。
(管理装置の構成)
図49に示すように、管理装置50は、通信制御I/F部51と、記憶部52と、制御部53とを有している。ここでは、実施例1とは異なる機能である経路制御識別子生成部53eと、負荷分散装置用ルール配布部53fとについて説明し、その他の機能は実施例1と同様であるので、ここでは省略する。なお、図49は、実施例3に係る管理装置の構成を示すブロック図である。
経路制御識別子生成部53eは、例えば、ラウンドロビンなどの自律振分アルゴリズムなどに従って、メッセージの振分先となる中継装置30を特定し、特定した中継装置30を特定するための経路制御識別子を生成する。そして、経路制御識別子生成部53eは、生成した経路制御識別子と、サーバ装置40から受信したセッション識別子とを対応付けて、特定した中継装置30に送信する。なお、自律振分アルゴリズムを用いなくても、例えば、サーバ装置40にメッセージを振分けた中継装置を振分先と決定してもよい。この場合、振り分けられたサーバ装置から中継装置の情報を取得すればよい。その他の場合は、中継装置のホスト名とIPアドレスとを対応付けて記憶しておけばよい。
負荷分散装置用ルール配布部53fは、負荷分散装置20が使用する転送ルールを作成して配布する。具体的には、負荷分散装置用ルール配布部53fは、経路制御識別子生成部53eによって生成された経路制御識別子と、経路制御識別子生成部53eによって特定された中継装置30のホスト名から特定したIPアドレスとを対応付けた転送ルールを作成する。そして、負荷分散装置用ルール配布部53fは、生成した転送ルールを負荷分散装置20に配布する。その後、負荷分散装置用ルール配布部53fは、設定が完了したことを負荷分散装置20から受信し、受信した中継装置30のIPアドレスに対して設定完了通知を送信する。
(処理シーケンス)
次に、図50を用いて、実施例3に係るシステムにおける処理シーケンスを説明する。図50は、実施例3に係るシステムにおける処理シーケンスを示す図である。
図50に示すように、ステップS1201〜ステップS1206までの処理は、実施例1で説明したステップS101〜ステップS106までの処理と同様であるので、ここでは省略する。
実施例1とは異なる点は、ステップS1207〜ステップS1216であり、具体的には、管理装置50の経路制御識別子生成部53eは、所定の条件に基づいて、メッセージの振分先となる中継装置30を特定する(ステップS1207)。続いて、経路制御識別子生成部53eは、特定した中継装置30を特定するための経路制御識別子を生成する(ステップS1208)。
そして、経路制御識別子生成部53eは、生成した経路制御識別子と、サーバ装置40から受信したセッション識別子とを対応付けて、特定した中継装置30に送信する(ステップS1209)。
その後、サーバ装置40のセッション情報通知部43aは、受信したリクエストメッセージの応答メッセージのメッセージコンテンツ部にセッション識別子を埋め込んで、受信した中継装置30のIPアドレスに送信する(ステップS1210)。
中継装置30のメッセージ応答部33eは、応答メッセージから抽出したセッション識別子に対応する経路制御識別子をセッション対応テーブル32dから取得し、応答メッセージに組み込んで、負荷分散装置20に送信する(ステップS1211)。
一方で、管理装置50の負荷分散装置用ルール配布部53fは、路制御識別子と、経路制御識別子生成部53eによって特定された中継装置30のIPアドレスとを対応付けた転送ルールを作成する(ステップS1212)。そして、負荷分散装置用ルール配布部53fは、生成した転送ルールを負荷分散装置20に配布する(ステップS1213)。
負荷分散装置20は、管理装置50から受信した転送ルールを転送ルールテーブル22bに格納し、格納が終了したことを示す完了応答を管理装置50に送信する(ステップS1214)。また、負荷分散装置20は、ステップS1211で受信したメッセージをクライアント装置10に送信する(ステップS1215)。
そして、管理装置50は、中継装置30が転送ルールを格納したことを示す完了応答や負荷分散装置用の転送ルールの配布が完了したことを示す完了応答をサーバ装置40に送信する(ステップS1216)。
その後に実行されるステップS1217〜ステップS1219の処理は、実施例1で説明したステップS111〜ステップS113の処理と同様であるので、ここでは省略する。
[実施例3による効果]
このように、実施例3によれば、負荷分散装置20は、自律して転送ルールを作成する必要がないので、ボトルネックとなる可能性が高い負荷分散装置20の処理負荷を軽減することができる。さらに、中継装置も転送ルールや経路制御識別子等を作成する必要がない。したがって、実施例1や2と比較しても、クライアントへの応答時間も削減されることがより期待できる。
さて、これまで様々な実施例について説明したが、上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、異なる実施例を説明する。
(経路制御識別子)
例えば、実施例1〜3では、任意に文字列からなる経路制御識別子を生成して利用する例について説明したが、これに限定されるものではない。例えば、中継装置のIPアドレスやURL、MACアドレスなど中継装置のネットワーク情報そのものを経路制御識別子として利用することもできる。
(中継装置の情報)
また、例えば、実施例1〜3では、経路制御識別子と対応付けなどする中継装置の情報としてIPアドレスを用いたが、これに限定されるものではなく、例えば、URL+名前解決などを用いることもできる。
(システム構成等)
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
(プログラム)
なお、本実施例で説明した負荷分散方法、メッセージ中継方法、転送ルール管理方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
10 クライアント装置
11 通信制御I/F部
12 記憶部
12a Cookieテーブル
12b アプリセッション識別子テーブル
13 制御部
13a アプリ実行部
20 負荷分散装置
21 通信制御I/F部
22 記憶部
22a 中継装置リストテーブル
22b 転送ルールテーブル
23 制御部
23a メッセージ識別部
23b 負荷分散機能部
23c 自律学習部
30 中継措置
31 通信制御I/F部
32 記憶部
32a 転送ルールテーブル
32b サーバリストテーブル
32c コネクションテーブル
32d セッション対応テーブル
33 制御部
33a メッセージ判定部
33b 第一振分部
33c 第二振分部
33d 転送ルール格納部
33e メッセージ応答部
33f 経路制御識別子通知部
33g テーブル格納部
40 サーバ装置
41 通信制御I/F部
42 記憶部
42a セッションテーブル
43 制御部
43a セッション情報通知部
43b アプリ提供部
50 管理装置
51 通信制御I/F部
52 記憶部
52a 転送ルールテーブル
53 制御部
53a セッション情報受信部
53b ルール作成部
53c ルール配布部
53d 負荷分散装置用ルール配布部
53e 経路制御識別子生成部
53f 負荷分散装置用ルール配布部

Claims (7)

  1. クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子と、前記経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶するルール記憶部と、
    前記クライアント装置からメッセージを受信した場合に、当該メッセージに経路制御識別子が含まれているか否かを判定する識別子判定部と、
    前記識別子判定部によって経路制御識別子が含まれていると判定された場合に、当該経路制御識別子と対応付けられた中継装置情報を前記ルール記憶部に記憶される負荷分散装置用転送ルールから特定し、特定した中継装置情報によって特定される中継装置に前記メッセージを振分ける第一振分部と、
    前記識別子判定部によって経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置に前記メッセージを振分ける第二振分部と
    を有することを特徴とする負荷分散装置。
  2. 前記第二振分部によってメッセージが振分けられた後に、前記メッセージの応答として前記経路制御識別子を含んだ応答メッセージを中継装置から受信する応答受信部と、
    前記応答受信部によって受信された応答メッセージを前記クライアント装置に転送するとともに、前記応答メッセージに含まれる経路制御識別子と、当該応答メッセージから取得した中継装置情報とを対応付けた負荷分散装置用転送ルールを生成して、前記ルール記憶部に格納するルール学習部とをさらに有することを特徴とする請求項1に記載の負荷分散装置。
  3. 前記ルール学習部は、前記クライアント装置から送信されたメッセージが中継装置を介して振分けられるサーバ装置とクライアント装置との間のセッションを識別するセッション識別子と、前記メッセージが振り分けられたサーバ装置を特定するサーバ情報とを対応付けた中継装置用転送ルールを作成する管理装置から、前記負荷分散装置用転送ルールを受信して前記ルール記憶部に格納することを特徴とする請求項1に記載の負荷分散装置。
  4. 前記ルール学習部は、前記管理装置が前記中継装置から受信した経路制御識別子と当該中継装置を特定する中継装置情報とを用いて作成した負荷分散装置用転送ルールを、前記管理装置から受信して前記ルール記憶部に格納することを特徴とする請求項3に記載の負荷分散装置。
  5. 前記ルール学習部は、前記管理装置が所定の条件に従って特定した中継装置を特定する中継装置情報と当該中継装置を介する経路を特定する経路制御識別子とを用いて作成した負荷分散装置用転送ルールを、前記管理装置から受信して前記ルール記憶部に格納することを特徴とする請求項3に記載の負荷分散装置。
  6. クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子が、クライアント装置から受信されたメッセージに含まれているか否かを判定する識別子判定ステップと、
    前記識別子判定ステップによって経路制御識別子が含まれていると判定された場合に、前記経路制御識別子と前記経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶するルール記憶部から、前記経路制御識別子と対応付けられた中継装置情報を特定し、特定した中継装置情報によって特定される中継装置に前記メッセージを振分ける第一振分ステップと、
    前記識別子判定ステップによって経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置に前記メッセージを振分ける第二振分ステップと
    を含んだことを特徴とする負荷分散方法。
  7. クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子が、クライアント装置から受信されたメッセージに含まれているか否かを判定する識別子判定手順と、
    前記識別子判定手順によって経路制御識別子が含まれていると判定された場合に、前記経路制御識別子と前記経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶するルール記憶部から、前記経路制御識別子と対応付けられた中継装置情報を特定し、特定した中継装置情報によって特定される中継装置に前記メッセージを振分ける第一振分手順と、
    前記識別子判定手順によって経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置に前記メッセージを振分ける第二振分手順と
    をコンピュータに実行させることを特徴とする負荷分散プログラム。
JP2009186699A 2009-08-11 2009-08-11 負荷分散装置、負荷分散方法および負荷分散プログラム Expired - Fee Related JP5338555B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009186699A JP5338555B2 (ja) 2009-08-11 2009-08-11 負荷分散装置、負荷分散方法および負荷分散プログラム
US12/853,330 US8892768B2 (en) 2009-08-11 2010-08-10 Load balancing apparatus and load balancing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009186699A JP5338555B2 (ja) 2009-08-11 2009-08-11 負荷分散装置、負荷分散方法および負荷分散プログラム

Publications (2)

Publication Number Publication Date
JP2011041006A true JP2011041006A (ja) 2011-02-24
JP5338555B2 JP5338555B2 (ja) 2013-11-13

Family

ID=43589254

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009186699A Expired - Fee Related JP5338555B2 (ja) 2009-08-11 2009-08-11 負荷分散装置、負荷分散方法および負荷分散プログラム

Country Status (2)

Country Link
US (1) US8892768B2 (ja)
JP (1) JP5338555B2 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012222402A (ja) * 2011-04-04 2012-11-12 Fujitsu Ltd 中継装置、中継プログラム、及び中継方法
JP2012242994A (ja) * 2011-05-18 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> トランザクション処理システム、トランザクション処理方法、および、トランザクション処理プログラム
JP2013130960A (ja) * 2011-12-20 2013-07-04 Fujitsu Ltd 情報処理装置、データ制御方法およびデータ制御プログラム
WO2013147175A1 (ja) 2012-03-30 2013-10-03 日本電気株式会社 分散ストレージシステム、制御装置、クライアント端末、負荷分散方法及びプログラム
JP2014504484A (ja) * 2010-12-17 2014-02-20 マイクロソフト コーポレーション ロードバランサーコンポーネント間の状態の同期
JP2014165743A (ja) * 2013-02-26 2014-09-08 Nippon Telegr & Teleph Corp <Ntt> 振分けサーバおよびそのプログラム
JP2015207256A (ja) * 2014-04-23 2015-11-19 日本電信電話株式会社 分散処理システム、分散データ管理装置および分散データ管理方法
US9667739B2 (en) 2011-02-07 2017-05-30 Microsoft Technology Licensing, Llc Proxy-based cache content distribution and affinity
US9826033B2 (en) 2012-10-16 2017-11-21 Microsoft Technology Licensing, Llc Load balancer bypass
JP2018516511A (ja) * 2015-06-01 2018-06-21 アルカテル−ルーセント 1つまたは複数の優先自動構成サーバとの間で優先トラフィックを転送するための負荷分散サーバ
WO2024004078A1 (ja) * 2022-06-29 2024-01-04 日本電信電話株式会社 負荷分散装置、負荷分散システム、負荷分散方法、および、負荷分散プログラム

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9654601B2 (en) 2011-03-14 2017-05-16 Verizon Digital Media Services Inc. Network connection hand-off and hand-back
US8688817B2 (en) * 2011-03-14 2014-04-01 Edgecast Networks, Inc. Network connection hand-off using state transformations
EP2723016A4 (en) * 2011-06-17 2015-04-29 Nec Corp COMMUNICATION CONTROL DEVICE, COMMUNICATION CONTROL METHOD, AND PROGRAM
JP5831314B2 (ja) * 2012-03-16 2015-12-09 富士通株式会社 通信中継装置、通信中継システム、通信中継装置制御方法及び通信中継プログラム
US9342558B2 (en) 2013-01-31 2016-05-17 Red Hat, Inc. Systems, methods, and computer program products for selecting a machine to process a client request
US20150067033A1 (en) * 2013-09-05 2015-03-05 Cisco Technology, Inc Relay Server Load Balancing and Placement using In-Band Signaling
JP6298711B2 (ja) * 2014-05-19 2018-03-20 株式会社日立製作所 分散処理システム
US10757024B2 (en) 2014-12-24 2020-08-25 Ntt Communications Corporation Load distribution apparatus, load distribution method and program
JP6227841B1 (ja) * 2016-02-17 2017-11-08 株式会社日立製作所 データ処理システム及びデータ処理方法
EP3404886A1 (en) * 2017-05-15 2018-11-21 IMEC vzw Network stack for a plurality of physical communication interfaces
CN108259453B (zh) * 2017-05-31 2020-03-06 新华三技术有限公司 一种报文转发方法及装置
CN108259633B (zh) 2017-05-31 2020-05-12 新华三技术有限公司 实现管理报文三层通信的方法、系统及装置
US10645174B2 (en) * 2017-12-07 2020-05-05 Sage Intacct, Inc. Enabling multiple sessions in a single browser
CN111722920A (zh) * 2019-03-22 2020-09-29 鼎捷软件股份有限公司 负载控制方法
TWI702540B (zh) * 2019-03-22 2020-08-21 鼎新電腦股份有限公司 負載控制方法
JP2022127333A (ja) * 2021-02-19 2022-08-31 株式会社リコー 負荷分散システム、負荷分散方法、及びプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005057487A (ja) * 2003-08-04 2005-03-03 Nippon Telegr & Teleph Corp <Ntt> 複数経路を選択する経路制御装置、経路選択方法およびそのプログラムと記録媒体
JP2006174374A (ja) * 2004-12-20 2006-06-29 Fujitsu Ltd 中継システム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7155515B1 (en) * 2001-02-06 2006-12-26 Microsoft Corporation Distributed load balancing for single entry-point systems
US20040210663A1 (en) * 2003-04-15 2004-10-21 Paul Phillips Object-aware transport-layer network processing engine
JP2007219608A (ja) * 2006-02-14 2007-08-30 Fujitsu Ltd 負荷分散処理プログラム及び負荷分散装置
JP4952125B2 (ja) 2006-08-04 2012-06-13 富士通株式会社 負荷分散装置
US20080080517A1 (en) * 2006-09-28 2008-04-03 At & T Corp. System and method for forwarding traffic data in an MPLS VPN
US20080247678A1 (en) * 2007-04-09 2008-10-09 Sharp Kabushiki Kaisha Image processing apparatus
JP2008259114A (ja) 2007-04-09 2008-10-23 Sharp Corp 画像処理装置
WO2009061973A1 (en) * 2007-11-09 2009-05-14 Blade Network Technologies, Inc. Session-less load balancing of client traffic across servers in a server group
US7979565B2 (en) * 2008-08-27 2011-07-12 International Business Machines Corporation System and method to provide a network service

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005057487A (ja) * 2003-08-04 2005-03-03 Nippon Telegr & Teleph Corp <Ntt> 複数経路を選択する経路制御装置、経路選択方法およびそのプログラムと記録媒体
JP2006174374A (ja) * 2004-12-20 2006-06-29 Fujitsu Ltd 中継システム

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9438520B2 (en) 2010-12-17 2016-09-06 Microsoft Technology Licensing, Llc Synchronizing state among load balancer components
JP2014504484A (ja) * 2010-12-17 2014-02-20 マイクロソフト コーポレーション ロードバランサーコンポーネント間の状態の同期
US9667739B2 (en) 2011-02-07 2017-05-30 Microsoft Technology Licensing, Llc Proxy-based cache content distribution and affinity
JP2012222402A (ja) * 2011-04-04 2012-11-12 Fujitsu Ltd 中継装置、中継プログラム、及び中継方法
JP2012242994A (ja) * 2011-05-18 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> トランザクション処理システム、トランザクション処理方法、および、トランザクション処理プログラム
JP2013130960A (ja) * 2011-12-20 2013-07-04 Fujitsu Ltd 情報処理装置、データ制御方法およびデータ制御プログラム
US9787585B2 (en) 2012-03-30 2017-10-10 Nec Corporation Distributed storage system, control apparatus, client terminal, load balancing method and program
WO2013147175A1 (ja) 2012-03-30 2013-10-03 日本電気株式会社 分散ストレージシステム、制御装置、クライアント端末、負荷分散方法及びプログラム
US9826033B2 (en) 2012-10-16 2017-11-21 Microsoft Technology Licensing, Llc Load balancer bypass
JP2014165743A (ja) * 2013-02-26 2014-09-08 Nippon Telegr & Teleph Corp <Ntt> 振分けサーバおよびそのプログラム
JP2015207256A (ja) * 2014-04-23 2015-11-19 日本電信電話株式会社 分散処理システム、分散データ管理装置および分散データ管理方法
JP2018516511A (ja) * 2015-06-01 2018-06-21 アルカテル−ルーセント 1つまたは複数の優先自動構成サーバとの間で優先トラフィックを転送するための負荷分散サーバ
WO2024004078A1 (ja) * 2022-06-29 2024-01-04 日本電信電話株式会社 負荷分散装置、負荷分散システム、負荷分散方法、および、負荷分散プログラム

Also Published As

Publication number Publication date
JP5338555B2 (ja) 2013-11-13
US8892768B2 (en) 2014-11-18
US20110040892A1 (en) 2011-02-17

Similar Documents

Publication Publication Date Title
JP5338555B2 (ja) 負荷分散装置、負荷分散方法および負荷分散プログラム
CN101370035B (zh) 用于动态客户端/服务器网络管理的方法以及系统
US7509424B2 (en) Load-balancing device and computer-readable recording medium in which load-balancing program is recorded
US7860975B2 (en) System and method for secure sticky routing of requests within a server farm
EP3503505B1 (en) Sandbox environment for testing integration between a content provider origin and a content delivery network
EP2495940A1 (en) Collaboration between an internet service provider (ISP) and a content distribution system as well as among plural ISP
JP4163697B2 (ja) 負荷分散システム、実サーバ及び負荷分散方法
Xie et al. Supporting seamless virtual machine migration via named data networking in cloud data center
CN110995656B (zh) 负载均衡方法、装置、设备及存储介质
KR20110036573A (ko) 서버 애플리케이션 프로그램으로 ip 네트워크를 통한 엑세스를 제공하는 방법
US9697173B2 (en) DNS proxy service for multi-core platforms
WO2016133066A1 (ja) 名前特定装置、名前特定方法、及び記録媒体
JP5526015B2 (ja) ゲートウェイシステム、ゲートウェイ装置、負荷分散方法
JP5154313B2 (ja) Sipメッセージ振分方法およびsipメッセージ振分装置
JP6092874B2 (ja) 負荷分散装置、情報処理システム、方法およびプログラム
JP2007219637A (ja) 負荷分散システムおよびそのプログラム
JP6540063B2 (ja) 通信情報制御装置、中継システム、通信情報制御方法、および、通信情報制御プログラム
JP5109901B2 (ja) セッションデータ共有方法
CN106941527B (zh) 一种数据传输中转方法及其系统
JP4432626B2 (ja) マルチキャストツリー構築システム及び方法、ネットワークノード装置並びにサーバ装置
JP5017391B2 (ja) 加入者収容変更方法、移行先セッション制御サーバ装置および管理サーバ
JP2009070172A (ja) コンテンツ分散保存システム、提供元サーバ装置登録方法、ノード装置、及びノード処理プログラム
US7228562B2 (en) Stream server apparatus, program, and NAS device
JP5287199B2 (ja) 通信装置用の通信規則適用方法および装置並びに通信装置
JP2011223414A (ja) 再送判定装置、再送判定方法、再送判定プログラム、及び再送判定システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130424

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130722

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