説明

負荷分散システム

【課題】
クライアントとサーバとの間に中継装置が存在する通信システムにおいて,クライアントが取得するコンテンツのリンク情報を書き換えて広域負荷分散を実現する。
【解決手段】
クライアントがコンテンツ取得を要求したサーバからの応答に,中継装置が修正プログラムの取得先を示す算譜位置を付加し,クライアントに応答する。なお,算譜位置は応答元サーバと中継装置を識別するタグをパラメータとして含む。クライアントは,中継装置を経由した前記サーバからの応答を受信すると,前記算譜位置が示す宛先(管理サーバ)に,前記パラメータを含む修正プログラム取得要求を送信する。管理サーバは該要求を受信すると,該要求が含む前記パラメータに基づいて,コンテンツのリンクを書き換える修正プログラムを生成し,クライアントに応答する。クライアントは取得した修正プログラムに基づき,コンテンツのリンク先を書き換える。

【発明の詳細な説明】
【技術分野】
【0001】
開示される主題は,クライアントからネットワーク経由で要求されたコンテンツを要求元に配信するシステムにおける負荷分散方法及び同システムに関する。
【背景技術】
【0002】
近年,クライアントからネットワーク経由で要求されたコンテンツを配信するWebシステム等のサーバにおいて,スマートフォンやリッチコンテンツの普及により通信量が増大し,単一のサーバで要求を処理することが困難になっている。また,災害発生時にもサービスを継続可能にするため,地理的に離れた複数台のサーバでサービスを提供することが望まれる。
【0003】
これらの課題を解決するため,インターネットなどのネットワーク上における広域負荷分散の技術が存在する。従来,広域負荷分散の技術としてDNSサーバを利用して実現するDNSラウンドロビンが知られている(例えば特許文献1参照)。DNSラウンドロビンにおいては,サーバのホスト名に対して複数のIPアドレスをDNSサーバに登録し,クライアントは複数のIPアドレスから宛先とするIPアドレスをラウンドロビンにより決定する。
【0004】
しかし,DNSラウンドロビンでは,サーバの負荷状況を考慮しない,また,クライアントがDNS応答の内容をキャッシュするためサーバ構成を変更した場合に負荷分散への反映が遅い,といった課題が存在する。
【0005】
DNSラウンドロビンの課題を解決する広域負荷分散技術としては,Webシステムにおいてクライアントに返信するHTML(Hyper Text Markup Language)ファイル中のリンク情報を書き換えることで,所望のWebサーバの負荷を低減させる方法も考えられる(例えば特許文献2参照)。
【0006】
例えば,クライアントがWebサーバAにHTMLファイルの取得要求を行うと,WebサーバAはクライアント端末に返信するHTMLファイル中に記述されたコンテンツのリンク情報を他のWebサーバBに書き換えてから,このHTMLファイルをクライアントに返信する。クライアントは取得したコンテンツのリンクを経由して新たなコンテンツを取得する際,書き換えられたリンク情報を参照するため,WebサーバB宛てに要求を送信する。このように,クライアントに応答するコンテンツが含むリンク情報をWebサーバが書き換えることで,WebサーバAへの接続回数が減り,WebサーバAの負荷を低減することが可能になる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2004−260332号公報(段落[0013])
【特許文献2】特開2009−237835号公報(段落[0009],及び,図5)
【特許文献3】米国特許出願公開第2009/0300103号明細書
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで図2に示すように,Webシステムなどを提供する一般的なデータセンターなどでは,セキュリティや運用管理の観点から,クライアントからの要求をサーバに中継する中継装置(リバースプロクシ等)をクライアントとサーバとの間に設置し,各サーバにはプライベートIPアドレスを割り当て,中継装置が複数の仮想IPアドレスでクライアントからの要求を受信してサーバに要求を中継する。
【0009】
そのため,上記リンク情報を書き換える方式では,サーバA宛てであるリンク情報をサーバA´宛てに書き換えようとしても,サーバA´宛てに中継される中継装置の仮想IPアドレスがわからないため,サーバにおけるリンク情報書き換え方式による負荷分散を適用することは困難である。
【0010】
また,サーバによるリンク情報書き換えには,サーバに独自の機能が必要となるため,既存のWebシステムへ適用することは難しい。
【課題を解決するための手段】
【0011】
本明細書では,上記問題点にかんがみた,既存システムに容易に適用可能な,中継装置がサーバの前段に存在する構成においてリンク情報書き換えによる負荷分散方法,および,負荷分散システムが開示される。
【0012】
開示される通信システムは,コンテンツを提供するコンテンツサーバとクライアントと中継装置がネットワークを介して接続されるシステムにおいて,新たに,中継装置の仮想IPアドレスの情報と,中継装置に接続されるサーバの負荷情報を,中継装置と通信して定期的に取得し,記憶する管理サーバを備えることを一つの特徴とする。
【0013】
中継装置は,クライアントの要求に対するコンテンツサーバからの応答コンテンツを受信すると,該応答コンテンツに含まれるリンク情報を書き換えるための修正プログラムの取得先を示す算譜(コンピュータに対する処理命令の記述。プログラムと同意)位置を,該応答コンテンツに付加し,要求元クライアントに送信する。なお,該算譜位置は,応答元サーバと中継装置を識別するタグをパラメータとして含む。
【0014】
クライアントは,中継装置を経由した前記サーバからの応答コンテンツを受信すると,応答コンテンツに付加された算譜位置が示す宛先(管理サーバ)宛てに,前記パラメータを含む修正プログラム取得要求を送信する。
【0015】
管理サーバは該修正プログラム要求を受信すると,該修正プログラム要求が含む前記パラメータと,管理サーバが記憶する中継装置の仮想IPアドレスの情報と,サーバの負荷情報とに基づいて,応答コンテンツに含まれるリンク情報を書き換える修正プログラムを生成し,クライアントに応答する。
【0016】
クライアントは取得した修正プログラムに基づき,応答コンテンツに含まれるリンク情報を書き換える。
【発明の効果】
【0017】
開示に基づき,サーバの前段に中継装置を備えるシステム構成の場合でも,サーバに独自機能を追加することなく,サーバの負荷状況に応じた負荷分散を実現できる。
【図面の簡単な説明】
【0018】
【図1】実施例1の通信システムの一構成例である。
【図2】クライアント,中継装置,サーバの接続形態の構成図の一例である。
【図3】クライアント,中継装置,サーバ,管理サーバとして使用する情報処理装置の構成図の一例である。
【図4】管理サーバが記憶する中継装置VIP情報と,中継装置付加情報の構成図の一例である。
【図5】中継装置が記憶する,識別子情報と,サーバ付加情報と,VIP情報の構成図の一例である。
【図6】サーバと中継装置とクライアントと間で通信するコンテンツ要求とコンテンツ応答の構成図の一例である。
【図7】クライアントと管理サーバ間で通信する算譜要求と算譜応答の構成図の一例である。
【図8】管理サーバと中継装置との間で通信する負荷情報要求,負荷情報応答の構成図の一例である。
【図9】管理サーバと中継装置との間で通信するVIP情報要求,VIP情報応答の構成図の一例である。
【図10】実施例1の通信システムにおいて,クライアントが,サーバからコンテンツを取得し,コンテンツのリンク情報を書き換える通信シーケンスの一例である。
【図11】管理サーバが中継装置から負荷情報を取得する通信シーケンスの一例である。
【図12】管理サーバが中継装置からVIP情報を取得する通信シーケンスの一例である。
【図13】中継装置の算譜位置付加機能御が応答コンテンツに算譜を付加するフローチャートの一例である。
【図14】管理サーバの算譜応答機能がプログラムを生成するフローチャートの一例である。
【図15】クライアントが管理サーバから取得したプログラムに従いリンク情報を書き換えるフローチャートの一例である。
【図16】実施例2の通信システムの一構成例である。
【図17】実施例3の通信システムの一構成例である。
【図18】実施例4の通信システムの一構成例である。
【図19】実施例5の通信システムの一構成例である。
【図20】実施例2において,管理サーバの算譜応答機能がプログラムを生成するフローチャートの一例である。
【図21】実施例5において,中継装置がクライアントに送信するコンテンツの一例である。
【発明を実施するための形態】
【0019】
以下,図面を参照して,実施の形態を説明する。
【0020】
なお,以下の各実施例ではクライアントがサーバからコンテンツを取得するプロトコルとしてHTTP(Hyper Text Transfer Protocol)を使用する場合について説明するが,その他のプロトコルであってもよい。
【0021】
さらに,以下の各実施例では,各機能を,物理的に異なるコンテンツサーバと中継装置と管理サーバが備える場合について説明するが,各機能を,同じ一つの装置が備えてもよい。
【実施例1】
【0022】
図3は後述する本実施形態のクライアント100,中継装置200,管理サーバ400を実現する電子計算機の物理構成を示した図である。本実施形態の電子計算機は,プログラムを実行し,以下の各処理機能を実現するプロセッサH201と,実行するプログラムやデータを一時的に保持するメモリ装置H202と,外部からの指示や情報を入力するための入力装置H203と,プログラムの実体,指示,情報等を格納し,データの記憶手段として使用されるディスク装置H204と,外部装置とのデータのやり取りを制御する通信制御装置H205と,装置内部でデータのやり取りをおこなうためのバスなどの内部通信線H206と,電子計算機の内部と外部装置とのデータのやり取りするための外部通信回線H207を備える。
【0023】
上記プログラムは予め,電子計算機内のメモリ装置H202またはディスク装置H204に格納されていても良いし,必要なときに,上記電子計算機が利用可能な,着脱可能な記憶媒体から,または通信媒体(ネットワーク,または,ネットワークを伝播する搬送波またはデジタル信号)を介して他の装置から,導入されてもよい。
【0024】
また,以下の各処理機能の処理内容は,ディスク装置H204に格納されているプログラムを,プロセッサH201が読み出して実行することにより,具現化されるものである
図1に示すように,本実施形態の通信システムは,ネットワークを介して接続される,中継装置200とコンテンツを提供する1台以上のコンテンツサーバ(単にサーバという)300〜300−Mを含んで構成されるサーバシステム500と,サーバシステム500からコンテンツを取得するクライアント100と,管理サーバ400とを含んで構成される。サーバシステム500は複数存在し(〜500−N),全てのサーバシステムはサーバシステム500と同様にネットワークを介してクライアント100と管理サーバ400と接続される。クライアント100は複数台存在しても良い。クライアント100と管理サーバ400とサーバシステム500との間にはルーターなど一般的な通信中継装置が存在しても良い。
【0025】
クライアント100は,例えば,コンテンツ要求機能101と算譜実行機能102と算譜要求機能103を備えるWebブラウザとして動作する。
【0026】
コンテンツ要求機能101は,コンテンツ要求10−1を送信し,応答コンテンツ20−2を受信する。コンテンツを取得する通信プロトコルには例えばHTTP,コンテンツとしては例えばHTMLファイルが考えられる。
【0027】
算譜実行機能102は後述の算譜要求機能103が取得した修正プログラムを実行し,サーバ300から取得した応答コンテンツが含む,他のコンテンツへのリンク情報を書き換える。
【0028】
算譜要求機能103は,コンテンツ要求機能101が取得した応答コンテンツから,中継装置200の算譜位置付加機能202が応答コンテンツ20−2に付加した算譜位置を取得し,該算譜位置が示す宛先(例えば管理サーバ400)宛てに,算譜要求30を送信し,応答される算譜応答40を受信する。
【0029】
中継装置200は,通信中継機能201と,算譜位置付加機能202と,サーバ負荷監視機能203と,負荷情報通信機能204と,VIP情報通信機能205と,識別子情報D30と,サーバ負荷情報D40と,VIP情報D50を備える。
【0030】
通信中継機能201は,中継装置200が備える仮想IPアドレスにてクライアント100からコンテンツ要求10−1を受信し,受信した仮想IPアドレスに基づいて要求10−1を転送するサーバを決定する。転送先のサーバを決定後,通信中継機能201は該サーバを宛先としてコンテンツ要求10−2を送信する(以下,本実施例ではサーバ300を転送先サーバとする)。
【0031】
仮想IPアドレスと転送先とするサーバの組はVIP(Virtual IP address)情報D50として事前に設定する。仮想IPアドレスにより要求を受信し,転送先サーバを決定する技術は公知である。
【0032】
また,通信中継機能201は,サーバ300からの応答コンテンツ20−1を受信し,中継装置200の算譜位置付加機能202が応答コンテンツ20−1を基に作成する応答コンテンツ20−2を,コンテンツ要求元クライアント100に送信する。
【0033】
算譜位置付加機能202は,通信中継機能201がサーバ300から受信した応答コンテンツ20−1に対して,該コンテンツが含むリンク情報を書き換えるための修正プログラムの取得先(例えば管理サーバ400のURL)を含む算譜位置を付加して,応答コンテンツ20−2を生成する。算譜位置はパラメータとして中継装置200とサーバ300とを識別できる中継装置識別子とサーバ識別子を含む。なお,修正プログラムの取得先は事前に設定し,記憶する。
【0034】
サーバ負荷監視機能203は,中継装置200に接続されるサーバ300〜300−Mの負荷情報を定期的に取得し,サーバ負荷情報D30に記憶する。負荷情報D30は,サーバの識別子に加え,例えばサーバが応答するコンテンツの平均応答時間や,サーバの確立済みTCPコネクション数などを含む。サーバの平均応答時間や確立済みTCPコネクション数を取得する技術は公知である。
【0035】
負荷情報通信機能204は,サーバ負荷監視機能204が記憶したサーバ負荷情報D40の情報を負荷情報応答50として管理サーバ400へ,ネットワークを介して定期的に送信する。負荷情報応答50の送信において,負荷情報応答50は例えばXML(Extensible Markup Language)で記述し,HTTPなどのプロトコルにより通信する。
【0036】
負荷情報応答50を送信する通信は,中継装置200から開始しても良いし,管理サーバ400から開始しても良い。
【0037】
VIP情報通信機能205は,中継装置200が備えるVIP情報D50の情報をVIP情報応答60として管理サーバ400へ,ネットワークを介して送信する。VIP情報応答60の送信において,IPアドレスとポート番号は例えばXMLで記述し,HTTPなどのプロトコルにより通信する。VIP情報応答60の送信は,外部操作によりVIP情報に変更が発生した際に実行しても良いし,定期的に実行しても良い。VIP情報応答60を送信する通信は,中継装置200から開始しても良いし,管理サーバ400から開始しても良い。
【0038】
サーバ300は,例えば,コンテンツ応答機能301を備えるWebサーバとして動作する。
【0039】
コンテンツ応答機能301は,コンテンツ要求10−2を受信して,対応するコンテンツ20−1を応答する。
【0040】
サーバ300は一般的なWebサーバなどであり,サーバ300を構成する機能は,全て公知の技術である。
【0041】
管理サーバ400は,算譜応答機能401と,負荷情報取得機能402と,VIP情報取得機能403を備える。
【0042】
算譜応答機能401は,クライアント100から算譜要求30を受信すると,算譜要求30がパラメータとして含む中継装置識別子A3とサーバ識別子A4と,管理サーバ400が記憶する中継装置VIP情報D10と中継装置負荷情報D20,とに基づいて,コンテンツのリンク情報を書き換える修正プログラムを生成し,算譜応答40として応答する。
【0043】
負荷情報取得機能402は,中継装置200の負荷情報通信機能204から負荷情報応答50を受信し,該負荷情報応答50を基にサーバ毎の負荷指数を計算し,中継装置負荷情報D20に記憶,更新する。負荷指数は,例えば負荷情報応答50がサーバの平均応答時間と確立済みTCPコネクション数を含む場合,予め定めた定数α,βを使用して,下記の式により計算する。
負荷指数 =(平均応答時間×α)+(セッション数×β) …式1
VIP情報取得機能403は,中継装置200のVIP情報通信機能205からVIP情報応答60を受信し,中継装置VIP情報D10に記憶する。
【0044】
また,VIP情報取得機能403は,VIP情報応答60が含むIPアドレスをホスト名に変換し,中継装置VIP情報D10に該ホスト名も記憶する。IPアドレスをホスト名に変換する技術は公知であり,例えばDNS(Domain Name System)サーバに問い合わせてホスト名を取得する。
【0045】
図4は,管理サーバ400が記憶する中継装置VIP情報D10,中継装置負荷情報D20の一例である。
【0046】
中継装置VIP情報D10は,管理サーバ400のVIP情報取得機能403が中継装置200のVIP情報通信機能205から取得したVIP情報応答60の情報を,中継装置識別子D11,サーバ識別子D12,仮想IPアドレスD13として記憶する。仮想IPアドレスD13は,中継装置200のD52に加え,VIP情報取得機能403が仮想IPアドレスから変換したホスト名も記憶する。
【0047】
図5は,中継装置200が記憶する識別子情報D30,サーバ負荷情報D40,VIP情報D50の一例である。
【0048】
識別子情報D30は,中継装置400を一意に識別する識別子D31と,中継装置に接続されるサーバ300〜300−Mを一意に識別するための情報D32を記憶する。例えば,中継装置識別子D31は一意な値を手動で設定しても良いし,装置毎に一意であるMAC(Media Access Control)アドレス情報を使用しても良い。サーバを識別する情報D32は,例えばサーバのIPアドレスD33に対して一意なサーバ識別子D34を割り当てる。なお,図2におけるサーバAとサーバA´のようにクライアントからの要求を分散するサーバ群には等しいサーバ識別子D34を設定する。
【0049】
サーバ負荷情報D40は,サーバ負荷監視機能203が取得したサーバ毎の負荷情報を記憶する。例えば,サーバ識別子D41に加え,接続済みTCPセッション数D42,平均応答時間D40を備える。サーバ識別子D41には,識別子情報D30で設定したサーバ識別子D34の値を使用する。
【0050】
VIP情報D50は,中継装置200の通信中継機能201が仮想IPアドレスで受信した要求をどのサーバに転送するかを決定するための情報であり,中継装置が要求を受信する仮想IPアドレスD51と,該要求を転送するサーバのIPアドレスD52を記憶する。
【0051】
図6は,クライアント100,中継装置200,サーバ300間で通信するコンテンツ要求,応答コンテンツの一例である。
【0052】
コンテンツ要求10−1は,クライアント100のコンテンツ要求機能101がコンテンツの取得を要求するために送信する要求である。例えば,HTTP通信におけるHTTPリクエストである。
【0053】
コンテンツ要求10−2は,中継装置200の通信中継機能201がクライアント100から受信したコンテンツ要求10−1を基に生成し,サーバ300に送信する要求である。コンテンツ要求10−1に,HTTPのホストヘッダーフィールドのように仮想IPアドレスのホスト名が含まれる場合,通信中継機能201は該ホスト名をサーバ300のホスト名に変更する。なお,本技術は公知である。
【0054】
応答コンテンツ20−1は,サーバ300のコンテンツ応答機能301がコンテンツ要求10−2を受けて中継装置に送信する応答である。応答コンテンツ20−1は,他のコンテンツの位置を示すリンク情報A1を備える。リンク情報は,例えばHTMLコンテンツにおいてはアンカータグ内にURL(Uniform Resouce Locater)を用いて記述される。
【0055】
応答コンテンツ20−2は,サーバ300から受信した応答コンテンツ10−1に対し,中継装置200の算譜位置付加機能202が,算譜位置A2を付加したものであり,通信中継機能201がコンテンツ要求元クライアント100に送信する応答である。算譜位置A2は,中継装置200を識別する中継装置識別子A3と,応答コンテンツ元のサーバ300を識別するサーバ識別子A4を含む。算譜位置A2は,例えばHTMLコンテンツにおいてはスクリプトタグのSRC属性値として記述し,中継装置識別子A3とサーバ識別子A4は該属性値のCGIパラメータとして記述する。
【0056】
図7は,クライアント100と管理サーバ間で通信する算譜要求,算譜応答の一例である。
【0057】
算譜要求30は,クライアント100のコンテンツ要求機能101が取得した応答コンテンツ20−2に含まれる算譜位置A2が示す宛先(例えば管理サーバ400とする)に,クライアント100の算譜要求機能103が送信する要求である。なお,算譜要求30は,応答コンテンツ20−2の算譜位置A2がパラメータとして含んでいた中継装置識別子A3とサーバ識別子A4の情報を備える。例えば,算譜要求30がHTTPリクエストである場合,リクエストURLのCGIパラメータとして中継装置識別子A3とサーバ識別子A4を備える。
【0058】
算譜応答40は,管理サーバ400の算譜応答機能401がクライアント100から算譜要求30を受信し,算譜要求30がパラメータとして含む中継装置識別子A3,サーバ識別子A4と,管理サーバ400が記憶する中継装置VIP情報D10と中継装置負荷情報D20とに基づいて生成し,クライアントに送信する応答である。該算譜応答40は,コンテンツが含むリンク情報の文字列を別の文字列に変換する修正プログラムを含む。なお,図7の算譜応答40は,該修正プログラムをJavaScript(登録商標)で記述した例である。
【0059】
図8は,中継装置200と管理サーバ400間で通信する負荷情報要求,負荷情報応答の一例である。なお,本実施例では管理サーバ400から要求を送信するプル型通信の例を示すが,中継装置200から情報を通知するプッシュ型通信でも良い。
【0060】
負荷情報要求55は,管理サーバ400の負荷情報取得機能402が中継装置200の負荷情報通信機能204に送信し,負荷情報D40を要求する。
【0061】
負荷情報応答50は,中継装置200の負荷情報通信機能204が,負荷情報要求55に対して送信する応答であり,中継装置識別子51と,該中継装置に接続される各サーバのサーバ負荷情報D40の情報を負荷情報52として含む(51)。
【0062】
図9は,中継装置200と管理サーバ400間で通信するVIP情報要求,VIP情報応答の一例である。なお,本実施例では管理サーバ400から要求を送信するプル型通信の例を示すが,中継装置200から情報を通知するプッシュ型通信でも良い。
【0063】
VIP情報要求65は,管理サーバ400のVIP情報取得機能403が中継装置200のVIP情報通信機能20に送信し,VIP情報D50を要求する。
【0064】
VIP情報応答60は,中継装置200のVIP情報通信機能205が,VIP情報要求65に対して送信する応答であり,中継装置識別子61と,該中継装置に接続される各サーバのサーバ識別子D34と対応する仮想IPアドレスD51を含んで構成されるVIP情報62を含む。
【0065】
図10は,サーバ300からコンテンツを取得するクライアントが,リンク情報の書き換えによりサーバ300−1からコンテンツを取得する際の通信シーケンスの一例を示す。本シーケンスでは,クライアント100としてWebブラウザ,サーバ300としてWebサーバ,取得するコンテンツとしてHTMLファイル,通信プロトコルとしてHTTPを使用する例を挙げるが,それ以外であっても良い。
【0066】
はじめにユーザが,クライアント100(Webブラウザ)が表示するサーバ300のコンテンツへのリンクやブックマークに登録されたサーバ300のコンテンツをマウスでクリックすると(U10),クライアント100が中継装置200の備える仮想IPアドレス宛てにコンテンツ要求10−1を送信する(S1)。
【0067】
中継装置200の通信中継機能201が該コンテンツ要求10−1を受信すると(S2),通信中継機能201はホストヘッダーフィールドなどを適切な値に書き換えて,コンテンツ要求10−2をサーバ300宛てに送信する(S3)。
【0068】
サーバ300のコンテンツ応答機能301は,該コンテンツ要求10−2を受信すると,要求内容に応じた応答コンテンツ20−1を中継装置200に送信する(S4)。
【0069】
中継装置200の通信中継機能201が該応答コンテンツ20−1を受信すると(S4),算譜位置付加機能202が応答コンテンツ20−1に算譜位置A2を付加する(S100)。通信中継機能201は,算譜位置A2が付加された応答コンテンツ20−2をコンテンツ要求元のクライアント100に送信する(S5)。
【0070】
クライアント100のコンテンツ要求機能101は,応答コンテンツ20−2を取得すると(S6),コンテンツを表示するために応答コンテンツ20−2を解析する。クライアント100は,応答コンテンツ20−2の解析において算譜位置A2を検出すると,算譜位置A2が示すURLに対して,算譜要求30を送信する(S7)。
【0071】
管理サーバ400の算譜応答機能401は,該算譜要求30を受信すると(S8),算譜を作成し(S120),算譜応答40としてクライアントに送信する(S9)。
【0072】
クライアントの算譜要求機能103が該算譜応答40を受信すると(S10),算譜実行機能102が応答コンテンツ20−2に含まれるリンク情報を,算譜応答40が含む修正プログラムに従って書き換え(S130),リンク情報を書き換えたコンテンツをユーザに表示する(U20)。
【0073】
ユーザが更なるコンテンツ取得などの目的で,該ページが含む書き換えられたリンクをクリックすると(U30),クライアントはコンテンツ要求10−1を,書き換えられたリンクの宛先(例えば中継装置200−1の仮想IPアドレスとする)に送信する。中継装置200−1は該要求を受信し(S21),受信した仮想IPアドレスに従い,コンテンツ要求10−2をサーバ300−1に送信する。
【0074】
図11は,管理サーバ400が中継装置200〜200−Nから情報を取得し,中継装置負荷情報D10を生成・更新する際の通信シーケンスの一例である。本通信シーケンスは予め定めた一定の間隔で繰り返し実行する。
【0075】
管理サーバ400の負荷情報取得機能402は,ネットワーク等を介して接続された各中継装置200〜200−Nに対して,負荷情報要求55を送信する(S51〜S51−N)。中継装置200〜200−Nの負荷情報通信機能204は,負荷情報要求55を受信すると(S52〜S52−N),各中継装置が備えるサーバ負荷情報D40を基に,負荷情報応答50を作成し,管理サーバ400宛てに送信する(S53〜S53−N)。
【0076】
管理サーバ400の負荷情報取得機能402は,中継装置200〜200−Nから負荷情報応答50を受信すると,それらの情報を基に中継装置負荷情報D20に追加・更新する。
【0077】
図12は,管理サーバ400が中継装置200〜200−Nと通信し,中継装置VIP情報D10を追加,更新する際の通信シーケンスの一例である。
管理サーバ400のVIP情報取得機能403は,ネットワーク等を介して接続された各中継装置200〜200−Nに対して,VIP情報要求65を送信する(S61〜S61−N)。中継装置200〜200−NのVIP情報通信機能205は,VIP情報要求65を受信すると(S62〜S62−N),各中継装置が備えるVIP情報D50を基に,VIP情報応答60を作成し,管理サーバ400宛てに送信する(S63〜S63−N)。
【0078】
管理サーバ400のVIP情報取得機能403は,中継装置200〜200−NからVIP情報応答60を受信すると,それらの情報を基に中継装置VIP情報D10に追加・更新する。
【0079】
また,中継装置VIP情報D50がIPアドレスである場合,管理サーバ400のVIP情報通信機能は,該IPアドレスに対応するホスト名を取得し(例えばDNSサーバに問い合わせる),該ホスト名を中継装置VIP情報D10に追加・更新する。
【0080】
図13は中継装置200の算譜位置付加機能202が,サーバ300からの応答コンテンツ20−1に算譜位置を付加する処理フローの一例である。本フローは図10のS100の処理に相当する。
【0081】
算譜位置付加機能202は,まず,応答コンテンツ20−1内で算譜位置を追加するべき位置を検出する(S101)。追加すべき位置は,コンテンツがHTMLの場合,例えばHEAD要素の先頭である。
【0082】
次に,予め設定された,修正プログラムを取得する宛先を取得する(S102)。宛先は,通信プロトコルがHTTPの場合,例えばURLで記述される。
【0083】
次に,応答元サーバのアドレスから識別子情報D32を参照して,サーバ識別子を取得する(S103)。
【0084】
同様に,識別子情報D31から,中継装置自身の中継装置識別子を取得する(S104)。
【0085】
S102で取得した宛先に,S103,S104で取得したサーバ識別子と中継装置識別子をパラメータとして付加し(コンテンツがHTMLでは,例えばCGIパラメータとして),応答コンテンツに適応する形式(コンテンツがHTMLでは,例えばSCRIPT要素の形式)で算譜位置を生成し,S101で検出した位置に該算譜位置を追加する(S105)。
【0086】
図14は管理サーバ400の算譜応答機能401が,算譜応答を生成する処理フローの一例である。本フローは図10のS120の処理に相当する。
【0087】
算譜応答機能401は,まず算譜要求30が含む中継装置識別子A3とサーバ識別子A4を取得する(S121)。
【0088】
つぎに,中継装置負荷情報D20において,取得した該サーバ識別子と同じサーバ識別子D22を有し,負荷指数D23が最も低い値の中継装置識別子D21を宛先中継装置識別子として取得する(S122)。
【0089】
宛先中継装置識別子を取得後,中継装置VIP情報D10において,該宛先中継装置識別子と等しい中継装置識別子D11と,サーバ識別子A4に等しいサーバ識別子D12を有する仮想IPアドレスD13を取得し,該値を文字列AFとする(S123)。また,該当する仮想IPアドレスD13が複数存在する場合はいずれか1つ選択する(例えば最初にあらわれる値)。
【0090】
次に,中継装置VIP情報D10において,S121で取得した中継装置識別子A3,サーバ識別子A4と等しい,中継装置識別子D11,サーバ識別子D12を有する仮想IPアドレスD13を取得し,該値を文字列BFとする。該当する仮想IPアドレスD13が複数存在する場合は,文字列BF〜BF−Nとする(S124)。
【0091】
最後に,クライアントが取得した応答コンテンツ20−2が含むリンクにおいて,文字列BF〜BF−Nを文字列AFに置換する指示を作成する(S125)。文字列を置換する修正プログラムの作成は公知の技術で実現可能である。
【0092】
図15はクライアント100の算譜実行機能102が,管理サーバ400からの取得した算譜応答40を実行し,応答コンテンツ20−2が含むリンクの内容を書き換える処理フローの一例である。本フローは図10のS140の処理に相当する。なお,本処理は,管理サーバ400の算譜応答機能401が応答する算譜応答40の内容に依存する。
【0093】
クライアント100の算譜実行機能102は,算譜応答40の内容に従い,応答コンテンツ20−2が含む全てのリンク情報を検出する(S141)。リンク情報はHTMLでは例えばA要素(アンカー要素)である。
【0094】
次に,リンク情報を検出した場合(S141でYES)検出した前記リンク情報が含むコンテンツ位置にシーケンスS120の文字列BF−1〜BF−Nが含まれるかを判断する(S142)。コンテンツ位置とは,HTMLでは例えばA要素のHREF属性値である。
【0095】
リンク情報が文字列BF−1〜BF−Nを含む場合(S142においてYES),文字列BF−1〜BF−Nを,シーケンスS120の文字列AFに置換する。
【0096】
以上,本実施例によれば,サーバの前段に中継装置を備える場合でも,サーバに独自機能を追加することなく,クライアントが取得したコンテンツのリンクを負荷の少ないサーバを宛先とするように書き換えることができ,サーバの負荷状況に応じた広域負荷分散を実現できる。
【実施例2】
【0097】
第2の実施例は,中継装置自身の負荷が高い場合,後段のサーバの負荷に関わらず,他の中継装置を経由するサーバを宛先とするようにコンテンツのリンク情報を書き換える実施形態である。
【0098】
図16は,実施例2のシステムの一構成例である。
【0099】
実施例2の中継装置220は,実施例1の中継装置200に加え,中継装置負荷監視機能221を備える。また,算譜位置付加機能222は実施例の算譜位置付加機能202と異なる。管理サーバ420が備える算譜応答機能421は,実施例1の管理サーバ400が備える算譜応答機能401と異なる。その他の構成は実施例1の構成と等しい。
【0100】
中継装置負荷監視機能221は,中継装置220のCPU(Central Processing Unit)使用率や,中継装置220の接続済みTCPセッション数などを基に中継装置220の負荷指数を定期的に計算する。負荷指数は,例えば予め定めた定数α,βを使用して,下記の式により計算する。
負荷指数 =(CPU使用率×α)+(セッション数×β) …式2
中継装置負荷監視機能221が計算する負荷指数が予め定めた値を超える場合,算譜位置付加機能222は,応答コンテンツに算譜位置を付加する際に(図7におけるS100),算譜位置A2のパラメータとして中継装置識別子A3は含めるが,サーバ識別子A4を含めない。
【0101】
管理サーバ420の算譜応答機能421が,サーバ識別子A4を含まない算譜要求30を受信した場合の処理フローの一例を図20のS220に示す。
【0102】
管理サーバ420の算譜応答機能421は,サーバ識別子A4を含まない算譜要求30を受信すると,中継装置識別子A3を取得し,サーバ識別子A4を取得しない(S221)。
【0103】
次に,中継装置VIP情報D10において,取得した中継装置識別子A3と等しい中継装置識別子D11の仮想IPアドレスD13を取得し,サーバ識別子D12毎(1〜M)に,文字列1−BF−1〜M−BF−Nとする(S222)。
【0104】
また,中継装置負荷情報D20において,取得した中継装置識別子A3と等しい中継装置識別子D21を有するサーバ識別子D22毎に,負荷指数D23の値が最小となるサーバ識別子D22と中継装置識別子D21との組み合わせを取得する。該組み合わせの中継装置識別子D21が取得した中継装置識別子A3と等しい場合は,2番目に値が小さくなる組み合わせを取得する(S223)。
【0105】
中継装置VIP情報D10において,S223で取得したサーバ識別子D22と中継装置識別子D21の組み合わせが有する仮想IPアドレスD13を1つ選択し,該仮想IPアドレスD13の値を,サーバ識別子D13毎(1〜M)ごとに,文字列1−AF〜M−AFとする(S224)。
【0106】
最後に,クライアントが取得した応答コンテンツ20−2が含むリンクにおいて,文字列1−BF−X〜M−BF−X(Xは任意文字)を,文字列1−AF〜M−AFに置換する修正プログラムを作成する(S125)。文字列を置換する修正プログラムの作成は公知の技術で実現可能である。
【0107】
なお,算譜応答機能421が,サーバ識別子A4と中継装置識別子A3とを共に含む算譜要求30を受信した場合は,図10のS120の処理フローに等しい。
【0108】
以上,本実施例によれば,中継装置自身の負荷が高くなった場合においても,クライアントからの要求を,他の中継装置を経由するサーバ宛てとなるようコンテンツのリンクを書き換えることができ,中継装置が処理のボトルネックとなることを防ぐ。
【実施例3】
【0109】
第3の実施例は,中継装置またはサーバ装置の負荷が高い場合に,他のサーバへの負荷分散を実施し,通常時は中継装置が応答コンテンツに算譜位置を付加することを抑止し,中継装置,クライアント,管理サーバにおける処理を低減する実施形態である。
【0110】
図17は,実施例3のシステムの一構成例である。
【0111】
図17の中継装置230は,実施例1の中継装置200に加えて,算譜位置付加抑止機能231を備える。それ以外の構成は実施例1の構成と等しい。
【0112】
中継装置230の算譜位置付加抑止機能231は,通信中継機能201がサーバから応答コンテンツ20−1を受信すると,サーバ負荷情報D40から該サーバの負荷指数L1を計算する。負荷指数L1の計算方法としては,例えば実施例1の式1を使用する。
【0113】
算譜位置付加抑止機能231は,計算した負荷指数L1が予め定めた値γ以下である場合,算譜位置付加機能202がサーバからの応答コンテンツ20−1に算譜位置を付加することを抑止する。これにより,クライアントが取得するコンテンツ20−2のリンク情報は書き換えられない。
【0114】
負荷指数L1がγを超える場合は,算譜位置付加抑止機能231は算譜位置の付加を抑止せず,中継装置230は実施例1の中継装置200と同様に処理を行う。
【0115】
また,算譜位置付加抑止機能231は,実施例2の中継装置負荷監視機能221と同様に,中継装置230の負荷指数を負荷指数L2として定期的に計測する機能を備え,負荷指数L1と負荷指数L2のうち大きい値と定数γを比較する機能を備えても良い。これにより,サーバ300〜300−Nの負荷は低いが,中継装置230の負荷が高い場合にも,算譜位置を付加できる。
【0116】
以上,本実施例によれば,中継装置またはサーバの負荷が高くない場合はコンテンツのリンク書き換えを実施しないことにより,不要な処理や通信を抑えることができる。
【実施例4】
【0117】
第4の実施例は,管理サーバを複数台設置し,算譜要求先の管理サーバを複数台に分散することで,管理サーバ1台あたりの処理量を低減する実施形態である。
【0118】
図18は,実施例4のシステムの一構成例である。
【0119】
図18の中継装置240は,実施例1の中継装置200に加え,管理サーバ決定機能241と,管理サーバリストD60を備える。また,実施例4の構成は,管理サーバ400が複数台(400〜400−L)存在し,管理サーバ400と同様に,管理サーバ,クライアント,中継装置とは全て通信ネットワークを介して接続されている。
【0120】
管理サーバリストD60は,通信ネットワークを介して接続されている各管理サーバ(400〜400−L)の宛先(HTTPでは例えばURL)を記憶する。該リストの情報は手動で設定しても良いし,ネットワークを介して管理サーバから通知しても良い。
【0121】
管理サーバ決定機能241は,算譜位置付加機能202が付加する算譜位置が含む修正プログラムの取得先を,管理サーバリスト内から選択し,算譜位置付加機能202は,選択された管理サーバの宛先を算譜要求の宛先となるよう算譜位置を生成する。リストから選択する方式は,リストの先頭から順番に選択するラウンドロビン方式でもよいし,その他の負荷分散方式により選択しても良い。
【0122】
以上,本実施例によれば,管理サーバの負荷を複数台に分散させることができ,管理サーバがシステムのボトルネックとなることを防ぐことができる。
【0123】
また,本実施例は実施例2および/または3と組み合わせることができる。
【実施例5】
【0124】
第5の実施形態は,管理サーバを必要とせずに,中継装置自身がコンテンツのリンクを書き換える修正プログラムを生成し,コンテンツに付加してクライアントに応答し,クライアントが該修正プログラムに従いリンクを書き換える実施形態である。
【0125】
図18は,実施例5のシステムの一構成例である。
【0126】
図18の中継装置250は,実施例1の中継装置200に加え,算譜付加機能251と,中継装置VIP情報D10と,中継装置負荷情報D20を備える。また,中継装置250の負荷情報通信機能254と,VIP情報通信機能255は,実施例1の中継装置200の負荷情報通信機能204と,VIP情報通信機能205とは異なる。中継装置250は,実施例1の中継装置200の算譜位置付加機能202を備えなくても良い。
【0127】
クライアント150は実施例1の算譜要求機能103を備えなくても良い。
【0128】
実施例5のシステムは,実施例1の管理サーバ400を必要としない。また,中継装置250〜250−Nは,各々が通信ネットワークを介して接続される。
【0129】
中継装置250の負荷情報通信機能254とVIP情報通信機能255は,実施例1における負荷情報通信機能204とVIP情報通信機能205の機能に加え,実施例1における管理サーバ400の負荷情報取得機能402と,VIP情報取得機能403と同様の機能を備える。
【0130】
負荷情報通信機能254は,自身以外の中継装置に負荷情報要求55を送信し,各中継装置の負荷情報通信機能254が応答する負荷情報応答50を受信し,中継装置負荷情報D20に記憶する。
【0131】
VIP情報通信機能255は,自身以外の中継装置にVIP情報要求65を送信し,各中継装置のVIP情報通信機能255が応答するVIP情報応答60を受信し,中継装置VIP情報D10に記憶する。
【0132】
各中継装置が備える中継装置VIP情報D10と,中継装置負荷情報D20は,実施例1において管理サーバ400が備える中継装置VIP情報D10と,中継装置負荷情報D20とに等しい。
【0133】
算譜付加機能251は,実施例1において管理サーバ400の算譜応答機能401が備える機能と同様に,応答コンテンツ元サーバのサーバ識別子と,自身の中継装置識別子と,中継装置VIP情報D10と,中継装置負荷情報D20とを基に,コンテンツのリンク情報を書き換える修正プログラムA50を生成する機能に加え,該修正プログラムA50を応答コンテンツ20−1に付加し,応答コンテンツ20−3を生成する機能を備える。中継装置がサーバからの応答コンテンツに修正プログラムを付加する技術は公知である(例えば特許文献3)。
【0134】
クライアント150のコンテンツ要求機能101が応答コンテンツ20−3を受信すると,算譜実行機能102が該応答コンテンツに含まれる修正プログラムA50に従って,該応答コンテンツ20−3のリンク情報を書き換える。
【0135】
また,算譜付加機能251は,生成した修正プログラムA50をコンテンツに付加するのではなく,修正プログラムA50に従って,応答コンテンツ20−1のリンク情報を書き換えて,応答コンテンツ20−4を生成し,クライアントに応答しても良い。このとき,修正プログラムA50は付加しない。
【0136】
図21に応答コンテンツ20−3,20−4を示す。
【0137】
以上,本実施例によれば,中継装置がコンテンツのリンクを書き換える修正プログラムを応答コンテンツに付加することで,管理サーバを必要とせずに,コンテンツのリンクを書き換え,クライアントからのサーバへの要求を分散させることができる。
【0138】
また,本実施例は実施例2および/または3と組み合わせることができる。
【符号の説明】
【0139】
100:クライアント,101:コンテンツ要求機能,102:算譜実行機能,103:算譜要求機能,200:中継装置,201:通信中継機能,202:算譜位置付加機能,203:サーバ負荷監視機能,204:負荷情報通信機能,205:VIP情報通信機能,300:サーバ,301:コンテンツ応答機能,400:管理サーバ,401:算譜応答機能,402:負荷情報取得機能403:VIP情報取得機能,500:サーバシステム,D10:中継装置VIP情報,D20:中継装置負荷情報,D30:識別子情報,D40:サーバ負荷情報,D50:VIP情報,D60:管理サーバリスト,A1:リンク情報,A2:算譜位置,A3:中継装置識別子,A4:サーバ識別子,H201:プロセッサ,H202:メモリ装置,H203:入出力装置,H204:ディスク装置,H205:通信制御装置,H206:内部通信線,H207:外部通信回線,220:中継装置(実施例2),221:中継装置負荷監視機能,421:算譜応答機能(実施例2),230:中継装置(実施例3),231:算譜位置付加抑止機能,
240:中継装置(実施例4),241:管理サーバ決定機能,250:中継装置(実施例5),254:負荷情報通信機能(実施例5),255:VIP情報通信(実施例5)

【特許請求の範囲】
【請求項1】
ネットワークで接続された,端末とコンテンツサーバと中継装置と管理サーバとを備える通信システムであって,
前記中継装置が,
前記端末から前記コンテンツサーバへのコンテンツ要求を中継する通信中継部と,
前記コンテンツサーバからの,前記コンテンツ要求に対する応答コンテンツに,前記応答コンテンツに含まれる情報を修正する修正プログラムの取得先の位置とパラメータを含む算譜位置を付加する算譜位置付加部と,を備え,
前記端末が,
前記コンテンツ要求を送信するコンテンツ要求部と,
前記算譜位置が示す前記修正プログラムの取得先に,前記算譜位置が示すパラメータを含む算譜要求を送信し,前記修正プログラムを取得する算譜要求部と,
取得した前記プログラムを実行する算譜実行部と,を備え,
前記管理サーバが,前記算譜要求を受信し,前記算譜要求が含むパラメータに従った前記修正プログラムを生成し,前記算譜要求の送信元に応答する算譜応答部を備える
ことを特徴とする通信システム。
【請求項2】
請求項1に記載の通信システムにおいて,
前記管理サーバの前記算譜応答部が,前記算譜要求に応答する前記修正プログラムを,前記算譜要求が含む前記パラメータと,前記サーバの通信負荷情報と,前記コンテンツサーバのアドレス情報と,に基づいて生成する
ことを特徴とする通信システム。
【請求項3】
請求項2に記載の通信システムにおいて,
前記中継装置が,
前記コンテンツサーバの通信負荷をサーバ負荷として計測するサーバ負荷監視部と,
前記サーバ負荷情報を,管理サーバへ送信する負荷情報通信部と,
前記コンテンツサーバのアドレスを,VIP情報として,管理サーバへ送信するVIP情報通信部と,を備え,
前記管理サーバが,
前記サーバ負荷情報を取得する負荷情報取得部と,
前記VIP情報を取得するVIP情報取得部と,を,備える
ことを特徴とする通信システム。
【請求項4】
請求項1から3のいずれか一に記載の通信システムにおいて,
前記中継装置が,自中継装置の通信負荷の程度を示す中継装置負荷指数を計測する中継装置負荷監視部を備え,
前記算譜位置付加部は,前記中継装置負荷監視部が計測した前記中継装置負荷指数が既定の値を超える場合,その結果に基づき付加する前記算譜位置の内容を変更し,
管理サーバの前記算譜応答部は,該変更された前記算譜位置に基づいて,前記修正プログラムの内容を生成する
ことを特徴とする通信システム。
【請求項5】
請求項1から3のいずれか一に記載の通信システムにおいて,
前記中継装置が,さらに,算譜位置付加抑止部を備え,
前記中継装置の前記サーバ負荷監視部が,前記コンテンツサーバの負荷をサーバ負荷指数として計測し,
前記算譜位置付加抑止部は,該サーバ負荷指数が既定の値を超えない場合,前記コンテンツサーバからの応答に前記算譜位置を付加することを抑止する
ことを特徴とする通信システム。
【請求項6】
請求項5に記載の通信システムにおいて,
前記中継装置の前記算譜位置付加抑止部は,さらに,
自中継装置の通信負荷の程度を示す中継装置負荷指数を計測し,
該中継装置負荷指数と前記サーバ負荷指数のうち大きい値が,前記既定の値を超えない場合,前記コンテンツ応答に前記算譜位置を付加することを抑止する
ことを特徴とする通信システム。
【請求項7】
請求項1から6のいずれか一に記載の通信システムにおいて,
前記管理サーバを複数備え,
前記中継装置が,
前記複数の管理サーバ各々の宛先を記憶する管理サーバリストと,
前記算譜位置付加機能が前記算譜位置に含める前記修正プログラムの取得先を,該管理サーバリスト内から,負荷を分散するように選択する管理サーバ決定部と,を備える
ことを特徴とする通信システム。
【請求項8】
ネットワークで接続された,端末とコンテンツサーバと中継装置とを備える通信システムであって,
前記中継装置が,
前記端末から前記コンテンツサーバへのコンテンツ要求を中継する通信中継部と,
前記コンテンツサーバからの応答コンテンツに,前記コンテンツサーバの識別子に従って,前記応答コンテンツに含まれる情報を修正する修正プログラムを生成し,該生成した前記修正プログラムを付加する算譜付加部と,を備え,
前記端末が,
前記コンテンツ要求を送信するコンテンツ要求部と,
前記応答コンテンツに含まれる前記修正プログラムを実行するプログラムを実行する算譜実行部と,を備える
ことを特徴とする通信システム。
【請求項9】
請求項8に記載の通信システムにおいて,
前記中継装置を複数備え,
各々の前記中継装置において,
前記負荷情報通信部が,他の中継装置のサーバ負荷監視部が計測した前記コンテンツサーバの負荷情報を,前記他の中継装置との通信により取得し,
前記VIP情報通信部が,前記他の中継装置に接続される前記コンテンツサーバのアドレス情報を,前記他の中継装置との通信により取得し,
前記中継装置の前記算譜付加部が,取得した該コンテンツサーバの負荷情報とアドレス情報に基づいて前記修正プログラムを生成し,該前記修正プログラムを付加する
ことを特徴とする通信システム。
【請求項10】
請求項8または9に記載の通信システムにおいて,
前記中継装置の前記算譜付加部が,生成した前記修正プログラムを前記応答コンテンツに付加するのではなく,前記応答コンテンツに対して前記修正プログラムを実行し,その結果を前記応答コンテンツとして前記端末に送信する
ことを特徴とする通信システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2012−234236(P2012−234236A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2011−100391(P2011−100391)
【出願日】平成23年4月28日(2011.4.28)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】