(57)【特許請求の範囲】
【請求項１】
ルーティング機能を備えるネットワークに接続されたｋ台（ｋは複数）のサーバ装置を備え、前記ネットワーク経由のアクセスを、いずれかの前記サーバ装置が受信するサーバ装置群において、
前記ｋ台のサーバ装置のいずれにも割り当て可能な、ｎ個（ｎは０以上）の互いに異なるアドレスの各々が、前記ｋ台のサーバ装置のいずれか一つに割り当てられており、
いずれか一つの第一の前記サーバ装置にｍ個（ｍは２以上）のアドレスが割り当てられている場合、割り当てられている前記ｍ個のアドレスのうち（ｍ−１）個以下の所定数のアドレスを選択し、選択したアドレスの割り当て先を、前記第一のサーバ装置とは異なる一つの第二の前記サーバ装置へ変更する機能を備え、
前記第二のサーバ装置は、新たに割り当てられた前記（ｍ−１）個の前記アドレスに対する、前記ネットワーク経由のアクセスを受信する
ことを特徴とするサーバ装置群。
【請求項２】
請求項１に記載のサーバ装置群において、
前記第二のサーバ装置が、前記アドレスの割り当て先の変更の通知を前記ルーティング機能に対して送信する
ことを特徴とするサーバ装置群。
【請求項３】
請求項２に記載のサーバ装置群において、
前記アドレスの割り当て先の変更の通知には、gratuitous ARPメッセージを用いる
ことを特徴とするサーバ装置群。
【請求項４】
請求項１から３のいずれか一に記載のサーバ装置群において、
前記割り当て先を変更する機能が選択するアドレスは、
利用されていないアドレスであるか、または、
前記ｍ個のアドレスすべてが利用されている場合は、利用中の前記アドレスのうちのランダムな一つである
ことを特徴とするサーバ装置群。
【請求項５】
請求項１から４のいずれか一に記載のサーバ装置群において、
前記割り当て先を変更する機能は、
前記第一のサーバ装置へアドレス引継ぎ要求を送信し、
前記第一のサーバ装置からの、アドレスの引継ぎ応答に含まれる前記選択されたアドレスを前記第二のサーバ装置に登録する
ことを特徴とするサーバ装置群。
【請求項６】
請求項５に記載のサーバ装置群において、
前記第一のサーバ装置は、
前記アドレス引継ぎ要求に応答して、自サーバ装置に割り当てられているアドレスを選択し、
選択した前記アドレスについて、自サーバ装置への割り当ての削除と、前記アドレス引継ぎ応答の送信と、を行う
ことを特徴とするサーバ装置群。
【請求項７】
請求項１から６のいずれか一に記載のサーバ装置群において、
負荷の監視機能を備え、
前記監視機能は、前記所定数を、前記第一のサーバ装置の負荷と前記第二のサーバ装置の負荷との負荷の差に基づき決定する
ことを特徴とするサーバ装置群。
【請求項８】
請求項７に記載のサーバ装置群において、
以下の処理を繰り返し行い、前記所定数のアドレスの割り当て先の変更を行うことを特徴とするサーバ装置群：
前記監視機能は、前記第一のサーバ装置の負荷と、前記第二のサーバ装置の負荷と、を測定し、
前記割り当て先を変更する機能は、前記測定された負荷の差が所定値以上ある場合、前記第一のサーバ装置に割り当てられていた前記アドレスを一つ選択して、前記選択したアドレスの割り当て先を前記第二のサーバ装置へ変更する。
【請求項９】
請求項７または８に記載のサーバ装置群において、
前記監視機能は、
前記アドレスの割り当て先を前記第一のサーバ装置から前記第二のサーバ装置へ変更した日時を管理し、
前回の前記変更した日時から所定以上の期間が経過している場合に、前記負荷の差を計算する
ことを特徴とするサーバ装置群。
【請求項１０】
請求項７から９のいずれか一に記載のサーバ装置群において、
前記監視機能は、前記１から（ｍ−１）個の前記アドレスを、前記第一のサーバ装置から第二のサーバ装置へ割り当て先を変更するアドレスの候補として管理する
ことを特徴とするサーバ装置群。
【請求項１１】
請求項１０に記載のサーバ装置群において、
前記監視機能は、前記監視において、前記第一のサーバ装置に障害が発生した、と判断した場合、管理する前記アドレスの候補の割り当て先を前記第二のサーバ装置へ変更する
ことを特徴とするサーバ装置群。
【請求項１２】
請求項７から１１のいずれか一に記載のサーバ装置群において、
各々の前記サーバ装置が前記監視機能を備え、自サーバ装置との負荷の差を測定する
ことを特徴とするサーバ装置群。
【請求項１３】
請求項１から１２のいずれか一に記載のサーバ装置群と、当該サーバ装置群と接続される名前解決装置と、を含むネットワークシステムであって、
前記割り当て先の変更の対象となるアドレスは利用されていないアドレスであって、
前記名前解決装置は、
前記ｎ個のアドレスを2つ以上のアドレス群に分割して管理し、
前記アクセスの前に行われる名前解決要求に対する応答の対象となるアドレス群を所定のタイミングで切り替えることにより、前記応答の対象とはならないアドレス群を存在させる
ことを特徴とするネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される主題は、端末からの要求に対してネットワークを介してサービスを提供するサーバシステムに関する。
【背景技術】
【０００２】
Webサービスなど、ネットワーク上のサービス提供装置に端末からアクセスすることにより何らかのサービスを受けるという形態が一般的になってきている。サービス提供システム側は、サービス利用者数の増加に応じてシステムの増強を行うことが必要である。
【０００３】
システムの性能の増強には、構成要素の性能を増強させる(スケールアップ)アプローチと、構成要素の数を増やす(スケールアウト)アプローチがある。前者のアプローチでは、構成要素の性能増強の上限に達した時点で性能拡張ができなくなるため、大規模なシステムでは主に後者のアプローチをとることが必要とされる。
【０００４】
端末からのアクセスをうけサービスを行うサービス提供システムのスケールアウトを行う場合、従来から負荷分散装置とよばれる特殊アプライアンスを複数のサービス提供装置の前段におくという方法がとられている。この方法では、端末は前段におかれた負荷分散装置に対してアクセスする。端末からのアクセスを受けた負荷分散装置は、配下にあるサービス提供装置の負荷などを勘案して適切なサービス提供装置を選択し、端末からの要求を転送する。システムとして処理能力が不足した場合は、配下のサービス提供装置を増やすことでスケールアウト型の処理能力向上が可能となる。
【０００５】
また、特許文献１に開示されている方法では、端末がサービス提供装置にアクセスする前に名前解決を行うことを利用し、端末からの名前解決要求への返答時に前記負荷分散装置と同様に適切なサービス提供装置を選択し、振り分け先のサービス提供装置へのアクセスに必要な情報を返すというアプローチをとっている。
【０００６】
また、非特許文献１では、スケールアウト型のサービス提供装置においてストレージサービスを提供する際に、各サービス提供装置の能力に応じて担当するデータ量を調整するために、各装置に1つ以上の仮想ノードを割り当て、その割り当てを変化させることで各サービス提供装置が担当するデータ格納量を調整する方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第7284051号明細書
【非特許文献】
【０００８】
【非特許文献１】Giuseppe DeCandia等, “Dynamo: Amazon's Highly Available Key-Value Store”, in the Proceedings of the 21st ACM Symposium on Operating Systems Principles, Stevenson, WA, October 2007.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述した、負荷分散装置を用いたスケールアウトが有効な範囲は、1つのサービス提供装置での処理量が負荷分散装置での振り分けにかかる処理量より非常に大きい場合に限られる。すなわち、サービス提供装置での処理が軽量なものであるか、サービス提供装置単体の性能が大きい場合などは、負荷分散装置での振り分け処理自体がボトルネックとなり、システム全体としての性能の上限を規定してしまう。また、負荷分散装置で障害が発生した場合、その配下すべてのサービス提供装置へのアクセスが不能となるため、二重化等負荷分散装置での障害対応に大きなコストがかかる。
【００１０】
特許文献１に開示されている名前解決を利用した負荷分散では、名前解決を行った後のサービス提供装置へのアクセスは、名前解決装置に障害が発生した場合であっても可能である。しかし、名前解決を適切に行うために、端末とサービス提供装置間の経路の情報などを収集しその状態を保持しておく必要がある。このため、この情報を保持している部分に障害が発生した場合には、以後の名前解決は困難になりシステム全体へのアクセスも困難になる。
【００１１】
また、非特許文献１に開示されている負荷分散方法では、仮想ノード数によって各サービス提供装置が担当するデータ格納量を調整可能であるが、端末側はどこにデータが格納されているかを意識せずにサービス提供装置のいずれかにアクセスするため、実際にはデータにアクセスするため再度の処理転送が発生する。このため、最初に挙げた負荷分散方法による負荷分散と同様、処理の転送がボトルネックとなりうる。これを回避するために、端末側にデータ格納先を判別する処理部を埋め込む方法も考えられるが、すべての端末に格納先判別のプログラムを配付し、サービス提供装置群の状況に応じて必要な情報を全端末に通知する必要があるなどの問題が残る。
【課題を解決するための手段】
【００１２】
本明細書で開示されるのは、負荷分散のための機能（Feature）がボトルネックや障害点となりうる点、および負荷分散のために端末側に負荷分散のための機能を備えることを要求する、という従来の課題を解決する方法と、当該方法を実行するサービス提供システムである。
【００１３】
開示されるサービス提供システムは、端末からサービス提供装置にアクセスする際に名前解決装置に対してサービス提供装置の識別子の名前解決を要求し、名前解決の結果得られたIPアドレスに対してサービス要求を行うシステムを前提とするものであり、さらに、以下の特徴をもつ。
【００１４】
複数のIPアドレスを格納したアドレス群管理テーブルをもち端末からの要求に対して当該アドレス群管理テーブルからアドレスを選択して返答する処理を行う名前解決装置と、アドレス群管理テーブルに格納されているIPアドレスのうち0個以上を重複なく割り当てた複数のサービス提供装置を備え、サービス提供装置の処理能力に応じた数のIPアドレスを各サービス提供装置に割り当てることで負荷の分散を実現する。
【００１５】
端末からの要求を受け付ける各サービス提供装置は、監視先となる他のサービス提供装置の負荷を計測し、監視先の負荷が監視元である自サービス提供装置の負荷より、大きい場合、負荷が大きい監視先装置に割り当てられているIPアドレスを負荷の小さい自装置に移動させることにより負荷の差を小さくする処理を行うことにより負荷の変動への対応を行う。
【００１６】
また、名前解決装置において、アドレス群管理テーブル内のアドレスを2つ以上の群に分割して管理し、日時から1つあるいは複数の群を選択する関数によって、端末からの要求に対して返答対象となるアドレスを日時ごとに切り替える機能を持つことにより、前記負荷譲渡に必要な未使用アドレスを高い確率で確保可能とする。
【００１７】
開示されるサービス提供システムのより具体的な態様は、複数のサービス提供装置と一つ以上の名前解決装置を備え、端末からのサービス要求に、いずれかのサービス提供装置が応答するサービス提供システムであって、
名前解決装置は、
ｋ台のサービス提供装置からなるサービス提供装置グループに対して割り当てられたｎ個（ｋはｎ以上）のIPアドレスからなるアドレス群を管理し、
端末からの名前解決要求に対して、管理するアドレス群から、いずれかひとつのIPアドレスを選択して応答する名前解決要求処理部と、を備え、
複数のサービス提供装置の各々は、
名前解決装置が管理するｎ個のIPアドレスのうちｍ（ｍは0以上）個が、他のサービス提供装置と重複することなく当該サービス提供装置に割り当てられており、
名前解決要求に対する応答に基づいた、端末からのサービス要求に対してサービスを提供する端末要求処理部と、
他のサービス提供装置との間で負荷分散を行う負荷分散機能部と、を備え、
監視先サービス提供装置として、他の監視元サービス提供装置から、その負荷を監視されており、
監視元サービス提供装置の負荷分散機能部は、監視先サービス提供装置の負荷が高い場合、IPアドレスの割り当てを、監視先サービス提供装置から自サービス提供装置へ移動させることを特徴とする。
【００１８】
開示されるサービス提供システムにおいて、さらに、
監視元サービス提供装置の負荷分散機能部が、IPアドレスの割り当てを移動させる処理として、
監視先サービス提供装置の負荷が、自サービス提供装置の負荷より一定値以上高い場合、監視先サービス提供装置へ、アドレス引継ぎ要求を送信し、
監視先サービス提供装置から、割り当ての移動対象であるIPアドレスを含むアドレス引継ぎ応答を受信したら、含まれるIPアドレスを、自装置への割り当てIPアドレスとして登録するように構成しても良い。
【００１９】
上記態様により、端末からサービス提供装置の間に、負荷分散装置のような単一障害点およびボトルネックとなる装置をおかずにサービス提供装置群に対して負荷を分散させることが可能となり、障害耐性が向上する。
【００２０】
また、名前解決の際に必要となる名前解決装置は、各サービス提供装置の負荷情報という動的なデータを保持せず、IPアドレス群という静的なデータを状態として保持するため、IPアドレス群のデータを安定ストレージに格納するなどの手法によって、容易に障害から復旧が可能となる。
【００２１】
また、複数の名前解決装置を配備した場合であっても、静的なデータをそれぞれの名前解決装置に与えるだけでよいため、共有データの動的な更新に対する一貫性の保持などの複雑な手順が不要となる。
【００２２】
また、処理能力に応じたIPアドレス数を割り当てることで各サービス提供装置にかかる負荷を調整することにより、端末が標準的にもつIPでの通信機構を用いて適切なサーバへ要求を誘導できるとともに、IPアドレスの譲渡によってあるIPアドレスをもったサービス提供装置が変更になった場合も、IPネットワークが標準的にもつルーティング機能によって、新たな要求が適切にリダイレクトされる。
【００２３】
また、名前解決装置において返すアドレス群を時系列で変動させることにより、端末とサービス提供装置の間でセッションが確立していないサービス提供装置側アドレスを確保できるようになる。これによって、サービス提供装置においてIPアドレスを譲渡する際に、未使用のアドレスを選択することが可能となる。TCP/IP上のプロトコルなど、サービス提供装置に何らかのセッション管理が必要な場合では、セッション確立中に当該セッションが使用しているIPアドレスを譲渡するには複雑な処理が必要であり、未使用のIPアドレスを譲渡することが望ましい。本方式により、未使用のIPアドレスを確保できる可能性を向上させ、負荷均等化にかかる処理コストを削減することが可能となる。
【発明の効果】
【００２４】
開示に従えば、負荷分散機能を備えながら、負荷分散機能がボトルネックや障害点となりにくく、かつ、負荷分散機能を端末側に備える必要の無い、サービス提供システムが実現可能になる。
【図面の簡単な説明】
【００２５】
【図１】サービス提供システムの全体構成を例示する図
【図２】DNSサーバの機能構成を例示する図
【図３】アドレス群管理テーブルの構成を例示する図
【図４】DNSサーバの処理フローチャートを例示する
【図５】サービス提供装置の機能構成を例示する図
【図６】サービス提供装置リストの構成を例示する図
【図７】担当IPアドレスリストの構成を例示する図
【図８】監視先サービス提供装置リストの構成を例示する図
【図９】監視元サービス提供装置リストの構成を例示する図
【図１０】サービス提供装置の監視と被監視の関係を構築する処理を例示するフローチャート
【図１１】サービス提供装置の負荷分散機能部の処理を例示するフローチャート
【図１２】サービス提供装置の負荷分散機能部の処理を例示するフローチャート
【図１３】サービス提供システムのシーケンス構成を例示する図
【図１４】サービス提供システムのシーケンス構成を例示する図
【図１５】N+M構成の場合のサービス提供装置リスト構成を例示する図
【図１６】日時に応じて返答するIP群を切り替える場合のDNSサーバの処理を例示するフローチャート
【図１７】DNSサーバが複数存在する場合のサービス提供システムの全体構成を例示する図
【図１８】DNSサーバと、サービス提供装置のハードウェア構成を例示する図
【発明を実施するための形態】
【００２６】
(実施例1)
図1は、実施例1の全体構成図である。
【００２７】
サービス提供装置104およびDNSサーバ103は、外部ネットワークを構成するルータ・スイッチ102に接続されており、ルータ・スイッチ102は移動体コア網/インターネットなどを介して端末101と接続されている。なお、ここで挙げた接続トポロジは一例であり、端末101、DNSサーバ102、サービス提供装置104がそれぞれ互いにIP到達性のある接続トポロジであれば本実施例を適用可能である。
【００２８】
図2に本実施例の名前解決装置の一例であるDNSサーバ103の機能構成を示す。DNSサーバ103は、名前解決の一例として、ドメイン名をIPアドレスに変換する。DNSサーバ103はルータ・スイッチ102とパケット送受信部204を介して接続している。端末101からの名前解決要求は名前解決要求処理部（以下、DNS要求処理部という）202で処理される。また、アドレス群管理テーブル201へのアドレスの登録や削除などの処理は管理機能部203にて行う。
【００２９】
上記DNSサーバ103と、機能構成を後述するサービス提供装置104のハードウェア構成の例を図18に示す。
【００３０】
これらの装置は、主記憶装置1802、中央処理装置1803、ハードディスクドライブなどの二次記憶装置1805、ディスプレイやキーボードなどの入出力装置1807、ルータ・スイッチ102と接続するための通信装置1806、およびそれらの装置間を接続するバスなどの内部通信線1804を備えた一般的なコンピュータ1801により実現できる。
【００３１】
たとえばDNSサーバ内のアドレス群管理テーブル201は、主記憶装置1802に置かれるとともに、永続的にデータを記憶するために二次記憶装置1805に置かれる。
【００３２】
また、以下で説明する各処理は、二次記憶装置1805に格納されたプログラムが、実行時に主記憶装置1802にコピーされたうえで中央処理装置1803によって解釈・実行されることにより実現する。また、送受信処理は、通信装置1806を介して行う。
【００３３】
図3は、DNSサーバ103がもつアドレス群管理テーブル201の一例である。ここで示したアドレス群管理テーブル201では、解決すべき名前（本実施例ではドメイン名）に対するアドレスとして、複数のエントリにIPv6アドレスをサブネット単位で登録している。図3では、アドレス群をIPv6アドレスで表現しているが、IPv4アドレスでアドレス群を表現してもよい。アドレス群管理テーブル201の各エントリには、全てのサービス提供装置104に割り当てたアドレスを登録する。
【００３４】
次に、このアドレス群管理テーブル201を用いて、DNSサーバ103がどのように端末101からの要求に応えるかを示す。
【００３５】
図4に、DNSサーバ103が端末101からの要求を受けた場合の処理フローを示す。ステップ401にて、端末101が要求してきた名前解決要求がどの名前に対するものであるかを調べる。たとえば、図3に示した形のアドレス群管理テーブルを持っていた場合、www.example.comの名前解決を要求している場合はステップ402に進む。
【００３６】
ステップ402では、アドレス群管理テーブルに含まれるアドレスから1つを選択して返答する。この時、アドレス群から返答するアドレスを選択する方法は、各アドレスを返答する確率がほぼ等しいのであれば方法は問わない。例としては、先頭から順番に1つずつ選択する方法や、全アドレス群の中から一様乱数を用いて選択する、という方法がある。
【００３７】
ステップ401でいいえ、すなわちアドレス群管理テーブル201として管理していない名前に対する要求の場合は、他のDNSサーバに要求を転送し、転送先の他のDNAサーバへの問い合わせによって得られた結果を返答する（ステップ403）。これは、サービス提供装置104と関係のない名前に対する名前解決要求が来た場合の対処である。本サービス提供システムと関係ない名前への要求をサポートしない場合、単に名前解決のエラーを返してもよい。
【００３８】
次に、サービス提供装置104に関して説明する。
【００３９】
図5にサービス提供装置104の構成図を示す。サービス提供装置104は、パケット送受信部502を介してルータ・スイッチ102と接続している。サービス提供装置104が端末101に対して提供するサービスの処理は端末要求処理部501で処理する。また、負荷分散に関しては負荷分散機能部503で処理する。負荷分散機能部503は4つのテーブルを持ち、それぞれサービス提供装置リスト601、監視先サービス提供装置リスト801、監視元サービス提供装置リスト901、担当IPアドレスリスト701とよぶ。
【００４０】
図6にサービス提供装置リスト601の一例を示す。
【００４１】
サービス提供装置リスト601は、負荷を分散しあうn台のサービス提供装置104の識別子を管理する。サービス提供装置リスト601の値は、サービス提供装置104の起時に管理者によって設定されるとともに、サービス提供装置104がシステムに追加、あるいはシステムから削除された場合に負荷分散機能部によって更新される。
【００４２】
図7に担当IPアドレスリスト701の一例を示す。
【００４３】
担当IPアドレスリスト701には、本リストをもつ自サービス提供装置104に割り当てられたｍ個のIPアドレスが格納されている。担当IPアドレスリスト701は、サービス提供装置104の起動時に管理者によって設定されるとともに、他のノードとのIPアドレスの移動、すなわち譲渡と譲受、の際に負荷分散機能部によって更新される。
【００４４】
図8に監視先サービス提供装置リスト801の一例を示す。
【００４５】
監視先サービス提供装置リスト801は、このリストを持つサービス提供装置104が負荷の監視を行う対象である他のサービス提供装置104の情報を示す。
【００４６】
ここでは、当該サービス提供装置104は、識別子”serv2”をもつサービス提供装置104を監視対象としており、監視対象サービス提供装置が高負荷になった場合や、障害が発生した場合に譲り受けるIPアドレスの候補リストと、前回の負荷調整によって、当該IPアドレスの割り当てが、当該監視対象サービス提供装置104へ移動した日時を負荷調整日時として記録している。負荷調整日時は、負荷によるアドレス割り当ての移動が短期間に連続して発生しないようにするために参照されるものである。
【００４７】
本実施例では、IPアドレスの割り当ての移動と負荷の移動は同期しないため、負荷に差がある状態でつねにIPアドレスの割り当ての移動を行うと、負荷の移動に必要な量以上のIPアドレスが移動してしまうため、負荷調整日時の参照により、短期間でのIPアドレスの移動を制限する。
【００４８】
図9に監視元サービス提供装置リスト901の一例を示す。
【００４９】
監視元サービス提供装置リスト901は、本リストをもつサービス提供装置104を監視している他のサービス提供装置104を記録している。
【００５０】
図9では、自サービス提供装置104は、”serv4”という識別子をもつ他のサービス提供装置104により監視されており、自サービス提供装置104が高負荷になった場合や、障害が発生した際に、”serv4”という識別子をもつサービス提供装置104に割り当てを移動すべきアドレスの候補を引継IPリストに格納している。
【００５１】
当該サービス提供装置104が、単一のサービス提供装置104から監視されている場合は、引継IPリストの内容は、当該サービス提供装置104の担当IPアドレスリスト701の内容と同一になる。複数のサービス提供装置から監視されている場合は、担当IPアドレスリスト701に含まれるアドレスを分担することになる。
【００５２】
また、当該サービス提供装置104が、IPアドレスの移動（他から譲り受け、または、他への譲り渡し）によって、担当IPアドレスリスト701を更新した場合、併せて、この引継IPリストも更新する。
【００５３】
初期設定時にすべてのサービス提供装置104間に監視と被監視の関係を構築する方法について以下に述べる。図10に負荷分散機能部503が実行する構築手順を示す。
【００５４】
ステップ1001では、サービス提供装置リスト601に含まれるすべてのサービス提供装置104の識別子に対して何らかの形の順序付けを行う。これは、すべての識別子に対して順序関係が定義できればいいため、ハッシュ値を計算して数の大小で決める、辞書順で決める、などの方法が考えられる。一例としてここではハッシュ値を用いて計算するものとしている。
【００５５】
そして、ステップ1002において、順序付けが可能となったサービス提供装置のリストを昇順でソートする。次にステップ1003において、サービス提供装置リスト601の中から自装置の識別子を探す。
【００５６】
最後にステップ1004で自装置のエントリの次にあるサービス提供装置104を監視先、前にあるサービス提供装置104を監視元とする。さらに、サービス提供装置リスト601はリング構造をしていると考え、リストの末尾の装置の監視先はリストの先頭の装置、リストの先頭の装置の監視元はリストの末尾の装置、とする。この処理によって、すべてのサービス提供装置104が一つのリング状のトポロジで仮想的に接続されたものと扱うことができる。
【００５７】
次に、一つのサービス提供装置104の負荷分散機能部503の処理フローを図11に示す。
【００５８】
ステップ1101として、サービス提供装置104の起動時、初期設定としてサービス提供装置リスト601と担当IPアドレスリスト701を設定する。担当IPアドレスリスト701の設定の一例としては、サービス提供装置104の性能が初期状態では均一であると仮定して、すべてのサービス提供装置104に同数のアドレスを割り当てる方法や、各サービス提供装置104に性能差によって重みづけを行い、性能が高いサービス提供装置104に多くのアドレスを割り当てる、などの方法がある。
【００５９】
次にステップ1102では、図10で示した処理手順に従って監視先サービス提供装置を決め、装置情報取得要求メッセージを送信する。そしてステップ1103でメッセージの受信待ちを行う。以下では、受信したメッセージの内容に応じて処理を行う。
【００６０】
装置情報取得要求メッセージを受信した場合、監視元サービス提供装置リスト901に送信元サービス提供装置のエントリを追加し、監視元全体に対して引継IPアドレスを再構成する。そして、全ての監視元サービス提供装置に対して、監視元サービス提供装置リスト901を含めた装置情報メッセージを送信する(ステップ1104)。
【００６１】
装置情報メッセージを受信した場合、監視先サービス提供装置リスト801を、受信したメッセージに含まれる装置情報で更新する(ステップ1105)。
【００６２】
負荷情報要求メッセージを受信した場合、現在の装置の負荷情報を負荷情報メッセージとして送信する(ステップ1106)。負荷情報としては、CPU負荷、単位時間当たりの送受信トラフィック量、I/O負荷、メモリ使用量などがある。ディスクへのアクセスがボトルネックとなる処理ではI/O負荷を負荷情報として使用するなど、サービス提供装置104で端末に提供するサービスの種類に応じて選択する。
【００６３】
監視元サービス提供装置リスト901に記載されている他のサービス提供装置104からアドレス引継ぎ要求メッセージを受信した場合、担当IPアドレスリスト701から現在利用されていないアドレスを一つ選択する。高負荷時など、すべてのアドレスが利用されている場合は、利用中のアドレスからランダムに一つ選択する。
【００６４】
そして、前記担当IPアドレスリスト701から選択した前記IPアドレスを削除して、自装置から当該IPアドレスの割り当てを外し、そのIPアドレスを含むアドレス引継ぎ応答メッセージを送信元装置へ通知する(ステップ1107)。また、監視元サービス提供装置リスト901の引継IPアドレスリストから当該IPアドレスを削除する。
【００６５】
上記から判るように、本明細書において、アドレス引継ぎ要求とは、アドレス割り当て先を、要求送信先のサービス提供装置から、要求送信元のサービス提供装置へ移動することの要求、を意味する。
【００６６】
自装置からアドレス引継ぎ要求メッセージを送信し、送信相手である他のサービス提供装置104からアドレス引継ぎ応答メッセージを受信した場合、担当IPアドレスリスト701に受信したメッセージに含まれるアドレスを登録し、自装置に当該アドレスを割り当てる。そして、自装置に新たにアドレスが割り当てられたことをシステム内の他装置に知らせるため、gratuitous ARPをパケット送受信部から送信する。また、監視元サービス提供装置リスト901内の引継IPアドレスリストを更新し、自装置を監視している監視元サービス提供装置に、新たに登録されたIPアドレス情報を含む装置情報メッセージを送信する(ステップ1108)。
【００６７】
サービス提供装置追加要求メッセージ、または削除要求メッセージを受信した場合、サービス提供装置リスト601の更新を行う。そして図10で示したフローにしたがって監視元と監視先関係の再計算を行い、自装置の監視元・監視先の関係に変化があった場合、更新対象の情報を監視先サービス提供装置リスト801および監視元サービス提供装置リスト901の更新を行う。そして、新たに監視先となったサービス提供装置104に対して装置情報取得要求メッセージを送信する(ステップ1109)。
【００６８】
サービス提供装置の加入要求メッセージを受信した場合、サービス提供装置リスト601に送信元サービス提供装置を追加する。そして、加入要求メッセージ送信元のサービス提供装置104には、送信元サービス提供装置を除くすべてのサービス提供装置104の追加要求メッセージを、また他のすべてのサービス提供装置に送信元のサービス提供装置の追加要求メッセージを送信する(ステップ1110)。
【００６９】
アドレス追加要求メッセージを受信した場合、担当IPアドレスリスト701に受信したメッセージに含まれるアドレスを追加し、自装置に当該アドレスを割り当てる。また、監視元サービス提供装置リスト901の引継IPアドレスリストに当該アドレスを追加し、変更があった監視元サービス提供装置104に対して、装置情報を含む装置情報メッセージを送信する(ステップ1111)。
【００７０】
アドレス削除要求メッセージを受信した場合、担当IPアドレスリスト701から該当するアドレスを削除する。そして、監視元サービス提供装置リスト901の引継IPアドレスリストから当該アドレスを削除し、変更があった監視元サービス提供装置104に対して装置情報を含む装置情報メッセージを送信する(ステップ1112)。
【００７１】
サービス提供装置104の負荷分散機能部503は、図11に示した手順と並行して、他のサービス提供装置104の稼働情報を監視するための処理を行う。この処理の手順を図12に示す。
【００７２】
監視が開始されると、サービス提供装置104は、繰り返し(例えば定期的に)、負荷情報要求メッセージを監視対象である監視先サービス提供装置104に送信する(ステップ1201)。負荷情報メッセージを一定時間内に受信した場合は、監視先のサービス提供装置104は障害が発生していないものと認識する。
【００７３】
受信までに、監視先サービス提供装置リスト801の負荷調整日時から一定期間が経過している場合は、自装置との負荷差を計算する(ステップ1202)。そして、監視先サービス提供装置の負荷が、自装置の負荷より一定値以上高い場合は、アドレス引継ぎ要求を監視先サービス提供装置104に対して送信する(1203)。負荷の差が一定値未満、あるいは前回の負荷調整から一定期間が経過していない場合は、一定期間の休止ののち再度負荷情報要求の送信を行う。
【００７４】
一定時間内に負荷情報メッセージを受信できないことが続いた場合、監視先サービス提供装置に障害が発生したと判断して、負荷を分散しあう他のｎ台のサービス提供装置104に対して、サービス提供装置リスト601から当該サービス提供装置の削除を要求する削除要求メッセージを送信する。
【００７５】
そして監視先サービス提供装置リスト801内の当該装置のエントリから、当該サービス提供装置から譲り受ける引継ぎIPアドレスリストを抽出し、担当IPアドレスリスト701に追加する(ステップ1205)。
【００７６】
次にサービス提供装置リスト601から当該装置を削除し、図10で示した手順で監視先サービス提供装置104を決定する。次に、監視先サービス提供装置104に対して装置情報取得要求メッセージを送信する(ステップ1206)。そして、例えば一定期間休止したのち、またステップ1201からの手順を繰り返す。
【００７７】
図13および図14に、ここまでに述べた手順で生じる一連のシーケンスの例を示す。
【００７８】
まず、初期設定および端末からの要求処理について示す。
【００７９】
図13のステップ1301では、管理者が各サービス提供装置104に対してサービス提供装置リスト601および担当IPアドレスリスト701の設定を行い、図10のフローにしたがって監視元と監視先の関係を構築している。
【００８０】
そして、監視元となる各サービス提供装置104は、監視先のサービス提供装置104に対して装置情報取得要求を送る(ステップ1302)。
【００８１】
装置情報取得要求を受け取ったサービス提供装置104は、図11のステップ1104にしたがって、装置情報メッセージを返答する(ステップ1303)。ここまでで、各サービス提供装置104の初期設定が完了する。
【００８２】
端末101は、サービスを受けるためにDNSサーバ103に対して名前解決要求を送る(ステップ1304)。
【００８３】
DNSサーバ103は図4のフローにしたがって、端末101にアドレスを返答する(ステップ1305)。
【００８４】
端末101は返答に示されるIPアドレスに対して処理要求を送り(ステップ1306)、
当該アドレスを担当とするサービス提供装置104-3が要求に対して返答する(ステップ1307)。
【００８５】
次に、サービス提供装置104-1と104-2の間で負荷が不均衡となった場合の負荷均等化の処理について示す。
【００８６】
サービス提供装置104-1は、図12に示すフローのステップ1201にて、繰り返し、例えば定期的に監視先であるサービス提供装置104-2に負荷情報要求を送信する(ステップ1308)。
【００８７】
負荷情報要求を受け取ったサービス提供装置104-2は、図11のステップ1106にしたがって現在の装置の負荷情報を返答する(ステップ1309)。
【００８８】
ここで、負荷情報を受信したサービス提供装置104-1は、ステップ1202によって負荷差が一定以上であると判定したものとし、ステップ1203にしたがって、アドレス引継ぎ要求をサービス提供装置104-2に送信する(ステップ1310)。
【００８９】
アドレス引継ぎ要求を受け取ったサービス提供装置104-2は、ステップ1107に示すように、引継ぎアドレスを選び、アドレス引継ぎ応答をサービス提供装置104-1に返答する(ステップ1311)。
【００９０】
アドレス引継ぎ応答を受信したサービス提供装置104-1は、自装置の担当アドレスリスト701の更新を行い、サービス提供装置104-1の監視元であるサービス提供装置104-4に対して装置情報を送信する。サービス提供装置104-4は、ステップ1105にしたがって監視先サービス提供装置リスト801を更新する(ステップ1312)。
【００９１】
次に、監視先のサービス提供装置104-2に障害が発生した場合について示す。
【００９２】
サービス提供装置104-1は、図12にフローにしたがって、定期的に負荷情報要求を監視先サービス提供装置104-2に送信している(ステップ1313)。
【００９３】
負荷情報の受信が、あらかじめ定めたR回以上タイムアウトすると、ステップ1204にしたがって監視先装置は障害が発生したと判定する。そして、サービス提供装置リスト601に従って、全てのサービス提供装置104に対して、サービス提供装置104-2を削除する要求を送信する(ステップ1314)。
【００９４】
削除要求を受け取ったサービス提供装置104-3および104-4は、ステップ1109にしたがってそれぞれの装置のサービス提供装置リスト601を更新する。そして、改めて図10のフローにしたがって監視元と監視先の関係を構築し直し、監視先装サービス提供装置リスト801および監視元サービス提供装置リスト901を更新する。
【００９５】
ここで、監視先のサービス提供装置104-1は監視先がサービス提供装置104-3に更新されたので、新たに監視先となったサービス提供装置104-3に対して情報取得要求を送信する(ステップ1315)。
【００９６】
情報取得要求を受け取ったサービス提供装置104-3は、ステップ1104にしたがって装置情報を返答する(ステップ1316)。
【００９７】
次に、図14にて、サービス提供装置104-2が障害から復旧してシステムに改めて追加された場合を示す。
【００９８】
管理者は、サービス提供装置104-2のサービス提供装置リスト601にサービス提供装置104-2の情報を入れる。サービス提供装置104-2は、サービス提供中のサービス提供装置104を任意に選び(ここではサービス提供装置104-4)、加入要求を送信する(ステップ1402)。
【００９９】
加入要求を受信したサービス提供装置104-4は、図11のステップ1110にしたがって、送信元のサービス提供装置104-2にサービス提供装置リスト601の内容を含んだ追加要求を送信する。また、送信元以外のサービス提供装置104-1および104-3に、サービス提供装置104-2に追加要求を送信する(ステップ1403)。
【０１００】
追加要求を受けとった各サービス提供装置104はステップ1109にしたがってサービス提供装置リスト601を更新し、図10のフローにしたがって監視元と監視先の関係を再構築し、監視先に変更があった場合は監視先サービス提供装置に情報取得要求を送信する(ステップ1404)。
【０１０１】
情報取得要求を受け取ったサービス提供装置104は、ステップ1104にしたがって装置情報を返答する(ステップ1405)。
【０１０２】
なお、DNSサーバ103自体に障害がおこった場合、何らかの外部サーバがそれを検知し、当該DNSサーバ103を再起動するか、別のDNSサーバ103を起動する必要がある。このとき、DNSサーバがサービス提供装置群の負荷情報や稼働情報などを管理していると、その情報を何らかの形で稼働中に安定なストレージなどに保存し、再起動時に復元しなくてはならない。これは障害耐性を向上させるためにかかるコストが大幅に増えてしまう。これにたいし、本実施例では、DNSサーバ自体は、サービス提供装置104群の動作状況に関係なく不変な情報であるアドレス群管理テーブル201を状態として持ち、かつ、サービス提供装置群の負荷情報や稼働情報を持たないため、DNSサーバ103は常に同一の設定で起動できればよい。このため、DNSサーバ103の障害への対応コストは非常に低く抑えることが可能となる。
【０１０３】
(実施例2)
実施例1では、すべてのサービス提供装置104が対等な関係で管理され、正常なすべてのサービス提供装置104が端末101からの要求を受け入れるという構成の例であった。
【０１０４】
実施例2では、N+M台のサービス提供装置104のうち、N台のサービス提供装置104が端末101の要求を処理し、M台のサービス提供装置104は待機状態にある、という構成での実施例を示す。なお、構成と処理手順には共通な点が多いため、ここではその差分を説明する。
【０１０５】
図15に、本実施例でのサービス提供装置リスト1501を示す。実施例1のサービス提供装置リスト601と比べ、各サービス提供装置104が稼働状態(ACT)であるか待機状態(SBY)であるかを示すカラムを追加している。
【０１０６】
このように設定した状態で、稼働状態にあるサービス提供装置104間で実施例1にある監視を実施する。そして、監視先サービス提供装置104に障害が発生した場合、サービス提供装置リスト1501から状態がSBYとなっているサービス提供装置104を一つ選択し、そのサーバの状態をACTに変更の上、すべてのサービス提供装置104にその情報をメッセージで送信する。また、障害がおこったサービス提供装置104の引継IPアドレスをアドレス引継ぎ応答メッセージとして新規サービス提供装置に送信する。これによって、N+M構成においても同様の方法で負荷分散が実現可能である。
【０１０７】
(実施例3)
実施例1および2では、IPアドレスの引継ぎ時に利用されていないアドレスを選択していた。しかし、一つのセッションが長時間に及ぶ場合などでは、すべてのアドレスが使用中となり安全に引き継ぐことができるアドレスが確保できない場合が生じる可能性がある。
【０１０８】
本実施例では、DNSサーバ103が返答するアドレス群を複数の下位の群に分け、日時に応じて返答対象となる群を切り替えることで、IPアドレス引継ぎ時に利用中でないIPアドレスを確保できるようにする方法について示す。
【０１０９】
図16に本実施例でのDNSサーバ103の動作を示す。実施例1、2での相当する手順である図4と比べ、テップ1602が異なっている。
【０１１０】
ステップ1602では、あらかじめ定められた、現在日時からアドレス群番号への関数を用いてアドレス群を1つ以上選択し、その群の中からアドレスを選択して返答をおこなう。
【０１１１】
この手順により、ある日時においては配布されないアドレス群が生じる。端末101とサービス提供装置104のセッションの継続が一定時間以上は続かないと仮定すると、アドレスが配布され終わってから一定の時間経過したのちはそのアドレスを利用している端末101が存在する確率は十分低くなる。これによって、アドレス引継ぎ時に、利用していないアドレスを確保することが可能となる。
【０１１２】
(実施例4)
実施例1,2,3では、DNSサーバ103は一つとして説明した。しかし、本実施例のDNSサーバ103は静的なアドレス群管理テーブル201と日時からアドレス群番号への関数を状態として持ち、負荷の変化や稼働しているサービス提供装置104の状況など、動的に変化する情報をもたない。
【０１１３】
このため、複数のDNSサーバ103をシステム内におき、端末側でそれらのDNSサーバを適宜切り替えて利用する場合であってもDNSサーバ103間での状態同期は不要である。図17に実施例4の全体構成図を示す。この構成により、DNSサーバ103の性能スケーラビリティと障害耐性を向上させることが可能である。
【符号の説明】
【０１１４】
１０１：端末、１０２：ルータ・スイッチ、１０３：DNSサーバ、１０４：サービス提供装置、２０１：アドレス群管理テーブル、２０２：DNS要求処理部、２０３：管理機能部、２０４：パケット送受信部、５０１：端末要求処理部、５０２：パケット送受信部、５０３：負荷分散機能部、６０１：サービス提供装置リスト、７０１：担当IPアドレスリスト、８０１：監視先サービス提供装置リスト、９０１：監視元サービス提供装置リスト、１５０１：サービス提供装置リスト。
【図１】
0005872669.tif 000002
【図２】
0005872669.tif 000003
【図３】
0005872669.tif 000004
【図４】
0005872669.tif 000005
【図５】
0005872669.tif 000006
【図６】
0005872669.tif 000007
【図７】
0005872669.tif 000008
【図８】
0005872669.tif 000009
【図９】
0005872669.tif 000010
【図１０】
0005872669.tif 000011
【図１１】
0005872669.tif 000012
【図１２】
0005872669.tif 000013
【図１３】
0005872669.tif 000014
【図１４】
0005872669.tif 000015
【図１５】
0005872669.tif 000016
【図１６】
0005872669.tif 000017
【図１７】
0005872669.tif 000018
【図１８】
0005872669.tif 000019