(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
<実施形態>
以下、図面を参照しながら実施形態について詳しく説明する。
本発明の一実施形態による通信システム1は、異なるドメイン間の負荷分散において、サーバ負荷の予測に基づいて、最適なDNSキャッシュの有効時間を設定するシステムである。通信システム1は、
図1に示すように、クライアント端末10、ローカルDNSサーバ20、グローバルサーバロードバランシング(Global Server Load Balancing)装置(以下、「GSLB装置」と記載)30(ロードバランシング装置の一例)、1つ以上のサーバ40によって構成されるサーバ群60を備える。
【0013】
クライアント端末10とローカルDNSサーバ20は、同一のドメインである第1ドメインのネットワークに接続される。GSLB装置30とサーバ40は、第1ドメインとは異なるドメインのネットワークに接続される。なお、GSLB装置30とサーバ40は、同一のドメイン(例えば、第2ドメイン)のネットワークに接続されてもよいし、異なるドメインのネットワーク(例えば、GSLB装置30が第2ドメインのネットワーク、サーバ40が第3ドメインのネットワーク)に接続されてもよい。
【0014】
クライアント端末10は、HTTP(HyperText Transfer Protocol)を用いてサーバ40に接続し、サーバ40にサービス要求を行う。
ローカルDNSサーバ20は、クライアント端末10から名前解決要求を受信すると、GSLB装置30に対して名前解決要求を行い、サーバ40のIPアドレスをクライアント端末10へ出力する(回答する)。
【0015】
GSLB装置30は、広域負荷分散を行う装置である。GSLB装置30は、サーバ40の状態を監視し、名前解決サービスを提供する。GSLB装置30は、DNS処理部301、サーバ監視部302、負荷予測・制御部303、記憶部304を備える。
【0016】
DNS処理部301は、ローカルDNSサーバ20からの名前解決要求に対して、サーバ情報テーブルTBL1を参照して、サーバ群60から1つのサーバ40を選択し、そのIPアドレスを応答(返信)する。
サーバ監視部302は、サーバ40の死活状態を監視する処理、及び、サーバ40の負荷情報を収集する処理を定期的に行う。
【0017】
負荷予測・制御部303は、サーバ監視部302が収集したサーバ40の負荷情報に基づいて、未来の負荷変動を予測する。負荷予測・制御部303は、予測した未来の負荷変動に応じてサーバ情報テーブルTBL1のレコードを更新する。負荷予測・制御部303は、予測した未来の負荷変動に応じて、サーバ40に対して起動または停止命令を行う。
【0018】
記憶部304は、サーバ情報テーブルTBL1を記憶する。サーバ情報テーブルTBL1は、
図2に示すように、ドメイン名501、ホスト名502、IPアドレス503、待受ポート504、キャッシュ有効時間505(動作の有効時間の一例)、死活状態506、負荷情報507、最大接続制限値508を含む。
【0019】
ドメイン名501は、クライアント端末10のアクセス先となるホスト名である。
ホスト名502は、負荷予測・制御部303にとって、サーバ40を識別するためのホスト名情報である。
【0020】
IPアドレス503は、サーバ40に割り付けられたIPアドレスである。クライアント端末10は、このIPアドレス宛てにアクセスする。
待受ポート504は、サーバ40のサーバプロセスがクライアント端末10からのアクセスを待ち受けているポート番号である。
【0021】
キャッシュ有効時間505は、名前解決要求で得られたドメイン名に対するIPアドレスの情報をローカルDNSサーバ20及びクライアント端末10がローカルに保管できる期間である。キャッシュ有効時間505内にクライアント端末10が再度当該ドメイン名にアクセスする場合には名前解決を行わずにサーバ40のIPアドレスを再利用することが可能である。名前解決とは、ドメイン名からIPアドレスを求めることである。キャッシュ有効時間505を過ぎた場合、クライアント端末10は、ローカルからレコードを破棄して、再度名前解決を行う。負荷予測・制御部303は、各サーバ40の負荷状況に応じて、キャッシュ有効時間505を動的に設定することが可能である。
【0022】
死活状態506は、サーバ40がアクティブ(active)状態、スタンバイ(standby)状態、フェイル(Fail)状態のいずれであるかを示す情報である。
ここで、アクティブ状態とは、サーバ40の電源がオン状態であり、かつサービスを提供できる状態のことである。また、スタンバイ状態とは、サーバ40の電源がオン状態になっていない状態のことである。また、フェイル状態とは、コンピュータの故障や、プログラムの不具合などの理由によりサーバ40がサービスを提供できない状態のことである。
【0023】
負荷情報507は、サーバ40の負荷を表す値である。ここでの負荷情報507の値は、クライアント端末10からサーバ40へ接続されているTCP(Transmission Control Protocol)接続の接続数を用いている。なお、負荷情報507の値としては、CPU使用率などの負荷情報が用いられてもよい。
【0024】
最大接続制限値508は、サーバ40の許容性能を表す値である。ここでの最大接続制限値508の値は、クライアント端末10からサーバ40への接続を許容するTCP接続の接続数を用いている。
【0025】
サーバ40は、クライアント端末10にWebサイトなどのHTTPサービスを提供する。サーバ群60は、1つ以上のサーバ40によって構成される。サーバ40には、サービスを提供しているアクティブ状態のサーバと、スタンバイ状態の予備サーバとがある。各サーバ40は、異なるドメイン (例えば東京データセンタと大阪データセンタ)のネットワークに接続していてもよい。
【0026】
各サーバ40は、負荷情報処理部401、起動・停止処理部402、HTTP処理部403を備える。
負荷情報処理部401は、サーバ40の負荷情報を収集する。負荷情報処理部401は、サーバ監視部302の負荷情報要求に応答する。負荷情報処理部401は、CPU使用率、TCPコネクション数などの負荷情報を送信する。
【0027】
起動・停止処理部402は、負荷予測・制御部303からサーバ起動・停止命令を受けた場合、サーバ40の起動・停止処理を行う。具体的には、起動・停止処理部402は、負荷予測・制御部303からサーバの起動を指示するサーバ起動命令を受けた場合、サーバ40の起動処理を行う。また、起動・停止処理部402は、負荷予測・制御部303からサーバの停止を指示する停止命令を受けた場合、サーバ40の停止処理を行う。
HTTP処理部403は、クライアント端末10からの要求を受信すると、要求されたデータ(HTMLファイル、画像ファイルなど)の配信をクライアント端末10に対して行う。
【0028】
次に、本発明の一実施形態による通信システム1の処理について
図3〜5を用いて説明する。ここでは、特に、GSLB装置30が行うDNS処理、負荷予測・制御処理について詳しく説明する。
クライアント端末10は、所定のドメイン名にHTTPプロトコルで、アクセスする場合、まずDNSプロトコルを用いて、所定のドメイン名の名前解決要求をローカルDNSサーバ20に送信する。
ローカルDNSサーバ20は、クライアント端末10から名前解決要求を受信する。ローカルDNSサーバ20は、名前解決要求を受信すると、GSLB装置30に対して名前解決要求を行う。
【0029】
DNS処理部301は、ローカルDNSサーバ20から名前解決要求を受信する(ステップS1)。
DNS処理部301は、名前解決要求を受信すると、名前解決要求対象のドメイン名を検索キーとしてサーバ情報テーブルTBL1を検索する(ステップS2)。DNS処理部301は、検索済みのエントリのホスト名を記憶する。DNS処理部301は、検索結果においてドメイン名501が名前解決要求対象のドメイン名と一致するエントリ情報を特定する。DNS処理部301は、特定したエントリ情報を取得する。
DNS処理部301は、取得したサーバ情報における死活状態506が「アクティブ(Active)」であるか否かを判定する(ステップS3)。
【0030】
DNS処理部301は、「アクティブ(Active)」でないと判定した場合(ステップS3においてNO)、ステップS2の処理に戻す(次のエントリを検索する)。
また、DNS処理部301は、「アクティブ(Active)」であると判定した場合(ステップS3においてYES)、アクティブであると判定したエントリにおける負荷情報507の値が最大接続制限値508以下であるか否かを判定する(ステップS4)。
【0031】
DNS処理部301は、負荷情報507の値が最大接続制限値508を超えていると判定した場合(ステップS4においてNO)、ステップS2の処理に戻す(次のエントリを検索する)。
また、DNS処理部301は、負荷情報507の値が最大接続制限値508以下であると判定した場合(ステップS4においてYES)、すべてのエントリを検索したか否かを判定する(ステップS5)。例えば、DNS処理部301は、サーバ情報テーブルTBL1において検索したときに記憶した検索済みのホスト名の数と、エントリの総数とを比較する。そして、DNS処理部301は、両方の数が一致する場合、すべてのエントリを検索したと判定する。また、DNS処理部301は、両方の数が一致しない場合、検索していないエントリが存在すると判定する。
【0032】
DNS処理部301は、検索していないエントリが存在すると判定した場合(ステップS5においてNO)、ステップS2の処理に戻す(次のエントリを検索する)。
また、DNS処理部301は、すべてのエントリを検索したと判定した場合(ステップS5においてYES)、予め設定された負荷分散方式(ラウンドロビン等)に従って、検索の結果得られたエントリの中から回答するエントリを決定する(ステップS6)。
DNS処理部301は、決定されたエントリのIPアドレス503及びキャッシュ有効時間505をローカルDNSサーバ20に出力する(回答する)(ステップS7)。
【0033】
ローカルDNSサーバ20は、DNS処理部301からエントリのIPアドレス503及びキャッシュ有効時間505を受ける。ローカルDNSサーバ20は、受けたIPアドレスをクライアント端末10に出力する(回答する)。
【0034】
クライアント端末10は、ローカルDNSサーバ20からIPアドレスを受ける。クライアント端末は、受けたIPアドレスにHTTPリクエストを送信する。
ローカルDNSサーバ20とクライアント端末10は、キャッシュ有効時間505で設定された期間、問合せ結果をキャッシュとしてローカルに保存する。
クライアント端末10は、再度同じドメイン名へアクセスする場合、キャッシュ有効時間505内であるか否かを判定する。クライアント端末10は、キャッシュ有効時間505内でないと判定した場合、再度当該ドメイン名の名前解決要求をローカルDNSサーバ20に対して行う。また、クライアント端末10は、キャッシュ有効時間505内であると判定した場合、当該ドメイン名の名前解決要求を行わずに、前回の問合せ結果を利用して、当該ドメイン名に対応するサーバ40のIPアドレスへアクセスする。
また、ローカルDNSサーバ20は、自身と同じドメインに接続されている他のクライアント端末10から当該ドメイン名へアクセス要求があった場合、キャッシュ有効時間505内であるか否かを判定する。ローカルDNSサーバ20は、キャッシュ有効時間505内でないと判定した場合、再度当該ドメイン名の名前解決要求をGSLB装置30に対して行う。また、ローカルDNSサーバ20は、キャッシュ有効時間505内であると判定した場合、当該ドメイン名の名前解決要求をGSLB装置30に対して行わずに、前回の問合せ結果を当該クライアント端末10に出力する(回答する)。
【0035】
ここで、負荷の減少が予測される場合に負荷予測・制御部303が行うサーバ40の起動・停止及びキャッシュ有効時間505の設定について、
図4、
図5を用いて説明する。
負荷が減少するときに停止対象となるサーバ40の優先順位は、サーバ40の構成等に応じて予め決めておく。
【0036】
負荷予測・制御部303は、サーバ監視部302から定期的にサーバ40の負荷情報507を収集する(ステップS11)。負荷予測・制御部303は、実際の負荷が予め設定された負荷の下限値を下回るか否かを判定する(ステップS12)。
【0037】
負荷予測・制御部303は、実際の負荷が予め設定された負荷の下限値を下回ると判定した場合(ステップS12においてYES、
図5におけるaの部分)、負荷予測・制御部303は、サーバ情報テーブルTBL1における対象エントリの死活状態506にスタンバイ(Standby)を書き込む(ステップS13)。
【0038】
負荷予測・制御部303は、クライアント端末10のキャッシュ有効時間505を満了させるため、停止対象であるサーバ40のキャッシュ有効時間505の2倍の時間が経過したか否かを判定する(ステップS14)。
負荷予測・制御部303は、キャッシュ有効時間505の2倍の時間が経過していないと判定した場合(ステップS14においてNO)、所定時間後に(例えば、次のクロック信号が入力されるタイミングに)、再度ステップS14の処理を行う。
また、負荷予測・制御部303は、キャッシュ有効時間505の2倍の時間が経過したと判定した場合(ステップS14においてYES)、停止対象であるサーバ40が備える起動・停止処理部402に停止を命令する。サーバ40の起動・停止処理部402は、負荷予測・制御部303から停止命令を受信すると、自身のサーバ40の電源に停止を命令し、そのサーバを停止させる(ステップS15)。そして、負荷予測・制御部303は、一定時間が経過した後にステップS11の処理に戻す。
【0039】
また、負荷予測・制御部303は、実際の負荷が予め設定された負荷の下限値を下回らないと判定した場合(ステップS12においてNO)、実際の負荷が予め設定された負荷の上限値を上回るか否かを判定する(ステップS16)。
【0040】
負荷予測・制御部303は、実際の負荷が予め設定された負荷の上限値を上回ると判定した場合(ステップS16においてYES、
図5におけるbの部分)、キャッシュ有効時間505を初期値に戻す(ステップS17)。そして、負荷予測・制御部303は、一定時間が経過した後にステップS11の処理に戻す。
また、負荷予測・制御部303は、実際の負荷が予め設定された負荷の上限値を上回らないと判定した場合(ステップS16においてNO)、負荷情報507に基づいて負荷変動を予測する(ステップS18)。
【0041】
負荷予測・制御部303は、予測した負荷変動に応じて、サーバ情報テーブルTBL1における、停止対象であるサーバ40のキャッシュ有効時間505を書き換える(更新する)(ステップS19)。この時、負荷予測・制御部303は、前回の予想よりも現在の負荷が高ければ、記憶されているキャッシュ有効時間505よりも長いキャッシュ有効時間に書き換える(
図5におけるcの部分)。また、負荷予測・制御部303は、前回の予想よりも現在の負荷が低ければ、記憶されているキャッシュ有効時間505よりも短いキャッシュ有効時間に書き換える(
図5におけるdの部分)。そして、負荷予測・制御部303は、一定時間が経過した後にステップS11の処理に戻す。
【0042】
ここで、負荷の増加が予測される場合に負荷予測・制御部303が行うサーバ40の起動・停止及びキャッシュ有効時間505の設定について、
図6を用いて説明する。
【0043】
負荷予測・制御部303は、サーバ監視部302から定期的にサーバ40の負荷情報507を収集する。負荷予測・制御部303は、収集した負荷情報507に基づいて、負荷変動を予測する(ステップS21)。
【0044】
負荷予測・制御部303は、サーバ40の負荷の増加を予測した場合(ステップS22)、負荷予測・制御部303は、サーバ情報テーブルTBL1からスタンバイ状態の予備のサーバ40を検索し、起動する予備のサーバ40を決定する(ステップS23)。負荷が増大するときに起動対象なるサーバ40の優先順位は、サーバ40の構成等に応じて予め決めておく。
負荷予測・制御部303は、サーバ40の起動・停止処理部402に対してサーバの起動を命令する。サーバ40の起動・停止処理部402は、負荷予測・制御部303から停止命令を受信すると、自身のサーバ40の電源に起動を命令し、そのサーバを起動させる(ステップS24)。
【0045】
サーバ監視部302は、タイマー時間を設定し、予備のサーバ40のHTTP処理部403に対してHTTPサービスの死活状態の確認要求を行う。HTTPサービスの死活状態の確認は例えば、サーバ監視部302からHTTP処理部403に対して、HTTPプロトコルでコマンドを送信し、HTTP処理部403から所定のHTTPサービスの応答が返ってくることを確認する(ステップS25)。サーバ監視部302は、タイマー時間内に予備のサーバ40から死活状態の確認要求に対する応答があるか否かを判定する(ステップS26)。
【0046】
サーバ監視部302は、タイマー時間内に応答がないと判定した場合、当該サーバ40の死活状態506にFailedを書き込む(ステップS27)。サーバ監視部302は、ステップS23の処理に戻す。
【0047】
サーバ監視部302は、予備のサーバ40の電源が起動し、タイマー時間内にHTTPサービスの応答を確認すると、サーバ情報テーブルTBL1の対象エントリの死活状態506にActiveを書き込む(更新する)(ステップS28)。
【0048】
DNS処理部301は、更新されたサーバ情報テーブルTBL1を基に予め設定された負荷分散方式(ラウンドロビン等)に従って、ローカルDNSサーバ20からの名前解決要求に対してサーバ40のIPアドレスの回答を行う。すなわち、DNS処理部301は、ローカルDNSサーバ20からの名前解決要求に対して、更新されたサーバ情報テーブルTBL1において、ステップS2と同様に検索し、ステップS3〜ステップS6と同様の処理を行う。そして、DNS処理部301は、決定したエントリのIPアドレス503をローカルDNSサーバ20に出力する(回答する)。
【0049】
なお、サーバ40の負荷が減少した場合、クライアント端末10とローカルDNSサーバ20に格納されるDNSキャッシュは、短時間でキャッシュ有効時間505が満了する。このため、本発明の一実施形態による通信システム1では、不要なサーバ40を迅速に停止することができる。有効時間満了後にクライアント端末10がHTTPアクセスを行う場合には、ローカルDNSサーバ20は、GSLB装置30に対して改めて名前解決を要求する。GSLB装置30は、更新されたサーバ情報テーブルTBL1を基にアクティブ状態のサーバ40のIPアドレス503を回答するため、停止したサーバ40に対してクライアント端末10がアクセスすることはない。
【0050】
以上、本発明の一実施形態による通信システム1について説明した。本発明の一実施形態による通信システム1において、広域負荷分散を行うGSLB装置30は、サーバ40の負荷情報の変化に基づいて負荷変動を予測し、負荷変動がサーバ40の負荷が低下することを示す場合に、キャッシュ有効時間を短くする。
このようにすれば、本発明の一実施形態によるGSLB装置30は、負荷に応じて停止予定サーバのキャッシュ有効時間を最適に設定し、サーバの稼働を適切に制御することができる。すなわち、GSLB装置30は、負荷に応じてサーバ40の稼働台数を適切に制御することができる。その結果、稼働コスト(物理サーバであれば電力料金、パブリッククラウド上の仮想マシンであれば稼働時間にかかる従量課金)を効率化することができる。
【0051】
図7は、本発明の実施形態によるGSLB装置30の最小構成を示す図である。
GSLB装置30は、広域負荷分散を行う装置である。GSLB装置30は、
図7に示すように、負荷予測・制御部303を備える。
負荷予測・制御部303は、サーバの負荷情報の変化に基づいて負荷変動を予測する。負荷予測・制御部303は、予測した負荷変動がサーバの負荷が低下することを示す場合に、キャッシュ有効時間を短くする。
【0052】
なお、本発明の実施形態における処理は、適切な処理が行われる範囲において、処理の順番が入れ替わってもよい。
【0053】
本発明の実施形態における記憶部304、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲においてどこに備えられていてもよい。また、記憶部304、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲において複数存在しデータを分散して記憶していてもよい。
【0054】
本発明の実施形態について説明したが、上述の通信システム1、GSLB装置30、その他の制御装置は内部に、コンピュータシステムを有していてもよい。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。コンピュータの具体例を以下に示す。
図8は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
コンピュータ5は、
図8に示すように、CPU6、メインメモリ7、ストレージ8、インターフェース9を備える。
例えば、上述の通信システム1、GSLB装置30、その他の制御装置のそれぞれは、コンピュータ5に実装される。そして、上述した各処理部の動作は、プログラムの形式でストレージ8に記憶されている。CPU6は、プログラムをストレージ8から読み出してメインメモリ7に展開し、当該プログラムに従って上記処理を実行する。また、CPU6は、プログラムに従って、上述した各記憶部に対応する記憶領域をメインメモリ7に確保する。
【0055】
ストレージ8の例としては、HDD(Hard Disk Drive)、SSD(Solid State Drive)、磁気ディスク、光磁気ディスク、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disc Read Only Memory)、半導体メモリ等が挙げられる。ストレージ8は、コンピュータ5のバスに直接接続された内部メディアであってもよいし、インターフェース9または通信回線を介してコンピュータ5に接続される外部メディアであってもよい。また、このプログラムが通信回線によってコンピュータ5に配信される場合、配信を受けたコンピュータ5が当該プログラムをメインメモリ7に展開し、上記処理を実行してもよい。少なくとも1つの実施形態において、ストレージ8は、一時的でない有形の記憶媒体である。
【0056】
また、上記プログラムは、前述した機能の一部を実現してもよい。さらに、上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるファイル、いわゆる差分ファイル(差分プログラム)であってもよい。
【0057】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例であり、発明の範囲を限定しない。これらの実施形態は、発明の要旨を逸脱しない範囲で、種々の追加、省略、置き換え、変更を行ってよい。