JP5724687B2 - 情報処理装置、サーバ選択方法、及びプログラム - Google Patents

情報処理装置、サーバ選択方法、及びプログラム Download PDF

Info

Publication number
JP5724687B2
JP5724687B2 JP2011147923A JP2011147923A JP5724687B2 JP 5724687 B2 JP5724687 B2 JP 5724687B2 JP 2011147923 A JP2011147923 A JP 2011147923A JP 2011147923 A JP2011147923 A JP 2011147923A JP 5724687 B2 JP5724687 B2 JP 5724687B2
Authority
JP
Japan
Prior art keywords
server
processing
request
selection algorithm
servers
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
JP2011147923A
Other languages
English (en)
Other versions
JP2013015991A (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.)
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 JP2011147923A priority Critical patent/JP5724687B2/ja
Priority to US13/470,428 priority patent/US8694580B2/en
Publication of JP2013015991A publication Critical patent/JP2013015991A/ja
Application granted granted Critical
Publication of JP5724687B2 publication Critical patent/JP5724687B2/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/1004Server selection for load balancing
    • 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/1004Server selection for load balancing
    • H04L67/1025Dynamic adaptation of the criteria on which the server selection is based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、複数のサーバの中から、クライアントにより要求された処理を実行するサーバを選択する情報処理装置、サーバ選択方法、及びプログラムに関する。
Webシステムのように、複数のサーバを並べてアプリケーションプログラムの処理を並列化する情報処理システムでは、クライアントにより要求された処理を実行するサーバを決定するために、ロードバランサと呼ばれる情報処理装置が設けられることが多い。
図1は、このような情報処理システムの構成例を示している。図1の情報処理システムは、ロードバランサ103及びアプリケーション(AP)サーバ104−1〜104−4を含む。ロードバランサ103は、クライアント101からの処理要求をインターネット等の通信ネットワーク102を介して受信し、APサーバ104−1〜104−4に振り分けることにより負荷を分散させる。これにより、クライアント101に対して安定したサービスを提供するとともに、いずれかのAPサーバの故障時にも継続してサービスを提供することができる。
ロードバランサ103は、クライアント101だけでなく、他のクライアントを含む複数のクライアントからの処理要求を受信して、APサーバ104−1〜104−4に振り分けることができる。以下の説明では、アプリケーションプログラムを単にアプリケーションと称する場合がある。
ロードバランサが使用する負荷分散のアルゴリズム(戦略)は数種類あるが、以下の2種類が一般的である。
(1)スティッキー型
このアルゴリズム(戦略)では、同一のクライアントからの複数の処理要求を、同一のAPサーバに振り分ける。この場合、クライアントのインターネットプロトコル(IP)アドレスやクッキー情報等を識別情報として用いて、同一のクライアントにより要求された処理を実行するAPサーバとして同一のAPサーバを選択する。この戦略によれば、分散処理されることを意識しない既存のアプリケーションでも正しく動作する可能性が高いため、よく利用されている。一方、APサーバの数が過剰になった場合等に簡単にAPサーバを停止できないという問題や、APサーバがダウンしたときにそのAPサーバを利用していたクライアントの処理がすべて停止してしまうという問題が指摘されている。
(2)ラウンドロビン型
このアルゴリズム(戦略)では、同一又は複数のクライアントからの複数の処理要求を、所定のアルゴリズムにより複数のAPサーバに振り分ける。この戦略は仕組みが単純である一方で、アプリケーションが分散処理に対応するように作成されていないと、正しく動作しない可能性がある。
また、複数のウェブサイトを含むウェブ・ファームにおいて、特定のウェブサイトをアクセスするための顧客要求を共用可能顧客要求と共用不能顧客要求に分類する技術も知られている。この技術では、共用可能顧客要求を他のウェブサイトに割り当てられたサーバに処理させ、共用不能顧客要求を特定のウェブサイトサーバに割り当てられたサーバに処理させる。
複数のAPサーバを有するシステムにおいて、ロードバランサにより選択されたAPサーバがアプリケーションを実行する際に作成したセッションデータを、APサーバ間で共有する技術も知られている。
特許第3989443号明細書 特許第3537338号明細書 特開2010−079523号公報
上述した従来の情報処理システムには、以下のような問題がある。
近年では、Platform as a Service(PaaS)等のクラウド型のサービスが普及し始め、そのサービスでは、ラウンドロビン型の分散戦略が採用されるケースが多くなっている。
ラウンドロビン型で動作しないアプリケーションの多くは、クライアントの状態をAPサーバのメモリやローカルディスク内に保持する仕組みになっている。クライアントの状態としては、クライアントがログインしているか否か、オンラインショッピングサービスのショッピングカートに入っている商品は何か等の情報が挙げられる。APサーバがクライアントの状態を保持する場合はスティッキー型の分散戦略が望ましく、ラウンドロビン型の分散戦略を採用するには、アプリケーションを並列処理可能なように改変する必要がある。
例えば、アプリケーションをオンプレミスからクラウドに移行する場合、オンプレミスでスティッキー型の分散戦略を採用していると、そのままではクラウドに移行してもアプリケーションが正しく動作しない。このため、アプリケーションの改変が必要になるが、アプリケーションの規模が大きくなると、アプリケーション全体を改変するために多大なコストと時間を要する。
1つの側面では、本発明は、要求される処理を実行するサーバを選択するための選択アルゴリズムを処理の種別に応じて柔軟に変更できるようにすることを目的とする。
情報処理装置は、格納手段、受信手段、選択手段、及び送信手段を含む。
格納手段は、要求される処理を示す処理識別情報と、複数のサーバの中から処理を実行するサーバを選択するための選択アルゴリズムとの対応関係を格納する。受信手段は、クライアントから処理要求を受信する。選択手段は、格納手段から、処理要求により指定される処理識別情報に対応する選択アルゴリズムを取得し、取得した選択アルゴリズムに基づいて、複数のサーバの中から、その処理要求により要求された処理を実行するサーバを選択する。送信手段は、選択されたサーバに処理要求を送信する。
要求される処理を実行するサーバを選択するための選択アルゴリズムを処理の種別に応じて柔軟に変更できる。
従来の情報処理システムの構成図である。 情報処理装置の機能的構成図である。 サーバ選択処理のフローチャートである。 第1の情報処理システムの構成図である。 戦略情報を示す図である。 第1の負荷分散処理のフローチャートである。 第1のアプリケーション実行処理のフローチャートである。 第2の情報処理システムの構成図である。 第3の情報処理システムの構成図である。 HyperText Transfer Protocol(HTTP)レスポンス情報を示す図である。 データベース(DB)リクエスト情報を示す図である。 第2の負荷分散処理のフローチャート(その1)である。 第2の負荷分散処理のフローチャート(その2)である。 第2のアプリケーション実行処理のフローチャートである。 第3の情報処理システムにおける通信手順を示す図である。 第4の情報処理システムの構成図である。 テストシナリオ実行処理のフローチャートである。 情報処理装置の構成図である。
以下、図面を参照しながら、実施形態を詳細に説明する。
図2は、実施形態の情報処理装置の機能的構成例を示している。図2の情報処理装置201は、受信部211、選択部212、送信部213、及び格納部214を含み、複数のサーバの中から、クライアントにより要求された処理を実行するサーバを選択する。
格納部214は、要求される処理を示す処理識別情報と、複数のサーバの中から処理を実行するサーバを選択するための選択アルゴリズムとの対応関係を格納する。例えば、Webシステムの場合は、HyperText Transfer Protocol(HTTP)リクエストに含まれるUniform Resource Locator(URL)が、処理識別情報として用いられる。また、それ以外の情報処理システムの場合は、クライアントからサーバに対するコマンドの文字列等を、処理識別情報として用いてもよい。選択アルゴリズムとしては、スティッキー型及びラウンドロビン型を含む複数のサーバ選択アルゴリズムが用いられる。
図3は、図2の情報処理装置によるサーバ選択処理のフローチャートである。まず、受信部211は、クライアントから処理要求を受信する(ステップ301)。選択部213は、格納部214から、処理要求により指定される処理識別情報に対応する選択アルゴリズムを取得する(ステップ302)。そして、取得した選択アルゴリズムに基づいて、複数のサーバの中から、その処理要求により要求された処理を実行するサーバを選択する(ステップ303)。送信部213は、選択されたサーバに処理要求を送信する(ステップ304)。
このような情報処理装置によれば、要求される処理を実行するサーバを選択するための選択アルゴリズムを処理の種別に応じて柔軟に変更できる。
図4は、図2の情報処理装置をロードバランサとして使用した情報処理システムの構成例を示している。図4の情報処理システムは、ロードバランサ403及びAPサーバ404−1〜404−4を含む。
クライアント401は、パーソナルコンピュータや携帯端末等の情報処理装置であり、インターネット等の通信ネットワーク402を介して、ロードバランサ403にアクセスする。クライアント401は、HTTPリクエスト等の処理要求をロードバランサ403に送信する。
HTTPリクエストを送信する場合、クライアント401のユーザは、URLを直接入力したり、ブックマークを選択したりすることで、アクセス先のURLを指定する。これにより、指定されたURLとクエリを含むHTTPリクエストが、ロードバランサ403に送信される。
ロードバランサ403は、並列処理に適したサーバオペレーティングシステム(OS)を搭載した情報処理装置であり、クライアント401からの処理要求を受信してAPサーバ404−1〜404−4に振り分ける。ロードバランサ403には、スティッキー型及びラウンドロビン型を含む複数のサーバ選択アルゴリズムが組み込まれており、セッションデータベース(DB)411及び戦略情報412が格納されている。
セッションDB411は、クライアント401のセッションを識別する識別情報(セッションID)と、セッション開始時のHTTPリクエストを処理したAPサーバ404の識別情報(サーバID)との対応関係を表す。セッション開始時に、セッションIDとサーバIDがセッションDB411に登録され、セッション終了時に、登録された情報が削除される。戦略情報412は、アクセス先のURLと選択アルゴリズムの対応関係を表す。
図5は、戦略情報412の例を示している。図5の戦略情報412において、エントリ501〜504の“R”は、ラウンドロビン型の選択アルゴリズムを表し、エントリ505の“S”は、スティッキー型の選択アルゴリズムを表している。戦略情報412に登録されるURLは、アクセス先のURLのすべての文字列である必要はなく、その一部の文字列でもよい。例えば、エントリ501の“/login.do”なる文字列を含むURLには、ラウンドロビン型の選択アルゴリズムが対応付けられており、エントリ505の“/hotitem.do”なる文字列を含むURLには、スティッキー型の選択アルゴリズムが対応付けられている。
スティッキー型の選択アルゴリズムでは、同一のセッションに属する複数のHTTPリクエストが同一のAPサーバ404に振り分けられる。例えば、同一のIPアドレスや同一のクッキー情報が使用されている複数のHTTPリクエストは、同一のセッションに属する。
ラウンドロビン型の選択アルゴリズムでは、例えば、APサーバ404−1〜404−4から1つのAPサーバが所定の順番で選択される。所定の順番は、サーバIDの順番でもよく、負荷の低い順でもよい。さらに、ラウンドロビン型の選択アルゴリズムでは、APサーバ404−1〜404−4から1つのAPサーバをランダムに選択してもよい。
戦略情報412は、例えば、アプリケーションの開発者が並列処理可能か否か等のアプリケーションの特性を考慮して、手作業で入力してもよく、ロードバランサ403自身が所定のアルゴリズムにより生成してもよい。ロードバランサ403は、戦略情報412を参照して、処理要求に含まれるURLに対応する選択アルゴリズムを取得し、その選択アルゴリズムに基づいて処理を実行するサーバを選択する。
ロードバランサ403は、クライアント401だけでなく、他のクライアントを含む複数のクライアントからの処理要求を受信して、APサーバ404−1〜404−4に振り分けることができる。
APサーバ404−1〜404−4は、並列処理に適したサーバOSを搭載した情報処理装置であり、ロードバランサ403から受信した処理要求に基づいて、アプリケーションを実行する。
図6は、ラウンドロビン型及びスティッキー型の2種類の選択アルゴリズムが適用される場合の、図4のロードバランサ403による負荷分散処理の例を示すフローチャートである。
ロードバランサ403は、クライアント401からHTTPリクエストを受信し(ステップ601)、そのHTTPリクエストからクッキー情報等のセッションIDを抽出する(ステップ602)。そして、抽出したセッションIDがセッションDB411に登録された最新のセッションIDと一致するか否かをチェックする(ステップ603)。
抽出したセッションIDが最新のセッションIDでなければ(ステップ603,No)、ラウンドロビン型の選択アルゴリズムにより振り分け先APサーバ404を選択する(ステップ604)。そして、セッションIDと、選択したAPサーバ404のサーバIDとを対応付けて、セッションDB411に登録し(ステップ605)、そのAPサーバ404にHTTPリクエストを送信する(ステップ606)。
一方、抽出したセッションIDが最新のセッションIDであれば(ステップ603,Yes)、HTTPリクエストからURLを抽出し、戦略情報412を参照して、そのURLに対応する選択アルゴリズムを取得する(ステップ608)。そして、取得した選択アルゴリズムがラウンドロビン型又はスティッキー型のいずれであるかをチェックする(ステップ609)。
選択アルゴリズムがラウンドロビン型であれば(ステップ609,Yes)、ラウンドロビン型の選択アルゴリズムにより振り分け先APサーバ404を選択し(ステップ610)、ステップ606の処理を行う。一方、選択アルゴリズムがスティッキー型であれば(ステップ609,No)、セッションDB411からセッションIDに対応するサーバIDを取得し、そのサーバIDが示すAPサーバ404を振り分け先に決定する(ステップ611)。そして、ステップ606の処理を行う。
図7は、図4のAPサーバ404によるアプリケーション実行処理の例を示すフローチャートである。APサーバ404は、ロードバランサ403からHTTPリクエストを受信し(ステップ701)、そのHTTPリクエストにより要求される処理を実行する(ステップ702)。そして、処理結果を含むHTTPレスポンスをロードバランサ403に送信する(ステップ703)。
このような情報処理システムによれば、1台のロードバランサ403により、アクセス先のURL毎にAPサーバ404の選択アルゴリズムを切り替えることができる。このため、例えば、オンプレミスでスティッキー型の選択アルゴリズムに基づき動作していたアプリケーションをクラウドに移行する場合に、アプリケーションをURLに対応する部分毎に分割して、部分毎に異なる選択アルゴリズムを採用することができる。したがって、大規模なアプリケーションであっても一部のみの改変で対応することが可能になり、改変に要する負担が軽減される。例えば、アプリケーションを2つに分割してその一方のみを改変すれば、改変に要する負担は半分に軽減される。
また、この情報処理システムをクラウド環境で運用する場合、既存のアプリケーションと新規なアプリケーションの両方を搭載したプラットフォームを構築することができる。
図8は、情報処理システムの別の構成例を示している。図8の情報処理システムは、図4の情報処理システムにデータベース(DB)サーバ801を追加した構成を有する。
APサーバ404は、ロードバランサ403から受信した処理要求に基づいてデータ要求を生成し、DBサーバ801に送信する。DBサーバ801は、並列処理に適したサーバOSを搭載した情報処理装置であり、リレーショナルデータベース(RDB)等のDBを保持する。DBサーバ801は、APサーバ404から受信したデータ要求に対するデータ応答を生成して、APサーバ404に返信する。
このような情報処理システムにおいても、図4の情報処理システムと同様に、ロードバランサ403により、アクセス先のURL毎にAPサーバ404の選択アルゴリズムを切り替えることができる。
図4及び図8の情報処理システムは4台のAPサーバを含んでいるが、実施形態の情報処理システムに含まれるAPサーバの数は3台以下の場合もあり、5台以上の場合もある。実際の情報処理システムでは、システムへの負荷に合わせてAPサーバの台数が決定される。クラウド環境では、APサーバの台数が柔軟に増減される場合もある。
次に、図9から図15までを参照しながら、ロードバランサ403が戦略情報412を生成する構成と動作について説明する。
図9は、このような情報処理システムにおけるロードバランサ403とAPサーバ404−1及び404−2の機能的構成例を示している。APサーバの数が3台以上の場合も、同様の機能的構成が用いられる。
図9のロードバランサ403は、図2の情報処理装置に対応し、DBリクエスト管理部911及びHTTPレスポンス管理部912を含む。ロードバランサ403は、DBリクエスト情報913及びHTTPレスポンス情報914を用いて、戦略情報412を生成する。
DBリクエスト管理部911は、APサーバ404がDBサーバ801に送信したDBリクエストと、APサーバ404がDBサーバ801から受信したDBレスポンスとを、DBリクエスト情報913として格納する。DBリクエストには、クエリやデータ更新処理命令等が含まれる。
ロードバランサ403は、同一のHTTPリクエストをAPサーバ404−1及び404−2に送信することができる。HTTPレスポンス管理部912は、APサーバ404−1及び404−2に送信されたHTTPリクエストに対する応答であるHTTPレスポンスを、HTTPレスポンス情報914として格納する。
APサーバ404−i(i=1,2)には1つ以上のアプリケーションがデプロイされており、URL等のルールに応じて対応するアプリケーションが起動される。アプリケーションには、DBサーバ801にDBリクエストを送信するプログラムが記述されている。APサーバ404−iは、DBリクエストブロック部921−i、DBリクエスト取得部922−i、DBレスポンス処理部923−i、及びHTTPレスポンス処理部924−iを含む。
DBリクエストブロック部921−iは、所定の条件に従って、DBサーバ801に対するDBリクエストの送信を遮断する。DBリクエスト取得部922−iは、DBサーバ801に送信されたDBリクエストとDBサーバ801から受信したDBレスポンスとを取得する。DBレスポンス処理部923−iは、ブロックされたDBリクエストに対して、ダミーのDBレスポンスを返却する。HTTPレスポンス処理部924−iは、DBレスポンスからHTTPレスポンスを生成して、ロードバランサ403に送信する。
図10は、HTTPレスポンス情報914の例を示している。図10のDBリクエスト情報914には、セッションID、セッション内画面ID、サーバID、HTTPリクエスト、及びHTTPレスポンスが対応付けられて登録される。
1つのセッションにおいてクライアント401から複数のHTTPリクエストが送信される場合、クライアント401の表示装置には、複数のHTTPレスポンスに対応して複数の画面が順に表示されることがある。このような画面遷移が行われる場合、セッション内画面IDによりそれぞれの画面が識別される。
サーバIDは、HTTPリクエストの送信先のAPサーバ404を示しており、APサーバ404−1及び404−2のサーバIDは、それぞれ“A”及び“B”である。HTTPリクエストには、アクセス先のURLが含まれている。HTTPレスポンスは、例えば、HTTPリクエストに対する応答画面を表示するためのHyperText Markup Language(HTML)ファイルである。
図11は、DBリクエスト情報913の例を示している。図10のDBリクエスト情報913には、セッションID、セッション内画面ID、DBリクエスト、及びDBレスポンスが対応付けられて登録される。
図9の情報処理システムでは、URL毎に正しい選択アルゴリズムを適用可能な戦略情報412を生成することが望ましい。そこで、1人のユーザがセッションを継続しながら一連の操作を行う場合に、同一のAPサーバ404−1ですべての処理を実行したときの処理結果と、1画面毎にAPサーバ404−1及び404−2を切り替えて処理を実行したときの処理結果を比較する。そして、両方の処理結果が一致していれば、ラウンドロビン型の選択アルゴリズムを適用可能と判断する。
この場合、2回目のHTTPリクエストに対して、APサーバ404−1による処理結果とAPサーバ404−2による処理結果が比較される。ただし、各APサーバ404がそれぞれDBサーバ801に問い合わせを行うと、APサーバ404間でDBサーバ801における処理結果が変化することがあり得る。
例えば、1回目のHTTPリクエストでログインし、2回目のHTTPリクエストで商品をショッピングカートに入れて在庫引き当てを行うアプリケーションを想定する。1回目のHTTPリクエストはAPサーバ404−1で処理される。
2回目のHTTPリクエストについては、最初に、APサーバ404−1で処理され、得られたHTTPレスポンスがHTTPレスポンス情報914に登録される。次に、APサーバ404−1に送信されたHTTPリクエストと同一のHTTPリクエストが、ロードバランサ403からAPサーバ404−2に送信され、得られたHTTPレスポンスがHTTPレスポンス情報914に登録される。そして、2つのHTTPレスポンスが比較される。
ところが、2回目のHTTPレスポンスをAPサーバ404−1が処理したときに、DBサーバ801の在庫を減らして、商品の数を1から0に変更すると、次に同じ処理をAPサーバ404−2が行ったときに、商品をショッピングカートに入れることができない。このため、本来一致すべき2つのHTTPレスポンスが異なってしまい、ラウンドロビン型で処理できるURLであっても、スティッキー型を採用せざるを得なくなる。
そこで、1つのHTTPリクエストに対して、DBサーバ801への問い合わせは1回のみ行い、その応答をAPサーバ404間で利用できるようにすることが好ましい。この場合、APサーバ404−1及び404−2がともにDBサーバ801に問い合わせを行うのではなく、APサーバ404−1によるDBリクエストに対するDBレスポンスを保存しておき、それをAPサーバ404−2からのDBレスポンスとして利用する。このとき、DBリクエストブロック部921−2は、APサーバ404−2からのDBリクエストの送信を遮断する。
図12及び図13は、ラウンドロビン型及びスティッキー型の2種類の選択アルゴリズムが適用される場合の、図9のロードバランサ403による負荷分散処理の例を示すフローチャートである。
ロードバランサ403は、クライアント401からHTTPリクエストを受信し(図12のステップ1201)、そのHTTPリクエストからセッションIDとURLを抽出する(ステップ1202)。そして、抽出したセッションIDがHTTPレスポンス情報914に登録された最新のセッションIDと一致するか否かをチェックする(ステップ1203)。
抽出したセッションIDが最新のセッションIDでなければ(ステップ1203,No)、ラウンドロビン型の選択アルゴリズムにより振り分け先APサーバ404を選択する(ステップ1204)。そして、そのAPサーバ404に、セッションID、セッション内画面ID、及びHTTPリクエストを送信する(ステップ1205)。
このとき、HTTPレスポンス管理部912は、セッションIDと、セッション内画面IDと、選択したAPサーバ404のサーバIDと、HTTPリクエストとを対応付けて、HTTPレスポンス情報914に登録する。また、抽出したURLとラウンドロビン型の選択アルゴリズムとを対応付けて戦略情報412に登録する。
次に、ロードバランサ403は、振り分け先APサーバ404から、セッションID及びセッション内画面IDとともに、送信したHTTPリクエストに基づくDBリクエストを受信する(ステップ1206)。このとき、DBリクエスト管理部911は、受信したセッションID、セッション内画面ID、及びDBリクエストを対応付けて、DBリクエスト情報913に登録する。
次に、ロードバランサ403は、振り分け先APサーバ404から、セッションID及びセッション内画面IDとともに、DBリクエストに対するDBサーバ801からの応答であるDBレスポンスを受信する(ステップ1207)。このとき、DBリクエスト管理部911は、DBリクエスト情報913に登録されているセッションID、セッション内画面ID、及びDBリクエストと対応付けて、受信したDBレスポンスを追加登録する。
次に、ロードバランサ403は、振り分け先APサーバ404から、セッションID及びセッション内画面IDとともに、HTTPリクエストに対するHTTPレスポンスを受信する(ステップ1208)。このとき、HTTPレスポンス管理部912は、HTTPレスポンス情報914に登録されているセッションID、セッション内画面ID、サーバID、及びHTTPリクエストと対応付けて、受信したHTTPレスポンスを追加登録する。
一方、抽出したセッションIDが最新のセッションIDであれば(ステップ1203,Yes)、ロードバランサ403は、抽出したURLが戦略情報412に登録されているか否かをチェックする(ステップ1209)。抽出したURLが戦略情報412に登録されていれば(ステップ1209,Yes)、戦略情報412からそのURLに対応する選択アルゴリズムを取得する(ステップ1210)。そして、取得した選択アルゴリズムがラウンドロビン型又はスティッキー型のいずれであるかをチェックする(ステップ1211)。
選択アルゴリズムがラウンドロビン型であれば(ステップ1211,Yes)、ラウンドロビン型の選択アルゴリズムにより振り分け先APサーバ404を選択し(ステップ1212)、ステップ1205以降の処理を行う。一方、選択アルゴリズムがスティッキー型であれば(ステップ1211,No)、HTTPレスポンス情報914からセッションIDに対応するサーバIDを取得し、そのサーバIDが示すAPサーバ404を振り分け先に決定する(ステップ1213)。そして、ステップ1205以降の処理を行う。
一方、抽出したURLが戦略情報412に登録されていなければ(ステップ1209,No)、ロードバランサ403は、最初にスティッキー型の選択アルゴリズムに基づき、振り分け先のAPサーバ404を選択する(ステップ1301)。この場合、ステップ1213と同様に、HTTPレスポンス情報914からセッションIDに対応するサーバIDを取得し、そのサーバIDが示すAPサーバ404を振り分け先に決定する。そして、ステップ1302〜1305の処理を行う。ステップ1302〜1305の処理は、ステップ1205〜1208の処理と同様である。
次に、ロードバランサ403は、ラウンドロビン型の選択アルゴリズムにより振り分け先APサーバ404を選択し(ステップ1306)、そのAPサーバ404に、セッションID、セッション内画面ID、及びHTTPリクエストを送信する(ステップ1307)。このとき、HTTPレスポンス管理部912は、セッションIDと、セッション内画面IDと、選択したAPサーバ404のサーバIDと、HTTPリクエストとを対応付けて、HTTPレスポンス情報914に登録する。
次に、ロードバランサ403は、振り分け先APサーバ404から、セッションID及びセッション内画面IDとともに、送信したHTTPリクエストに基づくDBリクエストを受信する(ステップ1308)。
そして、DBリクエスト管理部911は、受信したセッションID、セッション内画面ID、及びDBリクエストの組み合わせがDBリクエスト情報913に登録されているか否かをチェックする(ステップ1309)。その組み合わせがDBリクエスト情報913に登録されていれば(ステップ1309,Yes)、DBリクエスト情報913から対応するDBレスポンスを取得して、振り分け先APサーバ404に送信する(ステップ1310)。
次に、ロードバランサ403は、振り分け先APサーバ404から、セッションID及びセッション内画面IDとともに、HTTPリクエストに対するHTTPレスポンスを受信する(ステップ1311)。このとき、HTTPレスポンス管理部912は、HTTPレスポンス情報914に登録されているセッションID、セッション内画面ID、サーバID、及びHTTPリクエストと対応付けて、受信したHTTPレスポンスを追加登録する。
次に、HTTPレスポンス管理部912は、ステップ1305で登録されたHTTPレスポンスと、ステップ1311で登録されたHTTPレスポンスとを比較する(ステップ1312)。そして、2つのHTTPレスポンスが一致すれば(ステップ1312,Yes)、そのURLに対してラウンドロビン型の選択アルゴリズムを適用可能と判断し、URLとラウンドロビン型の選択アルゴリズムとを対応付けて戦略情報412に登録する(ステップ1313)。
一方、2つのHTTPレスポンスが一致しなければ(ステップ1312,No)、そのURLに対してラウンドロビン型の選択アルゴリズムを適用不可能と判断し、URLとスティッキー型の選択アルゴリズムとを対応付けて戦略情報412に登録する(ステップ1314)。また、受信したセッションID、セッション内画面ID、及びDBリクエストの組み合わせがDBリクエスト情報913に登録されていない場合も(ステップ1309,No)、ステップ1314の処理を行う。
図14は、図9のAPサーバ404によるアプリケーション実行処理の例を示すフローチャートである。APサーバ404は、ロードバランサ403から、セッションID、セッション内画面ID、及びHTTPリクエストを受信する(ステップ1401)。
DBリクエストブロック部921は、受信したHTTPリクエストからDBリクエストを生成して(ステップ1402)、セッションID及びセッション内画面IDとともに、ロードバランサ403に送信する(ステップ1403)。そして、ロードバランサ403からDBレスポンスを受信したか否かをチェックする(ステップ1404)。
DBレスポンスを受信しなければ(ステップ1404,No)、DBリクエストブロック部921は、生成したDBリクエストをDBサーバ801に送信する(ステップ1407)。そして、APサーバ404は、DBサーバ801から、DBリクエストに対するDBレスポンスを受信する(ステップ1408)。
DBリクエスト取得部923は、DBサーバ801に送信されたDBリクエストと、DBサーバ801から受信したDBレスポンスとを取得する。そして、DBレスポンスをアプリケーションに返却するとともに、セッションID及びセッション内画面IDとともに、DBレスポンスをロードバランサ403に送信する(ステップ1409)。
一方、ロードバランサ403からDBレスポンスを受信すれば(ステップ1404,Yes)、DBリクエストブロック部921は、そのDBレスポンスをDBレスポンス処理部923に転送する(ステップ1405)。そして、DBレスポンス処理部923は、転送されたDBレスポンスを、DBサーバ801からのDBレスポンスとしてアプリケーションに返却する。
次に、HTTPレスポンス処理部924は、DBレスポンスからHTTPレスポンスを生成して、セッションID及びセッション内画面IDとともに、ロードバランサ403に送信する(ステップ1406)。
ロードバランサ403は、HTTPレスポンスをクライアント401に送信し、クライアント401は、受信したHTTPレスポンスに含まれるHTMLファイルに基づいて画面をレンダリングし、処理結果を表示する。
ところで、振り分け先APサーバ404のアプリケーションがラウンドロビン型で動作しないアプリケーションの場合、セッションID等のセッション情報をAPサーバ404内に保持しておき、その情報に基づいて要求された処理を実行することが多い。
この場合、ステップ1403で誤ったセッションID及びセッション内画面IDがロードバランサ403に送信され、ステップ1309の判定結果がNoとなる可能性がある。あるいはステップ1406で、誤ったセッションID及びセッション内画面ID、又は誤ったHTTPレスポンスがロードバランサ403に送信され、ステップ1312の判定結果がNoとなる可能性もある。このような場合には、ステップ1314でラウンドロビン型の選択アルゴリズムは適用不可能と判断され、スティッキー型の選択アルゴリズムが戦略情報412に登録される。
図12〜図14に示したフローチャートにおいて、必ずしもすべてのステップを実行する必要はなく、情報処理システムの構成や条件に応じて一部のステップを省略することも可能である。例えば、DBサーバ801に対する問い合わせが発生しない場合は、図12のステップ1206及び1207、図13のステップ1303、1304、及び1308〜1310、図14のステップ1402〜1405及び1407〜1409の処理を省略してもよい。
次に、図10のHTTPレスポンス情報914と図11のDBリクエスト情報913を用いて、戦略情報412の生成処理の具体例を説明する。図15は、この具体例において、ロードバランサ403とAPサーバ404の間で行われる通信と、APサーバ404とDBサーバ801の間で行われる通信の手順を示している。
手順1501−1:ロードバランサ403は、クライアント401から1回目のHTTPリクエストを受信する(ステップ1201)。1回目のHTTPリクエストのセッションIDは、図10のHTTPレスポンス情報914にまだ登録されていないため、ステップ1203の判定結果はNoとなる。そこで、ロードバランサ403は、受信したHTTPリクエストをAPサーバ404−1に送信する(ステップ1205)。そして、HTTPリクエストを、図10のHTTPレスポンス情報914のエントリ1001に登録し、URLとラウンドロビン型の選択アルゴリズムとを対応付けて、図5の戦略情報412のエントリ501に登録する。
手順1501−2:APサーバ404−1は、受信したHTTPリクエストを処理するアプリケーションを実行する。アプリケーション中にDBアクセスがあるため、APサーバ404−1は、DBリクエストをロードバランサ403に送信する(ステップ1403)。そして、ロードバランサ403は、受信したDBリクエストを、図11のDBリクエスト情報913のエントリ1101に登録する(ステップ1206)。
手順1501−3:ロードバランサ403からDBレスポンスを受信しないため、ステップ1404の判定結果はNoとなる。そこで、APサーバ404−1は、DBリクエストをDBサーバ801に送信する(ステップ1407)。
手順1501−4:APサーバ404−1は、DBサーバ801からDBレスポンスを受信する(ステップ1408)。
手順1501−5:APサーバ404−1は、DBレスポンス及びHTTPレスポンスをロードバランサ403に送信する(ステップ1409、1406)。そして、ロードバランサ403は、受信したDBレスポンスを、図11のDBリクエスト情報913のエントリ1101に追加登録する(ステップ1207)。また、受信したHTTPレスポンスを、図10のHTTPレスポンス情報914のエントリ1001に追加登録する(ステップ1208)。
手順1502−1:ロードバランサ403は、クライアント401から2回目のHTTPリクエストを受信する(ステップ1201)。2回目のHTTPリクエストのセッションIDは、図10のHTTPレスポンス情報914のエントリ1001のセッションIDと一致するため、ステップ1203の判定結果はYesとなる。また、2回目のHTTPリクエストのURLは、図5の戦略情報412にまだ登録されていないため、ステップ1209の判定結果はNoとなる。そこで、ロードバランサ403は、受信したHTTPリクエストを、1回目と同じAPサーバ404−1に送信する(ステップ1302)。そして、HTTPリクエストを、図10のHTTPレスポンス情報914のエントリ1002に登録する。
手順1502−2:APサーバ404−1は、受信したHTTPリクエストを処理するアプリケーションを実行する。アプリケーション中にDBアクセスがあるため、APサーバ404−1は、DBリクエストをロードバランサ403に送信する(ステップ1403)。そして、ロードバランサ403は、受信したDBリクエストを、図11のDBリクエスト情報913に登録する(ステップ1303)。
ところで、1つのHTTPリクエストを処理する際に複数のDBリクエストが発生することもあり得る。この例では、2回目のHTTPリクエストを処理する際に、図11のエントリ1102及び1103が示す2つのDBリクエストが生成されている。エントリ1102のDBリクエストは、在庫を確認するDBリクエストであり、エントリ1103のDBリクエストは、在庫を引き当てるDBリクエストである。この場合、図11のDBリクエスト情報913のエントリ1102及び1103に、それぞれのDBリクエストが登録される。
在庫引き当てを行うアプリケーションではトランザクションが実行されることが多いが、その場合でも、トランザクションを分割して、それぞれのDBリクエストがDBリクエスト情報913に登録される。
手順1502−3:ロードバランサ403からDBレスポンスを受信しないため、ステップ1404の判定結果はNoとなる。そこで、APサーバ404−1は、2つのDBリクエストをDBサーバ801に送信する(ステップ1407)。
手順1502−4:APサーバ404−1は、DBサーバ801から2つのDBレスポンスを受信する(ステップ1408)。
手順1502−5:APサーバ404−1は、2つのDBレスポンスとHTTPレスポンスとをロードバランサ403に送信する(ステップ1409、1406)。そして、ロードバランサ403は、受信した2つのDBレスポンスを、図11のDBリクエスト情報913のエントリ1102及び1103に追加登録する(ステップ1304)。また、受信したHTTPレスポンスを、図10のHTTPレスポンス情報914のエントリ1002に追加登録する(ステップ1305)。
手順1503−1:次に、ロードバランサ403は、2回目のHTTPリクエストを別のAPサーバ404−2に送信する(ステップ1307)。そして、HTTPリクエストを、図10のHTTPレスポンス情報914のエントリ1003に登録する。
手順1503−2:APサーバ404−2は、受信したHTTPリクエストを処理するアプリケーションを実行する。アプリケーション中に2つのDBアクセスがあるため、APサーバ404−2は、2つのDBリクエストをロードバランサ403に送信する(ステップ1403)。
手順1503−3:このとき、図11のDBリクエスト情報913のエントリ1102及び1103に、それぞれのDBリクエストが登録されているため、ロードバランサ403は、それらのDBレスポンスをAPサーバ404−2に送信する(ステップ1310)。
手順1503−4:ロードバランサ403からDBレスポンスを受信すると、ステップ1404の判定結果はYesとなる。そこで、APサーバ404−2は、受信した2つのDBレスポンスを用いてHTTPレスポンスを生成し、ロードバランサ403に送信する(ステップ1405、1406)。この場合、DBサーバ801へのDBリクエストの送信は遮断される。ロードバランサ403は、受信したHTTPレスポンスを、図10のHTTPレスポンス情報914のエントリ1003に追加登録する(ステップ1311)。
このとき、HTTPレスポンス情報914に登録されたエントリ1002のHTTPレスポンスとエントリ1003のHTTPレスポンスとが一致するため、ステップ1312の判定結果はYesとなる。そこで、ロードバランサ403は、2回目のHTTPリクエストのURLとラウンドロビン型の選択アルゴリズムとを対応付けて、戦略情報412のエントリ502に登録する(ステップ1313)。
その後、別のクライアントにより別のセッションが開始された場合、そのセッションのURLが戦略情報412に登録されていれば(ステップ1209,Yes)、対応する選択アルゴリズムを適用することができる。URLが戦略情報412に登録されていない場合は(ステップ1209,No)、図15と同様の手順で処理を行うことで、URLと選択アルゴリズムを戦略情報412に追加登録することができる。
ロードバランサ403が戦略情報412を生成することで、アプリケーションの開発者が戦略情報412を入力する作業が不要になる。特に大規模なアプリケーションの場合、多数のURLの各々に対して選択アルゴリズムを入力する作業が発生するため、その時間を削減することで作業効率が向上する。
上述した具体例では、1つのセッション中の2つの画面について戦略情報412を生成する場合の構成と動作を説明した。しかし、現実のアプリケーションはより複雑であり、1つのセッションで10画面〜数十画面を切り替えながら処理を行うことが多い。
このような場合でも、画面の数(HTTPリクエストの数)と同じ数のAPサーバを用意して、図13のステップ1306においてHTTPリクエスト毎に異なるAPサーバを振り分け先に決定すれば、同様にして戦略情報412を生成することが可能である。しかし、実際に画面の数と同じ数のAPサーバを用意することは、サーバコスト、設置場所、消費電力等の観点から難しいと考えられる。
そこで、画面の数がAPサーバの数より多い場合に、テストシナリオに従って複数のHTTPリクエストを順に処理するテストを繰り返し、戦略情報412を生成する方法が考えられる。
この場合、ロードバランサ403は、各APサーバに振り分けるHTTPリクエストの組み合わせを変更しながら、複数のHTTPリクエストを複数のAPサーバに振り分ける処理を複数回繰り返す。そして、それぞれの振り分け処理について、複数のAPサーバからすべてのHTTPリクエストに対するHTTPレスポンスを受信する。ロードバランサ403は、受信したHTTPレスポンスが、すべてのHTTPリクエストを同一のAPサーバで処理した場合のHTTPレスポンスと一致すれば、それらのHTTPリクエストのURLに対してラウンドロビン型の選択アルゴリズムを適用可能と判断する。
図16は、このような情報処理システムにおけるロードバランサ403の機能的構成例を示している。図16のロードバランサ403は、図9のロードバランサ403にセッションID変換部1621を追加した構成を有し、DBリクエスト情報913、HTTPレスポンス情報914、テストシナリオ1622、及び順序情報1623を用いて戦略情報412を生成する。
なお、図16の情報処理システムは4台のAPサーバ404−1〜404−4を含んでいるが、APサーバの数が3台以下又は5台以上の場合も、同様の機能的構成が用いられる。
クライアント401には、テストシナリオ1611を自動実行するアプリケーションがインストールされている。テストシナリオ1611には、1つのセッションで使用されるHTTPリクエストの配列が記録されており、クライアント401は、それらのHTTPリクエストを順にロードバランサ403に送信する。
テストは複数回に分けて行われる。1回目のテストでは、クライアント401がテストシナリオ1611に従ってHTTPリクエストを順に送信し、ロードバランサ403は、受信したすべてのHTTPリクエストを同一のAPサーバに送信する。そして、各HTTPリクエストに基づいて発生したDBリクエスト及びDBレスポンスを、DBリクエスト情報913に登録し、HTTPリクエスト及びHTTPレスポンスをHTTPレスポンス情報914に登録する。このとき、ロードバランサ403は、受信したHTTPリクエストをテストシナリオ1622に登録しておく。
2回目のテストでは、ロードバランサ403は、テストシナリオ1622に登録されたHTTPリクエストを、ラウンドロビン型の選択アルゴリズムによりAPサーバ404−1〜404−4に振り分ける。このとき、APサーバ404により1回目のテストと2回目のテストが同一セッションとして扱われることを防ぐために、セッションID変換部1621は、2回目以降のテストにおけるセッションIDを変更する。例えば、HTTPリクエストにクッキー情報を新規に付加することで、セッションIDを変更することができる。
2回目のテストでは、例えば、APサーバ404−1、404−2、404−3、404−4の順にHTTPリクエストが振り分けられる。HTTPリクエストの数がAPサーバの数より多い場合は、再びAPサーバ404−1に戻って、残りのHTTPリクエストが順に振り分けられる。このとき、各APサーバ404が処理したHTTPリクエストの組み合わせと処理順序を、順序情報1623に登録しておく。
例えば、テストシナリオ1622に10個のHTTPリクエストR1〜R10が含まれている場合、1、5、及び9番目のHTTPリクエストがAPサーバ404−1に送信され、2、6、及び10番目のHTTPリクエストがAPサーバ404−2に送信される。また、3及び7番目のHTTPリクエストがAPサーバ404−3に送信され、4及び8番目のHTTPリクエストがAPサーバ404−4に送信される。
APサーバ404−1、404−2、404−3、及び404−4のサーバIDをそれぞれ“A”、“B”、“C”、及び“D”とすると、これらの4つのグループのHTTPリクエストが、下記のように順序情報1623に登録される。
A:R1、R5、R9
B:R2、R6、R10
C:R3、R7
D:R4、R8
2回目のテストにおけるすべてのHTTPレスポンスが、1回目のテストにおけるすべてのHTTPレスポンスと一致すれば、テストシナリオ1622に含まれるすべてのHTTPリクエストのURLに対して、ラウンドロビン型の選択アルゴリズムを適用可能と判断できる。
ただし、同一のAPサーバ404で処理されたHTTPリクエストについては、それらがそれぞれ異なるAPサーバ404で処理された場合に同じHTTPレスポンスが得られることが保証されないため、3回目以降のテストを行うことが望ましい。
3回目のテストでは、順序情報1623に登録されたHTTPリクエストのうち、同一のグループに含まれるHTTPリクエストがそれぞれ異なるAPサーバ404に送信されるように、HTTPリクエストが振り分けられる。
この場合、R1、R5、及びR9がそれぞれ異なるAPサーバ404に送信され、R2、R6、及びR10がそれぞれ異なるAPサーバ404に送信される。また、R3及びR7がそれぞれ異なるAPサーバ404に送信され、R4及びR8がそれぞれ異なるAPサーバ404に送信される。そこで、例えば、下記のようにHTTPリクエストを振り分ければよい。
A:R1、R2、R3、R4
B:R5、R6、R7、R8
C:R9、R10
2回目及び3回目のテストにおけるすべてのHTTPレスポンスが、1回目のテストにおけるすべてのHTTPレスポンスと一致すれば、すべてのURLに対して、ラウンドロビン型の選択アルゴリズムを適用可能と判断できる。
3回目以降のテストにこのようなルールを順次適用することで、16個以内のHTTPリクエストであれば、3回以下のテストにより十分な組み合わせを実現できる。さらに4回目のテストを行えば、64個までのHTTPリクエストに対して十分な組み合わせを実現可能である。
ロードバランサ403は、2回目以降の各テストにおけるすべてのHTTPレスポンスが、1回目のテストにおけるすべてのHTTPレスポンスと一致すれば、すべてのURLとラウンドロビン型の選択アルゴリズムとを対応付けて戦略情報412に登録する。一方、いずれかのテストにおけるいずれかのHTTPレスポンスが、1回目のテストにおけるHTTPレスポンスと一致しなければ、すべてのURLとスティッキー型の選択アルゴリズムとを対応付けて戦略情報412に登録する。
図17は、ラウンドロビン型及びスティッキー型の2種類の選択アルゴリズムが適用される場合の、図16のロードバランサ403によるテストシナリオ実行処理の例を示すフローチャートである。図17のフローチャートでは、DBリクエスト、DBレスポンス、及びHTTPレスポンスに関する処理が省略されているが、それらの処理については図12及び図13と同様である。
ロードバランサ403は、クライアント401からHTTPリクエストを受信し、そのHTTPリクエストをテストシナリオ1622に登録する(ステップ1701)。そして、ラウンドロビン型の選択アルゴリズムにより振り分け先APサーバ404を選択し、そのAPサーバ404にHTTPリクエストを送信する(ステップ1702)。
次に、クライアント401からテストシナリオ1611に含まれる最後のHTTPリクエストを受信したか否かをチェックし(ステップ1703)、受信していなければ(ステップ1703,No)、ステップ1701及び1702の処理を繰り返す。これにより、テストシナリオ1611に含まれるすべてのHTTPリクエストが同一のAPサーバ404に送信され、そのAPサーバ404からそれぞれのHTTPリクエストに対するHTTPレスポンスを受信する。
最後のHTTPリクエストを受信すると(ステップ1703,Yes)、ロードバランサ403は、ラウンドロビン型の選択アルゴリズムに基づいてテストを行う(ステップ1704)。このテストでは、テストシナリオ1622に登録されたHTTPリクエストがAPサーバ404−1〜404−4に振り分けて送信され、APサーバ404−1〜404−4からそれぞれのHTTPリクエストに対するHTTPレスポンスを受信する。
次に、ロードバランサ403は、各APサーバ404に振り分けられた同一グループのHTTPリクエストが、既にそれぞれ異なるAPサーバ404に振り分け済みか否かをチェックする(ステップ1705)。同一グループのHTTPリクエストを異なるAPサーバ404に振り分け済みでなければ(ステップ1705,No)、ステップ1704のテストを繰り返す。繰り返しのテストでは、同一グループのHTTPリクエストが異なるAPサーバ404に振り分けられるように、各APサーバに振り分けるHTTPリクエストの組み合わせが変更される。
各テストにおける同一グループのHTTPリクエストがそれぞれ異なるAPサーバ404に振り分け済みであれば(ステップ1705,Yes)、各テストで受信したHTTPレスポンスをチェックする(ステップ1706)。このとき、各テストにおけるすべてのHTTPレスポンスが、ステップ1701〜1703で受信したすべてのHTTPレスポンスと比較される。
そして、各テストにおけるすべてのHTTPレスポンスが、ステップ1701〜1703で受信したすべてのHTTPレスポンスと一致すれば、すべてのURLとラウンドロビン型の選択アルゴリズムとを対応付けて戦略情報412に登録する(ステップ1707)。一方、いずれかのテストにおけるいずれかのHTTPレスポンスが、ステップ1701〜1703で受信したHTTPレスポンスと一致しなければ、すべてのURLとスティッキー型の選択アルゴリズムとを対応付けて戦略情報412に登録する(ステップ1708)。
図16の情報処理システムによれば、テストシナリオ1611に含まれるHTTPリクエストの数がAPサーバの数より多い場合でも、最も効率的なテスト回数で、ラウンドロビン型の選択アルゴリズムを適用可能か否かを判断することができる。
なお、HTTPリクエストの数がAPサーバの数以下の場合は、ステップ1704のテストを1回行うだけで、すべてのHTTPリクエストをそれぞれ異なるAPサーバ404に振り分けられる。この場合、ステップ1705の判定結果はYesとなり、直ちにステップ1706以降の処理が行われる。
図2〜図16の実施形態において、HTTPリクエストの代わりにコマンドが用いられる場合は、戦略情報412のURLの代わりにコマンドの文字列が用いられ、HTTPレスポンスの代わりにコマンドに対する応答が用いられる。
図2の情報処理装置201、図4、図8、図9、及び図16のクライアント401、ロードバランサ403、APサーバ404、及びDBサーバ801は、例えば、図18に示すような情報処理装置(コンピュータ)を用いて実現可能である。
図18の情報処理装置は、Central Processing Unit (CPU)1801、メモリ1802、入力装置1803、出力装置1804、外部記憶装置1805、媒体駆動装置1806、及びネットワーク接続装置1807を備える。これらはバス1808により互いに接続されている。
メモリ1802は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。例えば、CPU1801は、メモリ1802を利用してプログラムを実行することにより、クライアント401、ロードバランサ403、APサーバ404、又はDBサーバ801の処理を行う。メモリ1802は、図2の格納部214としても使用でき、セッションDB411、戦略情報412、DBリクエスト情報913、HTTPレスポンス情報914、テストシナリオ1611、1622、及び順序情報1623を格納することもできる。
入力装置1803は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示や情報の入力に用いられる。出力装置1804は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせや処理結果の出力に用いられる。クライアント401の処理結果には、HTTPレスポンスに基づいてレンダリングされた画面も含まれる。
外部記憶装置1805は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。この外部記憶装置1805には、ハードディスクドライブも含まれる。情報処理装置は、この外部記憶装置1805にプログラム及びデータを格納しておき、それらをメモリ1802にロードして使用することができる。
媒体駆動装置1806は、可搬型記録媒体1809を駆動し、その記録内容にアクセスする。可搬型記録媒体1809は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体1809には、Compact Disk Read Only Memory (CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等も含まれる。ユーザ又はオペレータは、この可搬型記録媒体1809にプログラム及びデータを格納しておき、それらをメモリ1802にロードして使用することができる。
このように、各種処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体には、メモリ1802、外部記憶装置1805、及び可搬型記録媒体1809のような、物理的な(非一時的な)記録媒体が含まれる。
ネットワーク接続装置1807は、Local Area Network(LAN)、インターネット等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置1807を介して受け取り、それらをメモリ1802にロードして使用することもできる。
なお、情報処理装置が図18のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、情報処理装置がロードバランサ403、APサーバ404、又はDBサーバ801として使用される場合は、入力装置1803及び出力装置1804を省略してもよい。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
101、401 クライアント
102、402 通信ネットワーク
103、403 ロードバランサ
104−1〜104−4、404−1〜404−4 APサーバ
201 情報処理装置
211 受信部
212 選択部
213 送信部
214 格納部
411 セッションDB
412 戦略情報
501〜505、1001〜1003、1101〜1103 エントリ
801 DBサーバ
911 DBリクエスト管理部
912 HTTPレスポンス管理部
913 DBリクエスト情報
914 HTTPレスポンス情報
921−1、921−2 DBリクエストブロック部
922−1、922−2 DBリクエスト取得部
923−1、923−2 DBレスポンス処理部
924−1、924−2 HTTPレスポンス処理部
1611、1622 テストシナリオ
1621 セッションID変換部
1623 順序情報
1801 CPU
1802 メモリ
1803 入力装置
1804 出力装置
1805 外部記憶装置
1806 媒体駆動装置
1807 ネットワーク接続装置
1808 バス
1809 可搬型記録媒体

Claims (6)

  1. コンピュータのためのプログラムであって、
    前記プログラムは、
    クライアントから第1の処理要求を受信し、
    要求される処理を示す処理識別情報と、複数のサーバの中から前記クライアントの識別情報に基づいて同一のクライアントにより要求された処理を実行するサーバとして同一のサーバを選択する第1の選択アルゴリズム、又は前記複数のサーバの中からラウンドロビン方式でサーバを選択する第2の選択アルゴリズムのいずれか一方との対応関係を格納する格納手段から、前記第1の処理要求により指定される処理識別情報に対応する選択アルゴリズムを取得し、取得した選択アルゴリズムに基づいて、前記複数のサーバの中から、該第1の処理要求により要求された処理を実行するサーバを選択し、
    選択されたサーバに前記第1の処理要求を送信する
    処理を前記コンピュータに実行させ、
    前記プログラムは、
    前記格納手段に前記対応関係を登録するとき、前記クライアントから受信する第2の処理要求を、前記第1の選択アルゴリズムにより選択される第1のサーバと前記第2の選択アルゴリズムにより選択される第2のサーバに送信し、
    前記第1のサーバ及び前記第2のサーバから前記第2の処理要求に対する第1の処理結果及び第2の処理結果をそれぞれ受信し、
    前記第1の処理結果と前記第2の処理結果が一致しているとき、前記第2の処理要求により要求される処理を示す処理識別情報と前記第2の選択アルゴリズムとを対応付けて前記格納手段に登録する
    処理を前記コンピュータにさらに実行させることを特徴とするプログラム。
  2. 前記コンピュータは、前記クライアントから受信する前記第2の処理要求に基づいてデータベースに対するデータ要求が発生する場合、前記第1のサーバが前記データ要求を前記データベースに送信して該データベースから受信したデータ応答を含む、前記第1の処理結果を前記第1のサーバから受信し、前記データ応答を前記第2のサーバに送信し、前記データ応答を含む前記第2の処理結果を前記第2のサーバから受信することを特徴とする請求項記載のプログラム。
  3. コンピュータのためのプログラムであって、
    前記プログラムは、
    クライアントから処理要求を受信し、
    要求される処理を示す処理識別情報と、複数のサーバの中から前記クライアントの識別情報に基づいて同一のクライアントにより要求された処理を実行するサーバとして同一のサーバを選択する第1の選択アルゴリズム、又は前記複数のサーバの中からラウンドロビン方式でサーバを選択する第2の選択アルゴリズムのいずれか一方との対応関係を格納する格納手段から、前記処理要求により指定される処理識別情報に対応する選択アルゴリズムを取得し、取得した選択アルゴリズムに基づいて、前記複数のサーバの中から、該処理要求により要求された処理を実行するサーバを選択し、
    選択されたサーバに前記処理要求を送信する
    処理を前記コンピュータに実行させ、
    前記プログラムは、
    前記格納手段に前記対応関係を登録するとき、1つのセッションで前記クライアントから受信する複数の処理要求を、前記複数のサーバのうち前記第1の選択アルゴリズムにより選択される第1のサーバに送信し、
    前記第1のサーバから前記複数の処理要求に対する第1の複数の処理結果を受信し、
    前記複数の処理要求を前記複数のサーバに振り分けて送信し、
    前記複数のサーバから前記複数の処理要求に対する第2の複数の処理結果を受信し、
    前記第1の複数の処理結果と前記第2の複数の処理結果が一致しているとき、前記複数の処理要求の各々により要求される処理を示す処理識別情報と前記第2の選択アルゴリズムとを対応付けて前記格納手段に登録する
    処理を前記コンピュータにさらに実行させることを特徴とするプログラム。
  4. 前記コンピュータは、前記複数の処理要求の数が前記複数のサーバの数より多い場合、各サーバに振り分ける処理要求の組み合わせを変更しながら、前記複数の処理要求を前記複数のサーバに振り分けて送信する処理を複数回繰り返し、それぞれの繰り返しについて、前記複数のサーバから前記複数の処理要求に対する第2の複数の処理結果を受信し、前記第1の複数の処理結果と、それぞれの繰り返しについて受信した前記第2の複数の処理結果が一致しているとき、前記複数の処理要求の各々により要求される処理を示す処理識別情報と前記第2の選択アルゴリズムとを対応付けて前記格納手段に登録することを特徴とする請求項記載のプログラム。
  5. ライアントから第1の処理要求を受信する受信手段と、
    要求される処理を示す処理識別情報と、複数のサーバの中から前記クライアントの識別情報に基づいて同一のクライアントにより要求された処理を実行するサーバとして同一のサーバを選択する第1の選択アルゴリズム、又は前記複数のサーバの中からラウンドロビン方式でサーバを選択する第2の選択アルゴリズムのいずれか一方との対応関係を格納する格納手段と、
    前記格納手段から、前記第1の処理要求により指定される処理識別情報に対応する選択アルゴリズムを取得し、取得した選択アルゴリズムに基づいて、前記複数のサーバの中から、該第1の処理要求により要求された処理を実行するサーバを選択する選択手段と、
    選択されたサーバに前記第1の処理要求を送信する送信手段と
    前記格納手段に前記対応関係を登録するとき、前記クライアントから受信する第2の処理要求を、前記第1の選択アルゴリズムにより選択される第1のサーバと前記第2の選択アルゴリズムにより選択される第2のサーバに送信し、前記第1のサーバ及び前記第2のサーバから前記第2の処理要求に対する第1の処理結果及び第2の処理結果をそれぞれ受信し、前記第1の処理結果と前記第2の処理結果が一致しているとき、前記第2の処理要求により要求される処理を示す処理識別情報と前記第2の選択アルゴリズムとを対応付けて前記格納手段に登録する手段と
    を備えることを特徴とする情報処理装置。
  6. クライアントから第1の処理要求を受信し、
    要求される処理を示す処理識別情報と、複数のサーバの中から前記クライアントの識別情報に基づいて同一のクライアントにより要求された処理を実行するサーバとして同一のサーバを選択する第1の選択アルゴリズム、又は前記複数のサーバの中からラウンドロビン方式でサーバを選択する第2の選択アルゴリズムのいずれか一方との対応関係を格納する格納手段から、前記第1の処理要求により指定される処理識別情報に対応する選択アルゴリズムを取得し、取得した選択アルゴリズムに基づいて、前記複数のサーバの中から、該第1の処理要求により要求された処理を実行するサーバを選択し、
    選択されたサーバに前記第1の処理要求を送信し、
    前記格納手段に前記対応関係を登録するとき、前記クライアントから受信する第2の処理要求を、前記第1の選択アルゴリズムにより選択される第1のサーバと前記第2の選択アルゴリズムにより選択される第2のサーバに送信し、
    前記第1のサーバ及び前記第2のサーバから前記第2の処理要求に対する第1の処理結果及び第2の処理結果をそれぞれ受信し、
    前記第1の処理結果と前記第2の処理結果が一致しているとき、前記第2の処理要求により要求される処理を示す処理識別情報と前記第2の選択アルゴリズムとを対応付けて前記格納手段に登録する
    ことを特徴とするサーバ選択方法。
JP2011147923A 2011-07-04 2011-07-04 情報処理装置、サーバ選択方法、及びプログラム Expired - Fee Related JP5724687B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011147923A JP5724687B2 (ja) 2011-07-04 2011-07-04 情報処理装置、サーバ選択方法、及びプログラム
US13/470,428 US8694580B2 (en) 2011-07-04 2012-05-14 Information processing apparatus, server selecting method and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011147923A JP5724687B2 (ja) 2011-07-04 2011-07-04 情報処理装置、サーバ選択方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2013015991A JP2013015991A (ja) 2013-01-24
JP5724687B2 true JP5724687B2 (ja) 2015-05-27

Family

ID=47439314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011147923A Expired - Fee Related JP5724687B2 (ja) 2011-07-04 2011-07-04 情報処理装置、サーバ選択方法、及びプログラム

Country Status (2)

Country Link
US (1) US8694580B2 (ja)
JP (1) JP5724687B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140108591A1 (en) * 2012-10-12 2014-04-17 Victoria's Secret Stores Brand Management, Inc. Methods And Systems For Delivering Individualized Content
JP6150281B2 (ja) * 2013-06-03 2017-06-21 国立研究開発法人海洋研究開発機構 サーバシステム,及びプログラム
US9349020B2 (en) * 2013-12-27 2016-05-24 Facebook, Inc. Aggregated actions
US9811390B1 (en) * 2015-03-30 2017-11-07 EMC IP Holding Company LLC Consolidating tasks into a composite request
US10659366B1 (en) * 2015-11-04 2020-05-19 Amazon Technologies, Inc. Load balancer metadata forwarding on secure connections
JP6368699B2 (ja) * 2015-12-09 2018-08-01 日本電信電話株式会社 負荷分散装置および負荷分散方法
CN107168960B (zh) * 2016-03-07 2021-06-25 创新先进技术有限公司 一种业务执行方法及装置
US10999361B2 (en) * 2018-09-07 2021-05-04 Red Hat, Inc. Consistent hash-based load balancer
JP2021039423A (ja) * 2019-08-30 2021-03-11 キヤノン株式会社 システム、および制御方法
CN112769900B (zh) * 2020-12-22 2023-04-25 中冶赛迪信息技术(重庆)有限公司 一种数据分发方法、系统、介质及电子终端

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3537338B2 (ja) 1999-01-12 2004-06-14 沖電気工業株式会社 Webコンピューティングのサーバシステム
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US7313614B2 (en) * 2000-11-02 2007-12-25 Sun Microsystems, Inc. Switching system
US7409420B2 (en) * 2001-07-16 2008-08-05 Bea Systems, Inc. Method and apparatus for session replication and failover
US7190695B2 (en) * 2001-09-28 2007-03-13 Lucent Technologies Inc. Flexible application of mapping algorithms within a packet distributor
US7356592B2 (en) 2002-01-24 2008-04-08 International Business Machines Corporation Method and apparatus for web farm traffic control
US7406692B2 (en) * 2003-02-24 2008-07-29 Bea Systems, Inc. System and method for server load balancing and server affinity
US8159961B1 (en) * 2007-03-30 2012-04-17 Amazon Technologies, Inc. Load balancing utilizing adaptive thresholding
US8150970B1 (en) * 2007-10-12 2012-04-03 Adobe Systems Incorporated Work load distribution among server processes
US9535967B2 (en) * 2008-09-10 2017-01-03 Salesforce.Com, Inc. Method and system for providing efficient and complex database functionality to a mobile device
JP5109901B2 (ja) 2008-09-25 2012-12-26 沖電気工業株式会社 セッションデータ共有方法
US8755283B2 (en) * 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
US8612550B2 (en) * 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity

Also Published As

Publication number Publication date
US20130013668A1 (en) 2013-01-10
US8694580B2 (en) 2014-04-08
JP2013015991A (ja) 2013-01-24

Similar Documents

Publication Publication Date Title
JP5724687B2 (ja) 情報処理装置、サーバ選択方法、及びプログラム
US20150128121A1 (en) Dynamic application version selection
US20090177778A1 (en) Session Affinity Cache and Manager
US20110161825A1 (en) Systems and methods for testing multiple page versions across multiple applications
US20110307467A1 (en) Distributed web crawler architecture
JP2005539298A (ja) サーバを遠隔かつ動的に構成する方法およびシステム
JP2010026653A (ja) データアクセス制御方法、データアクセス制御装置、及びプログラム
US20150222616A1 (en) Private cloud connected device cluster architecture
CN110830374B (zh) 一种基于sdk的灰度发布的方法和装置
CN101783771A (zh) 一种实现负载均衡持续性的方法和设备
US8019884B2 (en) Proxy content for submitting web service data in the user's security context
US9967412B2 (en) Information processing apparatus, system, and control method for information processing apparatus
JP5936103B2 (ja) クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム
JP5638761B2 (ja) 画面生成方法、画面表示方法、画面生成装置、及びプログラム
US9369544B1 (en) Testing compatibility with web services
US9621632B2 (en) Scaling of stateful enterprise services
CN113778499B (zh) 发布服务的方法、装置、设备和计算机可读介质
EP1754145B1 (en) Method and apparatus for supporting multiple versions of a web services protocol
US20090193031A1 (en) Tiered processing for xdm and other xml databases
JP5208613B2 (ja) サーバシステム
US8321535B2 (en) Web services integration systems and methods
JP2006106933A (ja) 負荷分散ネットワークシステム及び負荷分散用プログラム
CN108228359B (zh) web程序与R程序集成处理数据的方法和系统
JP2015049714A (ja) ソフトウェア管理装置、ソフトウェア管理システム、ソフトウェア管理方法、及びプログラム
US11546405B2 (en) Methods for exposing mainframe data as a web service and devices thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141208

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150316

R150 Certificate of patent or registration of utility model

Ref document number: 5724687

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees