JP2008071359A - 外部ポート配分に基づくサーバ負荷分散のための方法および装置 - Google Patents

外部ポート配分に基づくサーバ負荷分散のための方法および装置 Download PDF

Info

Publication number
JP2008071359A
JP2008071359A JP2007249528A JP2007249528A JP2008071359A JP 2008071359 A JP2008071359 A JP 2008071359A JP 2007249528 A JP2007249528 A JP 2007249528A JP 2007249528 A JP2007249528 A JP 2007249528A JP 2008071359 A JP2008071359 A JP 2008071359A
Authority
JP
Japan
Prior art keywords
request
processes
external port
external
assigned
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.)
Pending
Application number
JP2007249528A
Other languages
English (en)
Inventor
Dwip N Banerjee
ドウィップ・エヌ・バナジー
Brown Deanna Lynn Quigg
ディーンナ・リン・クイッグ・ブラウン
Lilian Sylvia Fernandes
リリアン・シルビア・フェルナンデス
Vasu Vallabhaneni
バス・バラバネニ
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008071359A publication Critical patent/JP2008071359A/ja
Pending legal-status Critical Current

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
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61CDENTISTRY; APPARATUS OR METHODS FOR ORAL OR DENTAL HYGIENE
    • A61C19/00Dental auxiliary appliances
    • A61C19/06Implements for therapeutic treatment
    • A61C19/063Medicament applicators for teeth or gums, e.g. treatment with fluorides
    • A61C19/066Bleaching devices; Whitening agent applicators for teeth, e.g. trays or strips
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61CDENTISTRY; APPARATUS OR METHODS FOR ORAL OR DENTAL HYGIENE
    • A61C5/00Filling or capping teeth
    • A61C5/90Oral protectors for use during treatment, e.g. lip or mouth protectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1006Server selection for load balancing with static server selection, e.g. the same server being selected for a specific client
    • 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/101Server selection for load balancing based on network conditions
    • 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/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

【課題】データ処理システムにおいて要求を処理するための方法、装置およびコンピュータ命令を提供すること。
【解決手段】要求を処理するために複数のプロセスが提供される。これら複数のプロセスのそれぞれは、複数の外部ポートの中の1つの外部ポート・サブセットから来る各要求を処理するように割り当てられ、1つのプロセスに割り当てられた1組の外部ポートが、これら複数の外部ポートのうちの他の外部ポート・サブセットに対して固有なものとなるようにする。1つの要求中に含まれる外部ポートは、当該要求の受信に応答して識別される。当該要求は、要求中に含まれる当該外部ポートに一致する外部ポートを持った外部ポート・サブセット、が割り当てられたプロセスに対して送られ、このプロセスが当該要求を処理する。
【選択図】図3

Description

本発明は、改良型データ処理システムに関し、詳細には、要求を処理するための方法、装置およびコンピュータ命令に関する。さらに詳細には、本発明は、クライアントの要求を処理するためのサーバ負荷を分散する方法、装置およびコンピュータ命令を提供する。
「インターネットワーク」とも称されるインターネットは、データ転送と、送信側ネットワークのプロトコルから受信側ネットワークが使用するプロトコルへのメッセージ変換とを扱うゲートウェイによって結合される、異なり得るコンピュータ・ネットワークのセットである。
大文字表記の場合、用語「インターネット(Internet)」は、TCP/IP(TransmissionControl Protocol/Internet Protocol)プロトコル群を用いるネットワークおよびゲートウェイの集合体を意味する。
インターネットは、情報と娯楽の両方の提供源として文化的基盤(cultural fixture)になってきた。多くの企業がマーケティング活動の不可欠な部分として、インターネット・サイトを立ち上げ、そのビジネスが提供する製品またはサービスについて消費者に知らせ、あるいはブランド信仰を養おうとして他の情報を提供している。
多くの連邦、州および地方の政府機関、特に、内国税歳入局や諸省庁など事実上すべての社会の諸部門とやり取りをしなければならない機関もまた、情報目的のためにインターネット・サイトを使用している。
オンライン上の公文書の情報ガイドまたは検索可能なデータベースあるいはその両方を提供することで、運営コストを削減することができる。さらに、商取引のための媒体として、インターネットはますます普及している。
今日、最も一般に使用されているインターネット上でのデータ転送方法は、単に「ウェブ」とも称される、ワールド・ワイド・ウェブ環境を使用するものである。
FTP(File TransferProtocol:ファイル転送プロトコル)やGopher(ゴーファー)など、情報転送のための他のインターネット・リソースが存在するが、ウェブほどには普及していない。
ウェブ環境では、サーバおよびクライアントが様々なデータ・ファイル(テキスト、静止グラフィック・イメージ、音声、動画ビデオなど)の転送を扱うための周知のプロトコルであるHTTP(Hypertext Transfer Protocol)を用いてデータ・トランザクションを実行する。
様々なデータ・ファイル内の情報は、ユーザに提示するために、標準のページ記述言語、HTML(Hypertext Markup Language)を用いてフォーマットされる。
基本的な提示フォーマティングに加えて、HTMLを用いると、開発者がURL(Uniform Resource Locator)によって識別される他のウェブ・リソースへの「リンク」を指定することも可能になる。
URLは、特定の情報への通信パスを定義する特別な構文識別子である。
「ページ」または「ウェブ・ページ」と称される、クライアントからアクセス可能なそれぞれの論理情報ブロックをURLによって識別する。
URLは、こうした情報を見つけてアクセスするための普遍的で一貫した方法を、必ずしもユーザのためではなく、たいていはユーザのウェブ「ブラウザ」のために提供する。
ブラウザは、たとえばURLなどの識別子によって識別される情報の要求を提示することができるプログラムである。
ユーザは、ブラウザがコンテンツ・ソースにアクセスできるように、GUI(graphical user interface)を介してドメイン名を入力することができる。
ドメイン名は、ドメイン・ネーム・システム(DNS)によって、IP(Internet Protocol)アドレスに自動的に変換される。
ドメイン・ネーム・システムは、データベースでドメイン名を調べて、ユーザが入力したシンボル名をIPアドレスに変換するサービスである。
インターネットは、ブラウザを使用するユーザにアプリケーションを転送するためにも広く使用されている。
ウェブ上の商取引に関しては、個人消費者および企業が様々な商品およびサービスを購入するためにウェブを使用する。
商品およびサービスを提供する際に、一部の企業はウェブ上だけで商品およびサービスを提供し、他の企業は取引先の範囲を広げるためにウェブを使用する。
ウェブ・ページおよびアプリケーションに対する様々な接続要求がウェブ・サーバやFTPサーバなどのサーバによって処理されている。
こうしたサーバはしばしば、通常は多数のクライアントが同時にサービスを要求したときに生じる重い負荷を負っている。
この問題はしばしば、こうした仕事を実施するためのスレーブ・サーバを生成(spawn and create)することによって解決される。
この方式では、メイン・サーバが続けて新しい接続を受け入れ、これらの接続をスレーブ・サーバに直ちに配分することができる。
しかし、こうしたシステムには依然としてボトルネックがある。
このボトルネックとはメイン・サーバであり、このメイン・サーバには全ての入り接続をリスン(listen for)するためのソケットが1つしかない。
したがって、サーバ負荷分散のための改良された方法、装置およびコンピュータ命令があれば有利であろう。
本発明は、データ処理システムにおいて要求を処理するための方法、装置およびコンピュータ命令を提供する。
要求を処理するために複数のプロセスが提供される。
こうした複数プロセスのそれぞれに、複数外部ポートのうちのある外部ポート・サブセットからの要求を処理する役割が割り当てられる。
こうした例では、あるプロセスに割り当てられる外部ポート・サブセットが、複数外部ポートのうちの他の外部ポート・サブセットに対して一意になるように割当てが行われる。
要求の受信に応答して、要求中に含まれる外部ポートが識別される。
要求は、要求中に含まれる外部ポートに対応する外部ポート・サブセットが割り当てられたプロセスに送られ、このプロセスが要求を処理する。
次に図面を参照すると、図1に、本発明を実施することができるデータ処理システムのネットワークの絵画図が示してある。
ネットワーク・データ処理システム100は、本発明を実施することができるコンピュータのネットワークである。
ネットワーク・データ処理システム100は、ネットワーク102を含む。
このネットワークは、ネットワーク・データ処理システム100内で互いに接続された様々な装置およびコンピュータの間の通信リンクを提供するために使用される媒体である。
ネットワーク102は、有線、無線通信リンクや光ファイバ・ケーブルなどの接続を含むことができる。
この図に示した例では、サーバ・コンピュータ104は、記憶装置106とともに、ネットワーク102に接続される。
さらに、クライアント108、110および112もネットワーク102に接続される。
これらのクライアント108、110および112は、たとえば、パーソナル・コンピュータでも、ネットワーク・コンピュータでもよい。
この図に示した例では、サーバ・コンピュータ104は、ブート・ファイル、オペレーティング・システム・イメージ、アプリケーションなどのデータをクライアント108〜112に提供する。
クライアント108、110および112は、サーバ・コンピュータ104に対するクライアントである。
ネットワーク・データ処理システム100は、図示されていない追加のサーバ・コンピュータ、クライアントおよび他の装置を含むことができる。
この図に示した例では、ネットワーク・データ処理システム100は、互いに通信するためにTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコル群を使用するネットワークおよびゲートウェイの世界規模の集合体である、ネットワーク102を含むインターネットである。
インターネットの中心には、データおよびメッセージをルーティングする無数の商業、政府、教育および他のコンピュータ・システムからなる主要ノードまたはホスト・コンピュータ間の高速データ通信回線のバックボーンがある。
もちろん、ネットワーク・データ処理システム100は、複数の異なるタイプのネットワーク、たとえばイントラネット、LAN(local area network:ローカル・エリア・ネットワーク)、WAN(wide area network:広域ネットワーク)などとしても実施することができる。
図1は、本発明をアーキテクチュア面で限定するものではなく、例示するためのものである。
図2を参照すると、図1のサーバ・コンピュータ104などのサーバ・コンピュータとして実施することができる、本発明の好ましい一実施形態によるデータ処理システムのブロック図が示されている。
データ処理システム200は、システム・バス206に接続された複数のプロセッサ202および204を含む対称マルチプロセッサ(SMP)システムでよい。
あるいは、単一のプロセッサ・システムを使用してもよい。
システム・バス206には、ローカル・メモリ209にインターフェイスを提供するメモリ・コントローラ/キャッシュ208も接続されている。
I/Oバス・ブリッジ210は、システム・バス206に接続され、I/Oバス212とのインターフェイスを提供する。
メモリ・コントローラ/キャッシュ208およびI/Oバス・ブリッジ210は、図示するように統合することができる。
I/Oバス212に接続されたPCI(peripheralcomponent interconnect)バス・ブリッジ214は、PCIローカル・バス216にインターフェイスを提供する。
複数のモデムをPCIローカル・バス216に接続することができる。
典型的なPCIバスの実装では、4個のPCI拡張スロットすなわち拡張コネクタをサポートする。
拡張ボードを介してPCIローカル・バス216に接続されたモデム218およびネットワーク・アダプタ220を介して、図1のクライアント108〜112との通信リンクを提供することができる。
追加のPCIバス・ブリッジ222、224は、追加のPCIローカル・バス226、228にインターフェイスを提供し、これらのバスを介して、追加のモデムまたはネットワーク・アダプタをサポートすることができる。
このようにして、データ処理システム200は、複数のネットワーク・コンピュータとの接続を可能にする。
図示するように、メモリ・マップト・グラフィックス・アダプタ230およびハード・ディスク232を、直接または間接的にI/Oバス212に接続することもできる。
当業者には、図2に示すハードウェアは様々なものとすることができることが理解されよう。
たとえば、図示したハードウェアに加えて、またはその代わりに、光ディスク・ドライブなど他の周辺装置を使用することもできる。
この図に示した例は、アーキテクチュア面で本発明を限定するものではない。
図2に示すデータ処理システムは、たとえば、AIX(Advanced Interactive Executive:)オペレーティング・システムまたはLINUXオペレーティング・システムを実行する、IBMeServer pSeries(商標)システムでよい。
本発明は、外部ポート配分に基づいてサーバ負荷を分散するための方法、装置およびコンピュータ命令を提供する。
特に、本発明の機構は、ソケットをあらゆる外部ポートにではなく、外部ポートのセットに結び付けることを可能にする。
ソケットは、TCP/IPスタックを使用するネットワーク内の適切なアプリケーションに向けてデータを送るために使用する機構である。
このスタックは、送られた全部のバイトが正しく受信されるようにするトランスポート機能を提供する。
このスタックは、アドレスに基づいてメッセージをルーティングするためにも使用される。
ソケットはIPアドレスおよびポート番号で構成される。
こうした例では、ソケットは、サーバに関連付けられ、サーバ・プロセスとも称される。
本明細書では、用語「サーバ」は、単独で使用する場合、実際のコンピュータまたはマシンではなくプロセスを意味する。
このようにして、接続を扱う際に複数のサーバを使用して異なる外部ポートをリスンすることができる。
こうした例では、ローカルIP(LIP)アドレス、外部IP(FIP)アドレス、ローカル・ポート(LP)および外部ポート(FP)を使用して接続を識別する。
通常、サーバでは、ローカル・ポート番号がサーバに対応し、IPアドレスがサーバに属している限り、どの外部IPアドレス、およびどの外部ポートからの接続も受け入れるソケットを使用する。
本発明によれば、複数のサーバを使用して、外部ポートに基づいて接続がこうしたサーバに分散されるようにする。
「外部ポート」は、TCP/IP要求パケットの発信元である遠隔マシン上のプロセス(本発明におけるクライアント・プロセス)を識別するのに使用する番号である。
この番号は、TCP/IPプロトコル・スタックのトランスポート層で使用される。
ローカル・プロセス(本発明におけるサーバ・プロセス)は、外部ポートを使用して元のパケットへの返信を生成する。
この番号を用いることで、返信パケットが要求パケットの送信元である同じクライアント・プロセスに確実に到達する。
本発明によれば、それぞれのサーバに外部ポートのサブセットを割り当てる。
図に示した例では、複数のサーバによってカバーされる外部ポートが存在しないように、サブセットは互いに一意になっている。
もちろん、実装に応じて、サーバに重複して割り当てられることもある。
このように割当てされ、それぞれのサーバがソケット上で入り接続をリスンする。
こうしたソケットは、全ての外部ポート番号からの接続を受け入れるのではなく、外部ポート番号のセットに結び付けられている。
この機構は、接続要求を行うクライアントのどんな修正も必要としない。
しかし、入り接続要求を適切なソケットに向けて送るために使用するTCP/IPスタックに修正が必要である。
現在、1つだけの外部ポート番号、または全ての外部ポート番号が受入れ可能であることを意味するワイルドカード・ポート番号をTCP/IPスタックで指定することができる。
こうした修正には、外部ポート番号セットを指定できることが必要である。
言い換えれば、異なるサーバまたはソケットに外部ポートを割当てできるようにする追加の機能が、本発明のプロセスを実行するサーバ・コンピュータのオペレーティング・システムのTCP/IPスタック内に実装される。
図に示した例では、TCP/IPスタックのトランスポート層に修正が加えられている。
次に図3に移ると、本発明の好ましい一実施形態による要求を処理する際のデータの流れを示す図が示されている。
サーバ・コンピュータ300は、図2のデータ処理システム200などのデータ処理システム上に実装することができる。
本発明の好ましい一実施形態によれば、サーバに関連するソケットを、全ての外部ポートにではなく、外部ポート・セットに結び付けることができる。
要求は一般に、ローカル・ポート・アドレス、外部ポート・アドレス、ローカル・ポート番号および外部ポート番号を含む。
オペレーティング・システム(OS)カーネル302によって、サーバ・コンピュータ300との接続が確立される。
こうした例では、ローカル・ポート番号が対応しており、またローカルIPアドレスがサーバ・コンピュータ300に割り当てられているものである場合に、オペレーティング・システム・カーネル302が接続を処理するために受け入れる。
本発明の好ましい一実施形態によれば、サーバ304、306および308を使用して、異なるクライアントから送られてくる要求310に対する接続を扱う。
オペレーティング・システム・カーネル302によって、これらのサーバに接続が送信される。
より具体的には、これらの接続はオペレーティング・システム・カーネル302内のTCP/IPスタックによってサーバにルーティングされる。
こうした要求のルーティングは、要求310中に含まれる外部ポート番号に基づいて実施される。
たとえば、外部ポートの範囲が1025から4000であれば、これらのポート番号をサーバ304、306および308に配分することができる。
こうした例では、それぞれのサーバが一意である外部ポート範囲のサブセットを有するように、外部ポート番号を配分する。
言い換えれば、それぞれのサブセット間で外部ポートの重複は生じない。
外部ポートは一般に、要求を行うクライアントによってランダムに割り当てられるので、こうした機構がうまく機能する。
外部ポートの範囲が1025から4000であれば、以下のように外部ポート番号の割当てを行うことができる。
サーバ304が外部ポート番号1025、1028、1031、...3098までを扱い、 サーバ306が外部ポート番号1026、1029、1032、...3099までを扱い、 サーバ308が外部ポート番号1027、1030、1033、...4000までを扱う。
このようにして、それぞれのサーバがソケット上で入り接続をリスンする。
しかし、これらのソケットは、前述のように、全てのポート番号にではなく外部ポート番号セットに結び付けられている。
こうした例では、サーバ304がマスタ・サーバ・プロセスであり、サーバ306および308は、サーバ304によって生成されたスレーブ・サーバ・プロセスである。
あるいは、これらのプロセスは、サーバ・コンピュータ300上の負荷に応じてスレーブ・サーバ・プロセスを生成する能力を有するマスタ・サーバ・プロセスとしても働くことができる。
こうした例では、要求の処理がスレーブ・スレッド312、314、316などのスレーブ・スレッドに引き渡される。
こうしたスレーブ・スレッドは、サーバ304、306および308によって生成することができる。
この例では、スレーブ・スレッド312がサーバ304によって生成され、スレーブ・スレッド314がサーバ306によって生成され、スレーブ・スレッド316がサーバ308によって生成される。
この機構では、単一のサーバに全ての接続を扱わせるのではなく、負荷バランスをとるために異なるサーバに要求を配分することができるので、現在の機構にまさる利点がもたされる。
本発明の機構は、ネットワーク・ディスパッチャとは異なるものである。
このネットワーク・ディスパッチャは、異なるシステム間で接続を分配するが、全ての外部ポート番号をリスンする単一のソケット番号を使用するので依然としてボトルネックになる。
さらに、本発明の機構では、要求を行うクライアントの修正は必要ない。
異なるソケットに外部ポートを割当てできるようにするために、TCP/IPスタックの修正だけが必要である。
次に図4に移ると、本発明の好ましい一実施形態による、接続要求を処理するプロセスのフローチャートが示してある。
図4に示すプロセスを、図3のオペレーティング・システム・カーネル302などのオペレーティング・システム上に実装することができる。
こうした例では、この機構はTCP/IPスタック上に実装される。
このプロセスは、クライアントからの入り接続要求を待つことから始まる(ステップ400)。
要求を受信した後、カーネル上で、ローカル・ポート(LP)、ローカル・ポート・IP(LIP)アドレス、および外部IP(FIP)アドレスに対応するソケットが選択される(ステップ402)。
こうした例では、複数のソケットが存在し、そのそれぞれに外部ポートのサブセットが割り当てられる。
ステップ402で、処理するためにこれらのソケットのうちの1つを選択する。
次いで、要求中に含まれる外部ポートが、このソケットに割り当てられた外部ポート・セットの一部であるかどうかを判定する(ステップ404)。
要求中に含まれる外部ポートが、選択されたソケットに対するセットに含まれていない場合、ソケット・リストの最後まで達したかどうかを判定する(ステップ406)。
このステップを用いて、全てのソケットが処理されたかどうかを判定する。
全てのソケットが処理されていない場合はステップ402に戻り、別のソケットを選択する。
こうしたソケットの全てが処理されると、接続を拒否し(ステップ408)、その後、プロセスは終了する。
再びステップ404を参照すると、要求の中に含まれる外部ポートがソケットに割り当てられた外部ポート・セット内に存在する場合は、接続がこのソケットに引き渡され(ステップ408)、その後、プロセスは終了する。
この場合、サーバ・プロセスの1つがこの接続要求を処理する。
次に図5に移ると、本発明の好ましい一実施形態による、サーバ・プロセスの生成および削除のプロセスのフローチャートが示してある。
図5に示すプロセスは、図3のサーバ304などのアプリケーション上に実装することができる。
こうしたサーバは、たとえば、ウェブ・サーバでも、データベース・サーバでも、FTPサーバでも
よい。
このプロセスは、ネットワーク負荷を再計算することから始まる(ステップ500)。
ネットワーク負荷を様々な周知の方法によって計算することができる。
ネットワーク負荷が計算された後、負荷が第1閾値を超えて増加したかどうか判定する(ステップ502)。
負荷がこの閾値を超えていない場合は、負荷が第2閾値以下に減少したかどうかを判定する(ステップ504)。
閾値を設定する際に使用することができるパラメータは、入り接続のレートである。
低い閾値は毎分当たりxの入り接続というレートを用いて設定することができ、高い閾値は毎分当たりyの入り接続という別のレートを用いて設定することができる。
こうした閾値の実際の値は、個々の実装によって決まる。
負荷が第2閾値以下に減少していない場合、ネットワーク負荷の次の再計算を行うためにタイムアウトを設定する(ステップ506)。
次いで、時間切れを待つ(ステップ508)。
時間切れになると、ステップ500に戻り、ネットワーク負荷を再計算する。
再びステップ504を参照すると、負荷が第2閾値以下に減少した場合、サーバの数を減らし、ポート配分を変更する(ステップ510)。
こうした例では、残っている各サーバについて一意の外部ポート・サブセットが設定されるように、外部ポートのポート配分を変更する。
ステップ502に戻ると、負荷が第1閾値を超えて増加した場合、サーバの数を増やし、ポート配分を変更する(ステップ512)。
この場合、新しく生成されたサーバを含めて、全てのサーバに外部ポートが再配分されるようにポート配分を変更する。
サーバ数の増減は個々の実装に応じて変わる。
さらに、どのくらいネットワーク負荷が閾値を超えて増加または減少したかに応じて、サーバ数を増減させることができる。
ステップ502の第1閾値とステップ504の第2閾値は、特定の実装に応じて、同じ値でも異なる値でもよい。
したがって、本発明は、外部ポート配分に基づいてサーバ負荷を分散するための方法、装置およびコンピュータ命令を提供する。
本発明の機構では、外部ポート範囲をサブセットに分割し、こうしたサブセットを異なるサーバに割り当てることによって、現在あるボトルネックを解消する。
図に示した例では、それぞれのサブセットは、他のサブセットに対して一意であり、実質上同数のポートを含む。
もちろん、個々の実装に応じて、サブセットは重複する外部ポート番号を含むことができ、サブセットによっては他よりも多い外部ポートを含むことができる。
異なるソケットを聴取する複数のサーバに外部ポート・サブセットが割り当てられると、複数のサーバすなわちプロセスがクライアントの接続要求をリスンし処理することができる。
十分に機能するデータ処理システムの状況において本発明を説明したが、本発明のプロセスは、命令のコンピュータ読取り可能媒体の形態、および様々な形態で配布することができ、また配布を実施するために実際に使用される信号搬送媒体の特定のタイプに関係なく本発明が同様に適用されることが当業者には理解されようことに留意されたい。
コンピュータ読取り可能媒体の例には、フロッピディスク、ハード・ディスク・ドライブ、RAM,CD−ROM,DVD−ROMなどの書込み可能なタイプの媒体、ならびに、たとえば無線周波数や光波伝送などの伝送形態を用いたデジタルおよびアナログ通信リンク、有線および無線通信リンクなどの転送型媒体が含まれる。
コンピュータ読取り可能媒体は、個々のデータ処理システムで実際に使用するために復号化される、符号化されたフォーマットの形をとることができる。
例示および説明の目的で本発明の説明を提示したが、これは網羅的なものではなく、 開示した形に本発明を限定するためのものではない。
多くの修正および変形が当業者には明らかであろう。
実施形態は、本発明の原理および実際の適用例を最も適切に説明し、また企図する特定の用途に適した様々な修正を伴う様々な実施形態について本発明が当業者に理解できるようにするために選択し説明したものである。
本発明を実施することができるデータ処理システムのネットワークの絵画図ある。 サーバ・コンピュータとして実施することができる、本発明の好ましい一実施形態によるデータ処理システムのブロック図である。 本発明の好ましい一実施形態による、要求を処理する際のデータの流れを示す図である。 本発明の好ましい一実施形態による、接続要求を処理するためのプロセスのフローチャートである。 本発明の好ましい一実施形態による、サーバ・プロセスを生成および削除するためのプロセスのフローチャートである。

Claims (17)

  1. データ処理システムにおいて要求を処理するための方法であって、
    前記要求を処理するために複数のプロセスを提供するステップであって、前記複数のプロセスのそれぞれに、複数の外部ポートのうちの1つの外部ポート・サブセットが割り当てられ、前記複数の外部ポートの各々は、前記要求の発信元である遠隔マシン上のクライアント・プロセスを識別するのに使用する番号である、ステップと、
    要求の受信に応答して、前記要求中に含まれる1つの外部ポートを識別するステップと、
    前記要求中に含まれる前記外部ポートと一致する外部ポートを持つ前記外部ポート・サブセット、が割り当てられた1つのプロセスに前記要求を送るステップであって、前記プロセスが前記要求を処理する、ステップと、
    ネットワーク負荷を計算するステップと、
    前記ネットワーク負荷が第1の選択された閾値を超えて増加した場合に、前記複数のプロセスにいくつかのプロセスを追加するステップと、
    前記ネットワーク負荷が第2の選択された閾値以下に減少した場合に、前記複数のプロセスからいくつかのプロセスを取り去るステップと、
    を含む方法。
  2. 前記プロセスに割り当てられる前記外部ポート・サブセットが、前記複数の外部ポートのうちの他の外部ポート・サブセットに対して固有なものとなるように、前記外部ポート・サブセットが割り当てられる、
    請求項1に記載の方法。
  3. 前記要求が1つの要求元からのものであり、
    前記要求を処理する前記プロセスが前記要求元との接続を確立する、
    請求項1に記載の方法。
  4. 前記要求が1つのローカル・ポートおよび1つのローカルIPアドレスをも含み、
    前記ローカル・ポートおよび前記ローカルIPアドレスが、前記プロセスについての1つのローカル・ポートおよび前記プロセスについての1つのローカルIPアドレスに一致するかどうかの識別を開始するステップ、をさらに有する、
    請求項1に記載の方法。
  5. 前記複数プロセスのうちの1つのプロセスがマスタ・プロセスであり、
    前記複数プロセスのうちの残りのプロセスはスレーブ・プロセスである、
    請求項1に記載の方法。
  6. 前記プロセスによる前記要求の受信に応答して、前記要求を処理するための1つのスレーブ・プロセスを生成するステップ、
    をさらに有する、請求項1に記載の方法。
  7. 前記複数のプロセスがサーバ・プロセスである、請求項1に記載の方法。
  8. 要求を処理するためのデータ処理システムであって、
    1つのバス・システムと、
    前記バス・システムに接続され、1組の命令を含む1つのメモリと、
    前記バス・システムに接続された1つの通信アダプタと、
    前記バス・システムに接続され、前記1組の命令を実行して、前記要求を処理するための複数のプロセスを提供する1つの処理ユニットであって、前記複数のプロセスのそれぞれが、
    複数の外部ポートのうちの1つの外部ポート・サブセットを割り当てられ、前記複数の外部ポートの各々は、前記要求の発信元である遠隔マシン上のクライアント・プロセスを識別するのに使用する番号であり、
    要求を受信したことに応答して、前記要求中に含まれる外部ポートを識別し、
    前記要求中に含まれる前記外部ポートと一致する外部ポートを持つ前記外部ポート・サブセット、が割り当てられた1つのプロセスに前記要求を送り、当該プロセスは前記要求を処理し、ネットワーク負荷を計算し、前記ネットワーク負荷が第1の選択された閾値を超えて増加した場合に前記複数のプロセスにいくつかのプロセスを追加し、前記ネットワーク負荷が第2の選択された閾値以下に減少した場合に前記複数のプロセスからいくつかのプロセスを取り去る、
    処理ユニットと、
    を有するデータ処理システム。
  9. 前記プロセスに割り当てられる前記外部ポート・サブセットが、前記複数の外部ポートのうちの他の外部ポート・サブセットに対して固有なものとなるように、前記外部ポート・サブセットが割り当てられる、
    請求項8に記載のデータ処理システム。
  10. 要求を処理するためのデータ処理システムであって、
    前記要求を処理するための複数のプロセスを提供するための提供手段であって、前記複数のプロセスのそれぞれに、複数の外部ポートのうちの1つの外部ポート・サブセットが割り当てられ、前記複数の外部ポートの各々は、前記要求の発信元である遠隔マシン上のクライアント・プロセスを識別するのに使用する番号である、提供手段と、
    要求の受信に応答して、前記要求中に含まれる1つの外部ポートを識別するための識別手段と、
    前記要求中に含まれる前記外部ポートと一致する外部ポートを持つ前記外部ポート・サブセット、が割り当てられた1つのプロセスに前記要求を送るための送信手段であって、前記プロセスが前記要求を処理する送信手段と、
    ネットワーク負荷を計算するための計算手段と、
    前記ネットワーク負荷が第1の選択された閾値を超えて増加した場合に、前記複数のプロセスにいくつかのプロセスを追加するための追加手段と、
    前記ネットワーク負荷が第2の選択された閾値以下に減少した場合に、前記複数のプロセスからいくつかのプロセスを取り去るための除去手段と、
    を有するデータ処理システム。
  11. 前記プロセスに割り当てられた前記外部ポート・サブセットが、前記複数の外部ポートのうちの他の外部ポート・サブセットに対して固有なものとなるように、前記外部ポート・サブセットが割り当てられる、
    請求項10に記載のデータ処理システム。
  12. 前記要求が1つの要求元からのものであり、前記要求を処理する前記プロセスが前記要求元との接続を確立する、
    請求項10に記載のデータ処理システム。
  13. 前記要求が1つのローカル・ポートおよび1つのローカルIPアドレスをも含み、
    前記ローカル・ポートおよび前記ローカルIPアドレスが、前記プロセスについての1つのローカル・ポートおよび前記プロセスについての1つのローカルIPアドレスに一致する場合に、前記識別手段の実行を開始するための開始手段、をさらに有する、
    請求項10に記載のデータ処理システム。
  14. 前記複数プロセスのうちの1つのプロセスがマスタ・プロセスであり、
    前記複数プロセスのうちの残りのプロセスはスレーブ・プロセスである、
    請求項10に記載のデータ処理システム。
  15. 前記プロセスによる前記要求の受信に応答して、前記要求を処理する1つのスレーブ・プロセスを生成する生成手段、
    をさらに有する、請求項10に記載のデータ処理システム。
  16. 前記複数のプロセスがサーバ・プロセスである、請求項10に記載のデータ処理システム。
  17. データ処理システムで受信された要求を処理するための、コンピュータ読取り可能なコンピュータ・プログラムであって、
    前記要求を処理するために複数のプロセスを提供するステップであって、前記複数プロセスのそれぞれに、複数の外部ポートのうちの1つの外部ポート・サブセットが割り当てられ、前記複数の外部ポートの各々は、前記要求の発信元である遠隔マシン上のクライアント・プロセスを識別するのに使用する番号である、ステップと、
    要求の受信に応答して、前記要求中に含まれる1つの外部ポートを識別するステップと、
    前記要求中に含まれる前記外部ポートと一致する外部ポートを持つ前記外部ポート・サブセット、が割り当てられた1つのプロセスに前記要求を送るステップであって、前記プロセスが前記要求を処理する、ステップと、
    ネットワーク負荷を計算するステップと、
    前記ネットワーク負荷が第1の選択された閾値を超えて増加した場合に、前記複数のプロセスにいくつかのプロセスを追加するステップと、
    前記ネットワーク負荷が第2の選択された閾値以下に減少した場合に、前記複数のプロセスからいくつかのプロセスを取り去るステップと、
    を前記データ処理システムに実行させるための、コンピュータ・プログラム。
JP2007249528A 2003-03-13 2007-09-26 外部ポート配分に基づくサーバ負荷分散のための方法および装置 Pending JP2008071359A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/388,973 US7310667B2 (en) 2003-03-13 2003-03-13 Method and apparatus for server load sharing based on foreign port distribution

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004066393A Division JP2004280815A (ja) 2003-03-13 2004-03-09 外部ポート配分に基づくサーバ負荷分散のための方法および装置

Publications (1)

Publication Number Publication Date
JP2008071359A true JP2008071359A (ja) 2008-03-27

Family

ID=32962170

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004066393A Pending JP2004280815A (ja) 2003-03-13 2004-03-09 外部ポート配分に基づくサーバ負荷分散のための方法および装置
JP2007249528A Pending JP2008071359A (ja) 2003-03-13 2007-09-26 外部ポート配分に基づくサーバ負荷分散のための方法および装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2004066393A Pending JP2004280815A (ja) 2003-03-13 2004-03-09 外部ポート配分に基づくサーバ負荷分散のための方法および装置

Country Status (3)

Country Link
US (2) US7310667B2 (ja)
JP (2) JP2004280815A (ja)
KR (1) KR100613318B1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7310667B2 (en) * 2003-03-13 2007-12-18 International Business Machines Corporation Method and apparatus for server load sharing based on foreign port distribution
US7263555B2 (en) * 2003-04-30 2007-08-28 International Business Machines Corporation Apparatus and method for dynamic sharing of server network interface resources
US8713306B1 (en) * 2003-10-14 2014-04-29 Symantec Corporation Network decoys
JP2006287286A (ja) * 2005-03-31 2006-10-19 Saxa Inc Ip通信方法およびip通信装置
US20060274787A1 (en) * 2005-06-07 2006-12-07 Fong Pong Adaptive cache design for MPT/MTT tables and TCP context
US8619790B2 (en) * 2005-06-07 2013-12-31 Broadcom Corporation Adaptive cache for caching context and for adapting to collisions in a session lookup table
WO2009143152A1 (en) * 2008-05-19 2009-11-26 Citrix Systems, Inc. Systems and methods for automatically testing an application
US9430297B2 (en) * 2008-12-15 2016-08-30 International Business Machines Corporation Load balancing of adapters on a multi-adapter node
US9098335B2 (en) 2009-12-23 2015-08-04 Citrix Systems, Inc. Systems and methods for managing spillover limits in a multi-core system
CN102763393B (zh) * 2009-12-23 2016-07-13 思杰系统有限公司 用于在多核系统中管理跨越核的rtsp的端口的系统和方法
US8825859B2 (en) * 2009-12-23 2014-09-02 Citrix Systems, Inc. System and methods for mixed mode of IPv6 and IPv4 DNS of global server load balancing
US20120102185A1 (en) * 2010-10-20 2012-04-26 Sony Computer Entertainment America Inc. Resource management of server hosts in online game environment
US9003002B2 (en) 2012-01-18 2015-04-07 Microsoft Technology Licensing, Llc Efficient port management for a distributed network address translation
US20150106425A1 (en) * 2013-10-10 2015-04-16 International Business Machines Corporation Performance Optimization in a Secured Computing Environment
CN105791176A (zh) * 2014-12-23 2016-07-20 中兴通讯股份有限公司 信息技术it设备端口的确定方法及装置
JP7338384B2 (ja) * 2019-10-03 2023-09-05 トヨタ自動車株式会社 車両の演算処理装置、サーバコンピュータおよびプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11316726A (ja) * 1998-05-01 1999-11-16 Nec Corp 複数プロセスからなる通信処理システムにおける端末接続制御方法及び方式
JP2000138713A (ja) * 1998-11-04 2000-05-16 Toshiba Corp クラスタシステム
JP2001022714A (ja) * 1999-07-12 2001-01-26 Hitachi Ltd サーバ計算機、負荷分散システム、電話交換システムおよび負荷分散方法
JP2002150000A (ja) * 2000-11-13 2002-05-24 Dainippon Screen Mfg Co Ltd サーバシステム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5488533A (en) * 1994-02-07 1996-01-30 International Business Machines Corporation Methods and apparatus for isolating a power network from a load during an overcurrent condition
JP4008049B2 (ja) * 1995-03-20 2007-11-14 富士通株式会社 アドレス送信装置、アドレス送信方法およびアドレス送信システム
US5793763A (en) * 1995-11-03 1998-08-11 Cisco Technology, Inc. Security system for network address translation systems
US6104717A (en) * 1995-11-03 2000-08-15 Cisco Technology, Inc. System and method for providing backup machines for implementing multiple IP addresses on multiple ports
US6026425A (en) * 1996-07-30 2000-02-15 Nippon Telegraph And Telephone Corporation Non-uniform system load balance method and apparatus for updating threshold of tasks according to estimated load fluctuation
WO2000070458A1 (en) * 1999-05-17 2000-11-23 Comsec Corporation Method of communications and communication network intrusion protection methods and intrusion attempt detection system
KR100413422B1 (ko) * 1999-10-09 2003-12-31 엘지전자 주식회사 멀티포트 제어기에서의 멀티포트 제어 방법
US6732116B2 (en) * 2001-06-21 2004-05-04 International Business Machines Corporation Method and system for dynamically managing data structures to optimize computer network performance
US20030167295A1 (en) * 2002-03-01 2003-09-04 Verity, Inc. Automatic network load balancing using self-replicating resources
US7096228B2 (en) * 2002-03-27 2006-08-22 Microsoft Corporation Method and system for managing data records on a computer network
US7310667B2 (en) * 2003-03-13 2007-12-18 International Business Machines Corporation Method and apparatus for server load sharing based on foreign port distribution

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11316726A (ja) * 1998-05-01 1999-11-16 Nec Corp 複数プロセスからなる通信処理システムにおける端末接続制御方法及び方式
JP2000138713A (ja) * 1998-11-04 2000-05-16 Toshiba Corp クラスタシステム
JP2001022714A (ja) * 1999-07-12 2001-01-26 Hitachi Ltd サーバ計算機、負荷分散システム、電話交換システムおよび負荷分散方法
JP2002150000A (ja) * 2000-11-13 2002-05-24 Dainippon Screen Mfg Co Ltd サーバシステム

Also Published As

Publication number Publication date
JP2004280815A (ja) 2004-10-07
US7487242B2 (en) 2009-02-03
US20080040454A1 (en) 2008-02-14
US20040181595A1 (en) 2004-09-16
US7310667B2 (en) 2007-12-18
KR20040080951A (ko) 2004-09-20
KR100613318B1 (ko) 2006-08-21

Similar Documents

Publication Publication Date Title
JP2008071359A (ja) 外部ポート配分に基づくサーバ負荷分散のための方法および装置
KR100322716B1 (ko) 협력적 프록시 시스템의 개체 랜더링 분산 전개를 위한방법 및 장치
US8140644B2 (en) Method and apparatus for updating application servers
US7058727B2 (en) Method and apparatus load balancing server daemons within a server
US7483992B2 (en) Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
US20020152310A1 (en) Method and apparatus to dynamically determine the optimal capacity of a server in a server farm
US7287067B2 (en) Dynamically configuring a server computer
US7490140B2 (en) Peer data transfer orchestration
US20030208600A1 (en) System and method for managing persistent connections in HTTP
JP5724687B2 (ja) 情報処理装置、サーバ選択方法、及びプログラム
JP4925231B2 (ja) 応答集約サロゲートからの要求フラグメントの送信
US6931428B2 (en) Method and apparatus for handling requests for content in a network data processing system
JP2005539298A (ja) サーバを遠隔かつ動的に構成する方法およびシステム
US6725252B1 (en) Method and apparatus for detecting and processing multiple additional requests from a single user at a server in a distributed data processing system
EP0989501A2 (en) Method and apparatus for collaboration support
KR100834361B1 (ko) 단일 시스템에서 효율적으로 지원하는 다중 원시 네트워크 프로토콜 구현
US8005933B2 (en) Probabalistic throttling of application server requests
US20090132582A1 (en) Processor-server hybrid system for processing data
EP1754145B1 (en) Method and apparatus for supporting multiple versions of a web services protocol
US8533333B2 (en) Shared hosting using host name affinity
CN107888643A (zh) 一种udp负载均衡方法、装置和系统
JP2009517724A (ja) サーバ・サイド動的ページの実行のための方法、システム、およびコンピュータ・プログラム
US20030078961A1 (en) Method and apparatus for partitioned environment for web application servers
US11546405B2 (en) Methods for exposing mainframe data as a web service and devices thereof
KR20230003490A (ko) 오케스트레이션된 프록시 서비스

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100812

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101005