(57)【要約】【課題】サーバへの負荷分散を、オペレータによる設定なしで負荷分散装置において自動的に決定して、ユーザアクセスをサーバでパケット受信待ちのポート単位で効率良く分散できるようにする。【解決手段】負荷分散システム１において、複数のサーバ２−ｉ（ｉは２以上の整数）が、それぞれ、パケット受信待ちのポート番号を負荷分散装置３へ通知し、その負荷分散装置３が、通知されたポート番号に基づいて、同一ポート番号でパケット受信待ちとなっている複数のサーバ２−ｉへ受信パケットを振り分けるようにする。【選択図】        図１
2005010983.tif 000002
【特許請求の範囲】
【請求項１】
１以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムにおいて、
該複数のサーバが、それぞれ、パケット受信待ちのポート番号を該負荷分散装置へ通知し、
該負荷分散装置が、該サーバから通知されたポート番号に基づいて、同一ポート番号でパケット受信待ちとなっている複数のサーバへ受信パケットを振り分けることを特徴とする、サーバ負荷分散方法。
【請求項２】
該負荷分散装置が、
該ポート番号の通知を受けると、該ポート番号別に該サーバにアクセスして当該アクセスに対する応答時間をそれぞれ計測し、
当該計測結果に基づいて該複数のサーバへの該受信パケットの振り分け比率を決定することを特徴とする、請求項１記載のサーバ負荷分散方法。
【請求項３】
１以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムであって、
該サーバが、それぞれ、
該アプリケーションプログラムが起動してパケット受信待ちとなったポート番号を該負荷分散装置へ通知するポート番号通知手段をそなえるとともに、
該負荷分散装置が、
該サーバの該ポート番号通知手段から該ポート番号の通知を受けるポート番号受信手段と、
該ポート番号受信手段で受信したポート番号を基に同一ポート番号でパケット受信待ちとなっているサーバについての対応表を作成する対応表作成手段と、
該対応表作成手段で作成された該対応表に基づいて同一ポート番号でパケット受信待ちとなっているサーバに受信パケットを振り分ける受信パケット振り分け手段とをそなえたことを特徴とする、負荷分散システム。
【請求項４】
１以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムに使用される該負荷分散装置であって、
該サーバからパケット受信待ちとなっているポート番号の通知を受けるポート番号受信手段と、
該ポート番号受信手段で受信したポート番号を基に同一ポート番号でパケット受信待ちとなっているサーバについての対応表を作成する対応表作成手段と、
該対応表作成手段で作成された該対応表に基づいて同一ポート番号でパケット受信待ちとなっているサーバに受信パケットを振り分ける受信パケット振り分け手段とをそなえたことを特徴とする、負荷分散システムに使用される負荷分散装置。
【請求項５】
１以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムに使用される該サーバであって、
該アプリケーションプログラムが起動してパケット受信待ちとなったポート番号を該負荷分散装置へ通知するポート番号通知手段をそなえたことを特徴とする、負荷分散システムに使用されるサーバ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のサーバへの負荷を分散するための技術に関し、特に、サーバの負荷を動的に検出し、また、振り分けの割合などを自動的に決定するのに用いて好適な技術に関する。
【０００２】
【従来の技術】
近年、インターネットの普及により、サーバへのアクセスの負荷を低減するために、サービスプロバイダなどが複数のサーバに負荷を分散させる装置（負荷分散装置）を運用している。
この負荷分散装置においては、例えば、下記の特許文献１にも記載されているように、サーバ群との間で負荷計測のための通信を行なったり、中継するサービスパケット〔ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）やＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）等のパケットデータ〕を監視して接続数やサーバの応答（レスポンス）時間を計測したりすることによって、各サーバの負荷状態を把握し、これに応じてサービスを複数サーバに分配することが行なわれる。
【０００３】
【特許文献１】
特許第３３６９４４５号公報（特開平１１−９６１２８号公報）
【０００４】
【発明が解決しようとする課題】
しかしながら、このような従来の負荷分散装置では、負荷分散のためのサーバ設定や、サーバ毎の振り分けの割合などの設定をオペレータが手動で行なうことによって、運用がなされている。例えば、負荷分散装置に新たにサーバを接続する場合、そのサーバの設定を負荷分散装置に反映する必要がある。また、サービス（コンテンツ）の種類によって担当サーバを分けるような場合にも、負荷分散装置に対して設定を加える必要がある。
【０００５】
さらに、従来の負荷分散装置は、サーバ単位で負荷状況を測定しており、受信パケットの振り分けもサーバ単位で行なっているため、１つのサーバが複数のアプリケーションプログラム（以下、「サーバアプリケーション」ともいう）をそなえている場合に、その一部のアプリケーションが動作中で当該アプリケーションに対応するサービスパケットの処理が可能な状態にあっても、当該サーバにはパケットが振り分けられなかったり、対応するサーバアプリケーションが動作していないのにも関わらずパケットが振り分けられてしまったりといった非効率な運用がなされてしまう。
【０００６】
本発明は、以上のような課題に鑑み創案されたもので、オペレータ等の人手を介さずに負荷分散の設定を自動的に行なえ、且つ、サーバで動作中のアプリケーションを考慮した効率的な負荷分散を行なえるようにすることを目的とする。
【０００７】
【課題を解決するための手段】
上記の目的を達成するために、本発明のサーバ負荷分散方法は、１以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムにおいて、該複数のサーバが、それぞれ、パケット受信待ちのポート番号を該負荷分散装置へ通知し、該負荷分散装置が、該サーバから通知されたポート番号に基づいて、同一ポート番号でパケット受信待ちとなっている複数のサーバへ受信パケットを振り分けることを特徴としている。
【０００８】
ここで、該負荷分散装置は、該ポート番号の通知を受けると、該ポート番号別に該サーバにアクセスして当該アクセスに対する応答時間をそれぞれ計測し、当該計測結果に基づいて該複数のサーバへの該受信パケットの振り分け比率を決定するようにしてもよい。なお、該負荷分散装置は、該サーバに対するアクセスを定期的に行なって該応答時間を定期的に計測し、当該計測結果に基づいて該受信パケットの振り分け比率を定期的に変更するようにしてもよい。
【０００９】
次に、本発明の負荷分散システムは、１以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえたシステムであって、該サーバが、それぞれ、該アプリケーションプログラムが起動してパケット受信待ちとなったポート番号を該負荷分散装置へ通知するポート番号通知手段をそなえるとともに、該負荷分散装置が、該サーバの該ポート番号通知手段から該ポート番号の通知を受けるポート番号受信手段と、該ポート番号受信手段で受信したポート番号を基に同一ポート番号でパケット受信待ちとなっているサーバについての対応表を作成する対応表作成手段と、該対応表作成手段で作成された該対応表に基づいて同一ポート番号でパケット受信待ちとなっているサーバに受信パケットを振り分ける受信パケット振り分け手段とをそなえたことを特徴としている。
【００１０】
さらに、本発明の負荷分散システムに使用される負荷分散装置は、１以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムに使用されるものであって、該サーバからパケット受信待ちとなっているポート番号の通知を受けるポート番号受信手段と、該ポート番号受信手段で受信したポート番号を基に同一ポート番号でパケット受信待ちとなっているサーバについての対応表を作成する対応表作成手段と、該対応表作成手段で作成された該対応表に基づいて同一ポート番号でパケット受信待ちとなっているサーバに受信パケットを振り分ける受信パケット振り分け手段とをそなえたことを特徴としている。
【００１１】
次に、本発明の負荷分散システムに使用されるサーバは、１以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムに使用されるものであって、該アプリケーションプログラムが起動してパケット受信待ちとなったポート番号を該負荷分散装置へ通知するポート番号通知手段をそなえたことを特徴としている。
【００１２】
【発明の実施の形態】
〔Ａ〕第１実施形態の説明
図１は本発明の第１実施形態としての負荷分散システムの構成を示すブロック図で、この図１に示す負荷分散システム１は、複数のサーバ（計算機）２−１，２−２，２−３，…（以下、サーバＡ，Ｂ，Ｃ，…とそれぞれ表記することもある）と、これらのサーバ２−ｉ（ｉは２以上の整数）と図示しない複数のクライアント（計算機）が接続されたＬＡＮ等のネットワークとの間において、上記クライアントからのユーザパケット（サービスリクエスト）をサーバ２−ｉに振り分けてサーバ２−ｉの負荷を分散させる負荷分散装置３とをそなえて構成されている。
【００１３】
そして、各サーバ２−ｉは、それぞれ、ＦＴＰやＨＴＴＰ等で通信可能な１以上のアプリケーションプログラム（サーバプログラム）２１，オペレーティングシステム（ＯＳ）２２，ハードウェア部２３等をそなえて構成され、負荷分散装置３は、負荷分散制御プログラム３１，オペレーティングシステム（ＯＳ）３２，ハードウェア部３３等をそなえて構成されている。なお、負荷分散装置３は、ハードウェア部３３のインタフェース部３３３により、各サーバ２−ｉとそれぞれ起動中のアプリケーションプログラム２１に応じたインタフェースポート（ポート番号）を介して接続される。
【００１４】
ここで、サーバ２−ｉにおいて、アプリケーションプログラム（以下、「サーバアプリケーション」ともいう）２１は、クライアントと接続（通信）する機能を有するプログラムであって、ＯＳ２２により起動されると、クライアントとの通信のために、ＯＳ２２との間で特定のポート番号を指定してソケットをオープンする機能を有するものである。具体的に、サーバアプリケーション２１は、ソケット関数〔ｓｏｃｋｅｔ（）関数〕を実行することでソケット（ｓｏｃｋｅｔ）を作成（ソケットオープン）し、バインド関数〔ｂｉｎｄ（）関数〕を実行して作成したソケットに名前を付け（ＩＰアドレス及びポート番号を割り当て）、さらに、リスニング関数〔ｌｉｓｔｅｎ（）関数〕を実行して、パケット受信待ち（クライアントからの接続要求待ち）状態になる。
【００１５】
なお、ポート番号（単に「ポート」と称することもある）とは、インターネット上の通信において、複数の相手と同時に接続を行なうためにＩＰアドレスの下に設けられたサブ（補助）アドレス（一般に、０から６５５３５までの数字）を意味する。ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）で通信を行なう計算機は、ネットワーク内での住所にあたるＩＰアドレスをもっているが、複数の計算機（ＩＰアドレス）と同時に通信するために、補助アドレスとして複数の「ポート」をもっている。
【００１６】
この「ポート」とＩＰアドレスとを組み合わせたネットワークアドレスを「ソケット」と呼び、接続を行なう場合は必ずこのＩＰアドレスとポート番号の組（ソケット）を指定する。そして、指定されたＩＰアドレスと他のＩＰアドレス上のポートとが結合（バインド）することにより、複数のＩＰアドレス（クライアント）との同時通信が可能となるのである。
【００１７】
つまり、ＴＣＰ／ＩＰ通信において、データの送受信は、通常、「ソケット」単位で行なわれる。換言すれば、「ソケット」には、通信を行なうアプリケーション２１がＴＣＰ／ＩＰを扱うための仮想的なインタフェースという意味もある。そして、アプリケーション２１は、ＩＰアドレスと「ポート」の組である「ソケット」を指定して回線を開く（オープンする）だけで、通信手順の詳細を気にすることなくデータの送受信を行なうことができる。
【００１８】
次に、ＯＳ２２は、サーバ２−ｉの全体動作を統括制御するものであるが、本実施形態では、上述のごとくパケット受信待ち状態となった（ソケットオープンした）サーバアプリケーション２１に対応するポート番号を自サーバの識別子（例えば、ＩＰアドレス）とともに負荷分散装置３へ通知するためのメッセージ（以下、ポート番号通知メッセージという）を生成するポート番号通知部２２１としての機能をそなえており、これにより、負荷分散装置３では、どのサーバ２−ｉがどのポート番号でパケット受信待ちとなっているか（つまり、現在、どのサーバ２−ｉでどのサーバアプリケーション２１が起動しているか）を把握することが可能となる。
【００１９】
なお、ハードウェア部２３には、負荷分散装置３との通信を可能にするインタフェース等が設けられている。
一方、負荷分散装置３において、負荷分散制御プログラム３１は、クライアントから受信されたパケット（ユーザパケット）を複数のサーバ２−ｉへ振り分けてサーバ２−ｉの負荷を分散させるためのプログラムであるが、ここでは、次のような機能を兼ね備えている。
【００２０】
（１）サーバ２−ｉからＯＳ３２を通じて通知されるポート番号通知メッセージを受信するポート番号受信部３１１としての機能
（２）このポート番号受信部３１１で受信されたポート番号に基づいて、例えば図２に示すように、ポート番号とそのポート番号でパケット受信待ちとなっているサーバ（識別子）とを対応付けたポート番号／サーバ対応表（テーブル）４を作成するポート番号／サーバ対応表作成部３１２としての機能
かかるポート番号／サーバ対応表４により、負荷分散装置３は、例えば、サーバ２−１とサーバ２−３がそれぞれ同じポート番号＝＃１（アプリケーションａ）でパケット受信待ちとなっており、サーバ２−１とサーバ２−２がそれぞれ同じポート番号＝＃２（アプリケーションｂ）でパケット受信待ちとなっており、サーバ２−２と２−３がそれぞれ同じポート番号＝＃３（アプリケーションｃ）でパケット受信待ちとなっていることを把握することが可能となる。
【００２１】
ＯＳ３２は、負荷分散装置３の全体動作を統括制御するものであるが、ここでは、上述のごとくポート番号／サーバ対応表作成部３１２により作成されたポート／サーバ対応表４をハードウェア部３３におけるＲＡＭ等のメモリ３３１に格納・保持させる機能もそなえている。
そして、ハードウェア部３３における分散制御部３３２は、上記メモリ３３１に保持されたポート番号／サーバ対応表４に基づいて、クライアントから受信されるユーザパケットの振り分け先を決定して、その振り分け先サーバ２−ｉ宛に受信パケットを転送する分散制御を行なうものである。つまり、この分散制御部３３２と上記の負荷分散制御プログラム３１とで、上記の対応表４に基づいて同一ポート番号でパケット受信待ちとなっているサーバ２−ｉに受信パケットを振り分ける受信パケット部としての機能が実現されていることになる。
【００２２】
なお、この負荷分散の際の振り分けルールについては公知の手法を用いることができる。例えば、同一ポート番号＃ｊ（ただし、ｊは０以上の整数）でパケット受信待ちのサーバ２−ｉに公平に振り分けてもよいし、後述するように、当該サーバ２−ｉの負荷を実測してその実測値に応じて振り分け比率（割合）を変えるようにしてもよい。
【００２３】
以下、上述のごとく構成された本実施形態の負荷分散システムの動作について、図３を参照しながら説明する。
まず、例えば、サーバ２−１，２−２（サーバＡ，Ｂ）において、クライアントと接続（通信）するためのサーバアプリケーション２１が起動すると（ステップＳ１）、クライアントとの通信のために、当該アプリケーション２１は、ＯＳ２２との間で或るポート番号＃ｊを指定してソケットをオープンする。即ち、サーバアプリケーション２１は、ｓｏｃｋｅｔ（）関数を実行することでｓｏｃｋｅｔを作成し、ｂｉｎｄ（）関数を実行してｓｏｃｋｅｔに名前を付け、次いで、ｌｉｓｔｅｎ（）関数を実行して、パケット受信待ち状態となる。
【００２４】
この段階で、ＯＳ２２は、ポート番号通知部２２１により、オープンしたソケットに割り当てられたＩＰアドレス，ポート番号＃ｊを負荷分散装置３に通知するためのポート番号通知メッセージを作成し、オープンしたソケットを通じて接続している負荷分散装置３に対して、当該メッセージを送信する（ステップＳ２）。
【００２５】
負荷分散装置３では、負荷分散制御プログラム３１において、上記メッセージがポート番号受信部３１１で受信されると、当該ポート番号＃ｊを基に、ポート番号／サーバ対応表作成部３１２が、前記のポート番号／サーバ対応表４（以下、単に「対応表４」と表記することがある）を作成する。この対応表４は、ＯＳ３２の機能により、メモリ３３１に保持されて登録（更新）される（ハードウェア部３３に対するテーブル設定；ステップＳ３）。
【００２６】
その後、クライアントからのユーザパケット（接続要求）が負荷分散装置３にて受信されると（ユーザアクセス；ステップＳ４）、分散制御部３３２が、メモリ３３１にアクセスして、保持されている対応表４を参照し（ステップＳ５）、負荷分散させる（受信ユーザパケットの振り分け先）サーバ２−ｉを決定し、決定したサーバ２−ｉ宛にインタフェース部３３３を通じて受信ユーザパケットを出力することで負荷分散を行なう（ステップＳ６）。
【００２７】
例えば図４においては、ポート番号＃１でパケット受信待ちとなっているサーバアプリケーション２１に対応する受信ユーザパケットがサーバＡ，Ｂへそれぞれ振り分けられ、ポート番号＃２でパケット受信待ちとなっているサーバアプリケーション２１に対応する受信ユーザパケットがサーバＡへ振り分けられている状態を示している。
【００２８】
以上のようにして、複数サーバ２−ｉへの負荷分散を、オペレータによる設定なしで負荷分散装置３において自動的に決定して、ユーザアクセスをサーバ２−ｉでオープンしているポート（起動中のサーバアプリケーション２１）単位で効率良く分散させることが可能となる。
〔Ｂ〕第２実施形態の説明
図５は本発明の第２実施形態としての負荷分散システムの構成を示すブロック図で、この図５に示す負荷分散システム１は、図１により前述したシステムに比して、負荷分散装置３の負荷分散制御プログラム３１に、応答時間管理部３１３としての機能がそなえられている点が異なる。なお、その他の既述の符号と同一符号を付して示す構成要素については、特に断らない限り、既述のものと同一もしくは同様のものである。
【００２９】
ここで、上記の応答時間管理部３１３は、サーバ２−ｉから通知されるパケット受信待ち状態となっているポート＃ｊに対して或るデータ（例えば、ファイルデータでもよいし、ＷＥＢコンテンツ等でもよい）を受信するためにアクセス（テストアクセス）して（即ち、リクエストメッセージを送信して）、そのデータを受信するまでの時間（応答時間）をサーバ２−ｉ別に計測して管理するもので、本実施形態では、計測した応答時間に応じてサーバ２−ｉへの受信ユーザパケットの振り分け比率が決定されて前記対応表４に反映されるようになっている。
【００３０】
例えば、応答時間管理部３１３は、計測したポート番号＃ｊに対する応答時間をサーバ２−ｉ別に比較して、サーバ２−ｉへの受信ユーザパケットの振り分け比率を決定する（例えば、応答時間の短いサーバ２−ｉほど振り分け比率を高くする等）。
つまり、この応答時間管理部３１３は、ポート番号受信部３１１でポート番号の通知を受けると、そのポート番号別にサーバ２−ｉにアクセスして当該アクセスに対する応答時間をそれぞれ計測する（第１）応答時間計測部３１３ａとしての機能と、その計測結果に基づいてサーバ２−ｉへの受信パケットの振り分け比率を決定する（第１）振り分け比率決定部３１３ｂとしての機能とを兼ね備えていることになる。
【００３１】
そして、この場合、ポート番号／サーバ対応表作成部３１２は、例えば図６に示すように、サーバ２−ｉからポート番号＃ｊの通知を受けて対応表４を作成する際、上述のごとく決定した振り分け比率をポート番号＃ｊ及びサーバ２−ｉと対応付けた対応表４を作成するようになっている。
なお、この図６においては、同一ポート番号＝＃１でパケット受信待ち状態となっている２台のサーバＡ，Ｂの応答時間計測の結果、サーバＡの負荷の方が軽いため、サーバＢに振り分けるパケット数の２倍をサーバＡに振り分けることが示されている。
【００３２】
以下、上述のごとく構成された本実施形態の負荷分散システムの動作について、図７を参照しながら説明すると、まず、この場合も、例えば、サーバ２−ｉにおいて、クライアントと接続（通信）するアプリケーション２１が起動して、或るポート番号＃ｊを指定してソケットがオープンすると、ＯＳ２２は、ポート番号通知部２２１により、オープンしたポート番号＃ｊを自サーバ２−ｉのＩＰアドレスとともに負荷分散装置３に通知する（ステップＳ１１）。
【００３３】
負荷分散装置３では、負荷分散制御プログラム３１において、サーバ２−ｉから通知されたポート番号＃ｊを基に、ポート番号／サーバ対応表作成部３１２が、ポート番号／サーバ対応表４を作成する。この対応表４は、ＯＳ３２の機能により、メモリ３３１に保持されて登録（更新）される（ステップＳ１２）。
その後、負荷分散装置１２は、負荷分散制御プログラム３１の応答時間管理部３１３により、サーバ２−ｉ別にポート番号＃ｊに対するテストアクセスを行なって、その応答が返ってくるまでの時間（データ受信までの時間）を計測する（ステップＳ１３，Ｓ１４）。
【００３４】
ポート番号／対応表作成部３１２は、応答時間管理部３１３による計測結果を基にそのサーバ２−ｉに割り振る負荷の割合（振り分け比率）を計算し、その結果を対応表４に付加して反映させる（ステップＳ１５）。当該対応表４は、ＯＳ３２の機能により、ハードウェア部３３のメモリ３３１に書き込まれ、その後にユーザパケットが受信されると、負荷分散装置３は、分散制御部３３２により、その対応表４に書き込まれた負荷の割合で当該受信ユーザパケットの振り分けを行なう。
【００３５】
以上のようにして、本実施形態では、オペレータによる明示的な設定なしで、ポート番号＃ｊ単位で自動的にサーバ２−ｉに対する振り分け比率を決定（変更）して、負荷分散制御を効率良く行なうことができる。また、サーバ２−ｉの増減設，サーバ２−ｉの電源入／切があっても、自動的に、対応表４の登録・更新が行なわれるので、オペレータ等による明示的な設定なしに、最適な負荷分散制御が実現される。
【００３６】
なお、上述した例では、負荷分散装置３がサーバ２−ｉの負荷を計測するに当たって、そのための通信（テストアクセス）を行なっているが、勿論、例えば、サーバ２−ｉからそのＣＰＵ使用率を通知させるなど、他の手法によって計測することも可能である。
（Ｂ１）第２実施形態の第１変形例の説明
上述したように振り分け比率を決定した後、サーバ２−ｉの負荷状態が変わることも考えられる。これに対応するためには、負荷分散装置３の上記応答時間管理部３１３（第１応答時間計測部３１３ａ）によって、上記テストアクセスを定期的に行なってその応答時間を計測するようにしてもよい。
【００３７】
即ち、図７により上述したステップＳ１３〜Ｓ１５の処理を定期的に繰り返し行ない、それに対するサーバ２−ｉの応答時間をそれぞれ計測して、その応答時間に応じた振り分け比率の再計算（再決定）を（第１）振り分け比率決定部３１３ｂによって行なうことで、サーバ２−ｉの負荷状態に応じて動的に振り分け比率を定期的に更新するようにするのである（図８参照）。これにより、サーバ２−ｉの負荷変動に対応して振り分け比率を最適化することができ、効率良く負荷分散を行なうことができる。
【００３８】
（Ｂ２）第２実施形態の第２変形例の説明
図９は図５により上述した負荷分散システムの第２変形例を示すブロック図で、この図９に示す負荷分散システム１は、前記の応答時間管理部３１３に代えて、応答時間管理部３１４がそなえられている点が異なる。
この応答時間管理部３１４は、サーバ２−ｉ宛のユーザパケット（接続要求）及びそれに対する当該サーバ２−ｉからクライアント宛の応答データの流れをポート番号＃ｊ別に監視して、サーバ２−ｉ宛のユーザパケットに対する応答データを受信するまでの時間を計測するもので、その計測結果に応じてサーバ２−ｉへの受信ユーザパケットの振り分け比率が決定されて前記対応表４に反映されるようになっている。
【００３９】
つまり、本例では、上述した第１変形例のようにサーバ２−ｉの負荷を計測するために、負荷分散装置３からサーバ２−ｉにテストアクセスするのではなく、ユーザアクセス（ユーザパケット）及びその応答をポート番号＃ｊ単位で常時監視してサーバ２−ｉのユーザアクセスに対する応答時間をそれぞれ計測することで、サーバ２−ｉの負荷を計測するようになっているのである。
【００４０】
このため、本変形例の応答時間管理部３１４は、複数のサーバ２−ｉに対するユーザアクセスをポート番号別に監視して当該サーバ２−ｉのユーザアクセスに対する応答時間をそれぞれ計測する（第２）応答時間計測部３１４ａとしての機能と、その計測結果に基づいてサーバ２−ｉへの受信パケットの振り分け比率を決定する（第２）振り分け比率決定部３１４ｂとしての機能とを兼ね備えている。
【００４１】
これにより、第１変形例のようにサーバ２−ｉに対してテストアクセスを行なう場合に比して、サーバ２−ｉと負荷分散装置３との間のトラフィックを増大させることなく、且つ、より精度の高いサーバ負荷監視を実現しながら、ポート番号＃ｊ単位で自動的にサーバ２−ｉに対する振り分け比率を決定して、負荷分散制御を効率良く行なうことができる。
【００４２】
なお、この場合、負荷分散装置３は、応答時間管理部３１４によるユーザアクセスの監視結果によりポート番号／対応表作成部３１２において定期的に対応表４の振り分け比率を再計算して、その計算結果を対応表４に反映させるようにすることもできる。このようにすれば、サーバ２−ｉの負荷変動に対応して振り分け比率を最適化することができ、より効率良く負荷分散を行なうことができる。
【００４３】
（Ｂ３）第２実施形態の第３変形例の説明
上述した第１及び第２変形例では、対応表４の作成及び対応表４の定期的な更新を負荷分散装置３によるテストアクセス又は負荷分散装置３でのユーザアクセス監視のいずれかのサーバ負荷測定手法により行なっているが、例えば図１０に示すように、対応表４の作成は負荷分散装置３によるテストアクセス（ステップＳ１１〜Ｓ１５）、対応表４の定期的な更新はユーザアクセスの監視（ステップＳ１６〜Ｓ１８）により行なってもよいし、逆に、対応表４の作成はユーザアクセスの監視、対応表４の定期的な更新は負荷分散装置３によるテストアクセスというように、サーバ負荷測定手法を組み合わせて行なうことも可能である。
【００４４】
〔Ｃ〕第３実施形態の説明
図１１は本発明の第３実施形態としての負荷分散システムの構成を示すブロック図で、この図１１に示す負荷分散システム１は、図１，図５又は図９により前述したシステムに比して、各サーバ２−ｉのアプリケーション２１に、それぞれポリシー制御部２１１としての機能がそなえられるとともに、負荷分散装置３の負荷分散制御プログラム３１に、ポリシー管理部３１５がそなえられている点が異なる。
【００４５】
また、本実施形態では、サーバ２−ｉ毎に異なるコンテンツの種類（例えば、サーバ２−ｉがＷＥＢサーバであった場合、ｊｐｇやｇｉｆ等の画像データと、ｈｔｍｌ文書等の文字データ等）を扱う場合を想定する。なお、以下においても、既述の符号と同一符号を付すものは、特に断らない限り、既述のものと同一もしくは同様のものである。
【００４６】
ここで、負荷分散装置３のポリシー管理部３１５は、サーバ２−ｉから通知されたポート番号を基に同じポート番号＃ｊで複数のサーバ２−ｉでパケット受信待ち状態になっていることを認識すると、それらのサーバ２−ｉに当該ポート番号＃ｊでパケット受信待ち状態になっているサーバの情報（ＩＰアドレス等）を通知するとともに、その後に、当該サーバ２−ｉ間でネゴシエーションにより決定した下記の振り分けルール（ポリシー）を受信すると、当該振り分けルールをポート番号／サーバ対応表作成部３１２によって作成された対応表４に反映させるものである。
【００４７】
つまり、ポリシー管理部３１５は、どのサーバ２−ｉがどのポート番号でパケット受信待ちとなっているかを示す情報を複数のサーバ２−ｉに通知するサーバ情報通知部３１５ａとしての機能と、当該通知を受けたサーバ２−ｉ同士が受信パケットの振り分けルールのネゴシエーションを行なうことによりいずれかのサーバ２−ｉから通知される振り分けルールを受信する振り分けルール受信部３１５ｂとしての機能とを兼ね備えているのである。
【００４８】
一方、サーバ２−ｉのポリシー制御部２１１は、上記の負荷分散装置３のポリシー管理部３１５から通知されるサーバ情報（ＩＰアドレス）により特定される他のサーバ２−ｋ（ｋは自然数でｋ≠ｊ）におけるポリシー制御部２１１とネゴシエーションして、お互いにどの種類のコンテンツの提供を担当するか（振り分けルール）を決定し、その結果（振り分けルール）を負荷分散装置３に通知するものである。
【００４９】
つまり、本例のサーバ２−ｉは、以下の（１）〜（３）に示す各部としての機能を兼ね備えていることになる。
（１）ポート番号通知部２２１によりポート番号を負荷分散装置３へ通知した後、負荷分散装置３からどのサーバ２−ｉがどのポート番号でパケット受信待ちとなっているかを示す情報の通知を受けるサーバ情報受信部２１１ａ
（２）サーバ情報受信部２１１ａで受信した情報に基づいて他のサーバ２−ｉと受信パケットの振り分けルールのネゴシエーションを行なって振り分けルールを決定するネゴシエーション部２１１ｂ
（３）ネゴシエーション部２１１ｂにより決定した振り分けルールを負荷分散装置３へ通知する振り分けルール通知部２１１ｃ
以下、上述のごとく構成された本実施形態の負荷分散システムの動作について、図１２及び図１３を参照しながら説明する。
【００５０】
まず、この場合も、例えば図１２に示すように、サーバ２−１（サーバＡ）において、クライアントと接続（通信）するアプリケーション２１が起動して（ステップＳ２１）、或るポート番号＃ｊを指定してソケットがオープンすると、ＯＳ２２は、ポート番号通知部２２１により、オープンしたポート番号＃ｊを自サーバ２−ｉのＩＰアドレスとともに負荷分散装置３に通知する（ステップＳ２２）。
【００５１】
負荷分散装置３では、負荷分散制御プログラム３１において、サーバ２−ｉから通知されたポート番号＃ｊを基に、ポート番号／サーバ対応表作成部３１２が、ポート番号／サーバ対応表４を作成する。この対応表４は、ＯＳ３２の機能により、メモリ３３１に保持されて登録（更新）される（ステップＳ２３）。
一方、サーバ２−２（サーバＢ）においても、図１２に示すように、クライアントと接続する或るサーバアプリケーション２１が起動して（ステップＳ２４）、或るポート番号＃ｊを指定してソケットがオープンすると、ＯＳ２２は、ポート番号通知部２２１により、オープンしたポート番号＃ｊを自サーバ２−ｉのＩＰアドレスとともに負荷分散装置３に通知する（ステップＳ２５）。
【００５２】
負荷分散装置３では、負荷分散制御プログラム３１において、サーバ２−ｉから通知されたポート番号＃ｊを基に、ポート番号／サーバ対応表作成部３１２が、ポート番号／サーバ対応表４を更新し、その内容が、ＯＳ３２の機能により、メモリ３３１に保持されたポート番号／サーバ対応表４に反映される（ステップＳ２６）。
【００５３】
そして、負荷分散装置３は、ポリシー管理部３１５により、上記対応表４の内容に基づいて、同一ポート番号がオープンしているサーバアドレスをいずれかのサーバＡ，Ｂ（例えば、サーバＢ）に通知する（ステップＳ２７）。この通知を受けたサーバＢは、図１２及び図１３に示すように、ポリシー制御部２１１によって、自己及び他のサーバＡが担当するコンテンツの種類を決定する。即ち、例えば、サーバＡは画像等のコンテンツの配信を担当し、サーバＢはｈｔｍｌファイル等の配信を担当する等の役割分担を決定する。
【００５４】
サーバＢは、決定した役割分担（振り分けルール）を負荷分散装置３から通知されたサーバアドレスをもつサーバＡに通知し（ステップＳ２８）、サーバＡは、サーバＢからの通知内容（振り分けポリシー）に問題がなく許容できれば、その旨をサーバＢに応答する（ステップＳ２９）。サーバＢは、当該応答を受けることにより、決定した振り分けポリシーをサーバＡとのネゴシエーション結果としてポリシー制御部２１１によって負荷分散装置３に通知する（ステップＳ３０）。
【００５５】
そして、負荷分散装置３は、ポリシー管理部３１２により、サーバＢから通知された振り分けポリシーの内容を対応表４に反映（設定）して更新する（ステップＳ３１）。以降、負荷分散装置３は、当該対応表４に従ってサーバＡ，Ｂに対する受信ユーザパケットの振り分けを実行する。
即ち、負荷分散装置３は、例えば、クライアントからのリクエスト（ＨＴＴＰアクセス等）に対して、リクエストされたファイルの種類を判断して当該リクエスト（受信ユーザパケット）の振り分け先をサーバＡ，Ｂに分散させる。
【００５６】
このように、負荷分散装置３に、同じポートが開いているサーバ２−ｉのアドレスをサーバ２−ｉに通知する機能をもたせ、その通知を受けたサーバ２−ｉに、同じポートが開いている他のサーバ２−ｉと相互に振り分けルール決定のためのネゴシエーションを行なう機能をもたせることにより、サーバ２−ｉの扱うコンテンツの種類で担当サーバ２−ｉを自動的に分類・整理することが可能となる。したがって、オペレータ等により設定作業等の手間が省け、ネットワーク運用のコスト削減が期待できる。
【００５７】
なお、上記の例では、コンテンツの種類によって「振り分けルール」を決定しているが、勿論、他の要素によって決定するようにしてもよい。
また、本発明は、上述した各実施形態に限定されず、本発明の趣旨を逸脱しない範囲で種々変形して実施できることはいうまでもない。
〔Ｄ〕付記
（付記１）  １以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムにおいて、
該複数のサーバが、それぞれ、パケット受信待ちのポート番号を該負荷分散装置へ通知し、
該負荷分散装置が、該サーバから通知されたポート番号に基づいて、同一ポート番号でパケット受信待ちとなっている複数のサーバへ受信パケットを振り分けることを特徴とする、サーバ負荷分散方法。
【００５８】
（付記２）  該負荷分散装置が、
該ポート番号の通知を受けると、該ポート番号別に該サーバにアクセスして当該アクセスに対する応答時間をそれぞれ計測し、
当該計測結果に基づいて該複数のサーバへの該受信パケットの振り分け比率を決定することを特徴とする、付記１記載のサーバ負荷分散方法。
【００５９】
（付記３）  該負荷分散装置が、
該サーバに対するアクセスを定期的に行なって該応答時間を定期的に計測し、
当該計測結果に基づいて該受信パケットの振り分け比率を定期的に変更することを特徴とする、付記２記載のサーバ負荷分散方法。
（付記４）  該負荷分散装置が、
該複数のサーバに対するユーザアクセスをポート番号別に監視して該サーバの該ユーザアクセスに対する応答時間をそれぞれ計測し、
当該計測結果に基づいて該複数のサーバへの該受信パケットの振り分け比率を決定することを特徴とする、付記２記載のサーバ負荷分散方法。
【００６０】
（付記５）  該負荷分散装置が、
該ユーザアクセスに対する該サーバの応答時間を定期的に計測し、
当該計測結果に基づいて該受信パケットの振り分け比率を定期的に変更することを特徴とする、付記４記載のサーバ負荷分散方法。
（付記６）  該負荷分散装置が、通知されたポート番号を基にどのサーバがどのポート番号でパケット受信待ちとなっているかを示す情報を複数のサーバに通知し、
該通知を受けたサーバ同士が、該受信パケットの振り分けルールのネゴシエーションを行なって、その結果をいずれかのサーバが該負荷分散装置に通知し、
該負荷分散装置が、通知された振り分けルールに従って該受信パケットの振り分けを行なうことを特徴とする、付記１記載のサーバ負荷分散方法。
【００６１】
（付記７）  １以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムであって、
該サーバが、それぞれ、
該アプリケーションプログラムが起動してパケット受信待ちとなったポート番号を該負荷分散装置へ通知するポート番号通知手段をそなえるとともに、
該負荷分散装置が、
該サーバの該ポート番号通知手段から該ポート番号の通知を受けるポート番号受信手段と、
該ポート番号受信手段で受信したポート番号を基に同一ポート番号でパケット受信待ちとなっているサーバについての対応表を作成する対応表作成手段と、
該対応表作成手段で作成された該対応表に基づいて同一ポート番号でパケット受信待ちとなっているサーバに受信パケットを振り分ける受信パケット振り分け手段とをそなえたことを特徴とする、負荷分散システム。
【００６２】
（付記８）  １以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムに使用される該負荷分散装置であって、
該サーバからパケット受信待ちとなっているポート番号の通知を受けるポート番号受信手段と、
該ポート番号受信手段で受信したポート番号を基に同一ポート番号でパケット受信待ちとなっているサーバについての対応表を作成する対応表作成手段と、
該対応表作成手段で作成された該対応表に基づいて同一ポート番号でパケット受信待ちとなっているサーバに受信パケットを振り分ける受信パケット振り分け手段とをそなえたことを特徴とする、負荷分散システムに使用される負荷分散装置。
【００６３】
（付記９）  該受信パケット振り分け手段が、
該ポート番号受信手段で該ポート番号の通知を受けると、該ポート番号別に該サーバにアクセスして当該アクセスに対する応答時間をそれぞれ計測する第１応答時間計測手段と、
該第１応答時間計測手段の計測結果に基づいて該複数のサーバへの該受信パケットの振り分け比率を決定する第１振り分け比率決定手段とをそなえて構成されたことを特徴とする、付記８記載の負荷分散システムに使用される負荷分散装置。
【００６４】
（付記１０）  該第１応答時間計測手段が、該サーバに対するアクセスを定期的に行なって該応答時間を定期的に計測するように構成されるとともに、
該第１振り分け比率決定手段が、該第１応答時間計測手段の計測結果に基づいて該受信パケットの振り分け比率を定期的に変更するように構成されたことを特徴とする、付記９記載の負荷分散システムに使用される負荷分散装置。
【００６５】
（付記１１）  該受信パケット振り分け手段が、
該複数のサーバに対するユーザアクセスをポート番号別に監視して該サーバの該ユーザアクセスに対する応答時間をそれぞれ計測する第２応答時間計測手段と、
該第２応答時間計測手段の計測結果に基づいて該複数のサーバへの該受信パケットの振り分け比率を決定する第２振り分け比率決定手段とをそなえて構成されたことを特徴とする、付記８記載の負荷分散システムに使用される負荷分散装置。
【００６６】
（付記１２）  該第２応答時間計測手段が、該ユーザアクセスに対する該サーバの応答時間を定期的に計測するように構成されるとともに、
該第２振り分け比率決定手段が、該第２応答時間計測手段の計測結果に基づいて該受信パケットの振り分け比率を定期的に変更するように構成されたことを特徴とする、付記１１記載の負荷分散システムに使用される負荷分散装置。
【００６７】
（付記１３）  該受信パケット振り分け手段が、
該ポート番号受信手段で受信したポート番号に基づいて、どのサーバがどのポート番号でパケット受信待ちとなっているかを示す情報を複数のサーバに通知するサーバ情報通知手段と、
該通知を受けたサーバ同士が該受信パケットの振り分けルールのネゴシエーションを行なうことによりいずれかのサーバから通知される該振り分けルールを受信する振り分けルール受信手段とをそなえ、
該振り分けルール受信手段で受信された該振り分けルールに従って該受信パケットの振り分けを行なうように構成されたことを特徴とする、付記８記載の負荷分散システムに使用される負荷分散装置。
【００６８】
（付記１４）  １以上のアプリケーションプログラムを有する複数のサーバと、該複数のサーバとそれぞれ該アプリケーションプログラムに応じたインタフェースポートを介して接続されて受信パケットを該複数のサーバに振り分けることにより該サーバの負荷を分散させる負荷分散装置とをそなえた負荷分散システムに使用される該サーバであって、
該アプリケーションプログラムが起動してパケット受信待ちとなったポート番号を該負荷分散装置へ通知するポート番号通知手段をそなえたことを特徴とする、負荷分散システムに使用されるサーバ。
【００６９】
（付記１５）  該ポート番号通知手段により該ポート番号を該負荷分散装置へ通知した後、該負荷分散装置からどのサーバがどのポート番号でパケット受信待ちとなっているかを示す情報の通知を受けるサーバ情報受信手段と、
該サーバ情報受信手段で受信した情報に基づいて他のサーバと該受信パケットの振り分けルールのネゴシエーションを行なって振り分けルールを決定するネゴシエーション手段と、
該ネゴシエーション手段により決定した振り分けルールを該負荷分散装置へ通知する振り分けルール通知手段とをさらにそなえたことを特徴とする、付記１４記載の負荷分散システムに使用されるサーバ。
【００７０】
【発明の効果】
以上のように、本発明によれば、オペレータ等による明示的な設定なしに、負荷を分散させるサーバの決定、その負荷分散の振り分け割合の決定、サーバの状態の変化に動的に負荷の振り分け割合の変更、コンテンツの種類による負荷分散対象となるサーバの選択などが可能となり、少ないコストでのネットワーク運用が期待できるので、ネットワーク通信の分野において極めて有用である。
【図面の簡単な説明】
【図１】本発明の第１実施形態としての負荷分散システムの構成を示すブロック図である。
【図２】図１に示す負荷分散装置のポート番号／サーバ対応表作成機能を説明すべく負荷分散装置及びサーバの構成を示すブロック図である。
【図３】図１に示す負荷分散システムの動作を説明するためのシーケンス図である。
【図４】図１に示す負荷分散システムの動作を説明するための図である。
【図５】本発明の第２実施形態としての負荷分散システムの構成を示すブロック図である。
【図６】図５に示す負荷分散システムの動作を説明するための図である。
【図７】図５に示す負荷分散システムの動作を説明するためのシーケンス図である。
【図８】図７に示す負荷分散システムの第１変形例の動作を説明するためのシーケンス図である。
【図９】図５に示す負荷分散システムの第２変形例を示すブロック図である。
【図１０】図９に示す負荷分散システムの動作を説明するためのシーケンス図である。
【図１１】本発明の第３実施形態としての負荷分散システムの構成を示すブロック図である。
【図１２】図１１に示す負荷分散システムの動作を説明するためのシーケンス図である。
【図１３】図１１に示す負荷分散システムの動作を説明するための図である。
【符号の説明】
１  負荷分散システム
２−１，２−２，２−３，…  サーバ
３  負荷分散装置
４  ポート番号／サーバ対応表（テーブル）
２１  アプリケーションプログラム（サーバプログラム）
２２  オペレーティングシステム（ＯＳ）
２３  ハードウェア部
３１  負荷分散制御プログラム
３２  オペレーティングシステム（ＯＳ）
３３  ハードウェア部
２１１  ポリシー制御部
２１１ａ  サーバ情報受信部
２１１ｂ  ネゴシエーション部
２１１ｃ  振り分けルール通知部
２２１  ポート番号通知部
３１２  ポート番号／サーバ対応表作成部
３１３  応答時間管理部
３１３ａ  （第１）応答時間計測部
３１３ｂ  （第１）振り分け比率決定部
３１４  応答時間管理部
３１４ａ  （第２）応答時間計測部
３１４ｂ  （第２）振り分け比率決定部
３１５  ポリシー管理部
３１５ａ  サーバ情報通知部
３１５ｂ  振り分けルール受信部
３３１  メモリ
３３２  分散制御部
３３３  インタフェース部
【図１】
2005010983.tif 000003
【図２】
2005010983.tif 000004
【図３】
2005010983.tif 000005
【図４】
2005010983.tif 000006
【図５】
2005010983.tif 000007
【図６】
2005010983.tif 000008
【図７】
2005010983.tif 000009
【図８】
2005010983.tif 000010
【図９】
2005010983.tif 000011
【図１０】
2005010983.tif 000012
【図１１】
2005010983.tif 000013
【図１２】
2005010983.tif 000014
【図１３】
2005010983.tif 000015