(57)【要約】【課題】サーバ装置のデータの同期を効率化する。【解決手段】負荷分散処理装置１０は、データに対する処理要求を示す複数の要求メッセージを受信し、複数の要求メッセージを複数のサーバ装置に振り分ける。サーバ装置２２は、複数のサーバ装置の１つであって、ストレージ装置２３に記憶されたデータ２４に対応するキャッシュ２５を保持し、キャッシュ２５を用いて、負荷分散処理装置１０から転送された要求メッセージを処理する。負荷分散処理装置１０は、ストレージ装置２３に記憶されたデータ２４の更新を検出した場合、データ２４に対する要求メッセージ１３をサーバ装置２２に転送する際に、キャッシュ２５の更新を指示する更新指示情報１４を要求メッセージ１３に挿入する。【選択図】図１
2020095340.tif 000002
【特許請求の範囲】
【請求項１】
データに対する処理要求を示す複数の要求メッセージを受信し、前記複数の要求メッセージを複数のサーバ装置に振り分ける負荷分散処理装置と、
前記複数のサーバ装置の１つであって、特定のストレージ装置に記憶された前記データに対応するキャッシュを保持し、前記キャッシュを用いて、前記負荷分散処理装置から転送された要求メッセージを処理する第１のサーバ装置と、
を有し、
前記負荷分散処理装置は、前記ストレージ装置に記憶された前記データの更新を検出した場合、前記データに対する要求メッセージを前記第１のサーバ装置に転送する際に、前記キャッシュの更新を指示する更新指示情報を前記転送する要求メッセージに挿入する、
情報処理システム。
【請求項２】
前記負荷分散処理装置は、前記複数のサーバ装置のうち、前記ストレージ装置に記憶された前記データを用いる第２のサーバ装置からの応答メッセージを監視し、前記応答メッセージに基づいて、前記ストレージ装置に記憶された前記データの更新を検出する、
請求項１記載の情報処理システム。
【請求項３】
前記負荷分散処理装置は、前記応答メッセージのヘッダに記載されたデータ更新時刻に基づいて、前記ストレージ装置に記憶された前記データの更新を検出する、
請求項２記載の情報処理システム。
【請求項４】
前記負荷分散処理装置は、前記更新指示情報として、キャッシュ不使用を示すキャッシュ制御情報を、前記転送する要求メッセージのヘッダに挿入する、
請求項１記載の情報処理システム。
【請求項５】
前記複数の要求メッセージはそれぞれ、要求対象のファイルのファイル名を含み、
前記負荷分散処理装置は、前記データの更新の有無をファイル単位で管理し、あるファイルの更新が検出された後、前記更新されたファイルのファイル名を含む要求メッセージを前記第１のサーバ装置に最初に転送する際に、前記更新指示情報を挿入する、
請求項１記載の情報処理システム。
【請求項６】
データに対する処理要求を示す複数の要求メッセージを受信し、特定のストレージ装置に記憶された前記データに対応するキャッシュを保持している第１のサーバ装置を含む複数のサーバ装置に、前記複数の要求メッセージを振り分けて転送する通信部と、
前記ストレージ装置に記憶された前記データの更新を検出した場合、前記データに対する要求メッセージを前記第１のサーバ装置に転送する際に、前記キャッシュの更新を指示する更新指示情報を前記転送する要求メッセージに挿入する処理部と、
を有する負荷分散処理装置。
【請求項７】
コンピュータに、
データに対する処理要求を示す複数の要求メッセージを取得し、
特定のストレージ装置に記憶された前記データに対応するキャッシュを保持している第１のサーバ装置を含む複数のサーバ装置に、前記複数の要求メッセージを振り分け、
前記ストレージ装置に記憶された前記データの更新を検出し、
前記データの更新が検出された場合、前記データに対する要求メッセージが前記第１のサーバ装置に転送される際に、前記キャッシュの更新を指示する更新指示情報を前記転送される要求メッセージに挿入する、
処理を実行させる負荷分散処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理システム、負荷分散処理装置および負荷分散処理プログラムに関する。
【背景技術】
【０００２】
クライアント装置からデータに対する要求メッセージを受信し、受信した要求メッセージに応じたデータ処理を行って応答メッセージを返信するサーバ装置がある。例えば、クライアント装置からＨＴＭＬ（HyperText Markup Language）ファイルを指定したＨＴＴＰ（Hypertext Transfer Protocol）リクエストを受信し、指定されたＨＴＭＬファイルを含むＨＴＴＰレスポンスを返信するＷｅｂサーバがある。
【０００３】
単位時間当たりに受信する要求メッセージが増加すると、サーバ装置の負荷が高くなって応答時間が長くなるおそれがある。そこで、負荷が高くなる場合はデータをコピーしてサーバ装置の台数を増やし、複数のサーバ装置に要求メッセージを振り分ける負荷分散が行われることがある。例えば、イベントや災害などによりＷｅｂサイトの需要が一時的に高くなる場合に、ＨＴＭＬファイルなどのファイルをコピーしてＷｅｂサーバの台数を増やし、複数のＷｅｂサーバにＨＴＴＰリクエストを振り分けることがある。要求メッセージの振り分けは、ロードバランサなどの負荷分散装置により行われることがある。
【０００４】
なお、各データのクライアントからの需要を予測し、需要の増大が予測されるデータを予め複数のキャッシュサーバにコピーする制御サーバが提案されている。また、複数の制御サーバが分散してキャッシュ管理情報を保持し、クライアントからデータ要求を受信すると要求されたデータに関するキャッシュ管理情報をもつ制御サーバにデータ要求を転送するキャッシュシステムが提案されている。また、クライアントから要求されたデータのキャッシュが存在しない場合、オリジナルデータを保持するマスタサーバよりも他のキャッシュサーバから優先的にデータをコピーするキャッシュサーバが提案されている。キャッシュサーバ間のデータのコピーは負荷を考慮して制御される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１０９７０号公報
【特許文献２】特開２００７−６６１６１号公報
【特許文献３】国際公開第２０１３／０４７２０７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のサーバ装置に要求メッセージを振り分ける負荷分散が行われているときに、それら複数のサーバ装置が保持するデータを更新したいことがある。１つの方法としては、管理者が手動で、各サーバ装置にログインしてデータを書き換える方法が考えられる。しかし、管理者による手動の作業は負担が大きく、更新ミスが発生するリスクも高くなる。
【０００７】
他の１つの方法としては、一部のサーバ装置をマスタサーバとして動作させ、他のサーバ装置をキャッシュサーバとして動作させる方法が考えられる。キャッシュサーバは、マスタサーバからデータを取得し、取得したデータを所定の有効期間だけキャッシュとして保持する。キャッシュサーバは、有効なキャッシュが存在している間は、受信した要求メッセージに対してキャッシュを用いてデータ処理を行う。キャッシュの有効期間が切れた後にキャッシュサーバがマスタサーバからデータを再取得することで、マスタサーバに対して行われたデータ更新がキャッシュサーバに自動的に反映されることになる。
【０００８】
しかし、単純にキャッシュサーバの仕組みを利用するだけでは、キャッシュの有効期間を適切に設定することが難しいという問題がある。有効期間が長い場合、マスタサーバのデータ更新がキャッシュサーバに反映されるまでの遅延が大きくなってしまう。一方、有効期間が短い場合、マスタサーバとキャッシュサーバの間でデータ通信が頻繁に発生し、負荷分散の効果が十分に得られなくなってしまうおそれがある。
【０００９】
１つの側面では、本発明は、サーバ装置のデータの同期を効率化する情報処理システム、負荷分散処理装置および負荷分散処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、データに対する処理要求を示す複数の要求メッセージを受信し、複数の要求メッセージを複数のサーバ装置に振り分ける負荷分散処理装置と、複数のサーバ装置の１つであって、特定のストレージ装置に記憶されたデータに対応するキャッシュを保持し、キャッシュを用いて、負荷分散処理装置から転送された要求メッセージを処理する第１のサーバ装置と、を有する情報処理システムが提供される。負荷分散処理装置は、ストレージ装置に記憶されたデータの更新を検出した場合、データに対する要求メッセージを第１のサーバ装置に転送する際に、キャッシュの更新を指示する更新指示情報を転送する要求メッセージに挿入する。
【００１１】
また、１つの態様では、通信部と処理部とを有する負荷分散処理装置が提供される。また、１つの態様では、コンピュータに実行させる負荷分散処理プログラムが提供される。
【発明の効果】
【００１２】
１つの側面では、サーバ装置のデータの同期を効率化できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の情報処理システムの例を説明する図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】負荷分散装置のハードウェア例を示すブロック図である。
【図４】キャッシュ更新の例を示すシーケンス図である。
【図５】ＨＴＴＰメッセージの例を示す図である。
【図６】負荷分散装置とサーバ装置の機能例を示すブロック図である。
【図７】ファイル管理テーブルの例を示す図である。
【図８】ファイル管理テーブルの更新例を示す図である。
【図９】負荷分散装置の手順例を示すフローチャートである。
【図１０】負荷分散装置の手順例を示すフローチャート（続き）である。
【図１１】サーバ装置の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１５】
図１は、第１の実施の形態の情報処理システムの例を説明する図である。
第１の実施の形態の情報処理システムは、複数の要求メッセージを受信し、受信した複数の要求メッセージを複数のサーバ装置に振り分けて分散処理するものである。第１の実施の形態の情報処理システムは、負荷分散処理装置１０および複数のサーバ装置を含む。
【００１６】
負荷分散処理装置１０は、データに対する処理要求を示す複数の要求メッセージを受信し、受信した複数の要求メッセージを複数のサーバ装置に振り分ける。負荷分散処理装置１０は、情報処理装置やコンピュータや通信装置などと言うこともでき、ロードバランサやリバースプロキシサーバなどと呼ばれるものであってもよい。負荷分散処理装置１０は、要求メッセージを処理するサーバ装置の１つ（振り分け先の１つ）を兼ねてもよい。負荷分散処理装置１０が受信する複数の要求メッセージにはそれぞれ、要求対象のファイルのファイル名など、要求対象のデータを識別する識別情報が含まれていてもよい。
【００１７】
複数のサーバ装置には、サーバ装置２１（第２のサーバ装置）とサーバ装置２２（第１のサーバ装置）が含まれる。サーバ装置２２は、情報処理システムが備える特定のストレージ装置２３に記憶されたデータ２４に対応するキャッシュ２５を保持する。サーバ装置２２は、情報処理装置やコンピュータなどと言うこともでき、キャッシュサーバなどと呼ばれてもよい。ストレージ装置２３は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性ストレージである。ストレージ装置２３は、サーバ装置２２の外部に存在し、サーバ装置２１が備えるものでもよいし負荷分散処理装置１０が備えるものであってもよい。データ２４はオリジナルデータであり、キャッシュ２５はデータ２４のコピーである。サーバ装置２２は、保持しているキャッシュ２５を用いて、負荷分散処理装置１０から転送された要求メッセージを処理する。
【００１８】
負荷分散処理装置１０は、通信部１１および処理部１２を有する。通信部１１は、ネットワークに接続された通信インタフェースである。通信部１１は、有線通信インタフェースでもよいし無線通信インタフェースでもよい。通信部１１は、クライアント装置などから要求メッセージを受信し、受信した要求メッセージを何れかのサーバ装置に転送する。処理部１２は、例えば、ＣＰＵ（Central Processing Unit）、ＧＰＵ（Graphics Processing Unit）、ＤＳＰ（Digital Signal Processor）などのプロセッサである。ただし、処理部１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。処理部１２は、ストレージ装置２３に記憶されたデータ２４が更新された際に、サーバ装置２２が保持するキャッシュ２５が同期されるよう制御する。
【００１９】
具体的には、処理部１２は、ストレージ装置２３に記憶されたデータ２４が更新されたことを検出する。データ２４の更新は、情報処理システムの管理者によって行われることがある。データ２４の更新は、サーバ装置２１から負荷分散処理装置１０に返信される応答メッセージを監視することによって検出してもよい。例えば、負荷分散処理装置１０は、応答メッセージのヘッダに記載されたデータ更新時刻を監視し、データ更新時刻が新しくなった場合にデータ２４が更新されたと判断する。
【００２０】
ストレージ装置２３に記憶されたデータ２４の更新を検出した場合、処理部１２は、データ２４に対する要求メッセージ１３がサーバ装置２２に転送される際に、キャッシュ２５の更新を指示する更新指示情報１４を要求メッセージ１３に挿入する。通信部１１は、更新指示情報１４が挿入された要求メッセージ１３をサーバ装置２２に転送する。更新指示情報１４が挿入される要求メッセージ１３は、例えば、データ２４を要求対象に指定した要求メッセージであって、データ２４の更新が検出されてから最初にサーバ装置２２に転送されることになった要求メッセージである。更新指示情報１４として、例えば、ＨＴＴＰヘッダの「Cache-Control: no-cache」など、キャッシュ不使用を示すキャッシュ制御情報を要求メッセージ１３のヘッダに挿入してもよい。
【００２１】
更新指示情報１４を含む要求メッセージ１３を受信したサーバ装置２２は、ストレージ装置２３に記憶されたデータ２４のコピーを再取得してキャッシュ２５を更新する。例えば、サーバ装置２２は、サーバ装置２１からデータ２４のコピーを受信する。そして、サーバ装置２２は、更新したキャッシュ２５を用いて要求メッセージ１３を処理する。これにより、データ２４の更新がキャッシュ２５に反映される。
【００２２】
第１の実施の形態の情報処理システムによれば、要求メッセージを複数のサーバ装置に振り分ける負荷分散処理装置１０において、ストレージ装置２３に記憶されたデータ２４の更新が検出される。すると、データ２４に対する要求メッセージ１３がサーバ装置２２に転送される際に、更新指示情報１４が要求メッセージ１３に挿入される。これにより、サーバ装置２２のキャッシュ２５がストレージ装置２３のデータ２４と同期する。よって、データ２４とキャッシュ２５の同期を効率的に実現できる。
【００２３】
例えば、データ２４を更新する際にサーバ装置２２のキャッシュ２５を、管理者が手動で更新する方法も考えられる。しかし、その方法では管理者の作業負担が大きく、キャッシュ２５の更新ミスが発生するリスクもある。また、例えば、サーバ装置２２が定期的にキャッシュ２５を無効化してストレージ装置２３のデータ２４を再取得する方法も考えられる。しかし、その方法ではデータ２４の更新の有無に関係なくデータ２４を再取得するデータ通信が発生し、負荷分散を阻害するおそれがある。また、キャッシュ２５の有効期間を長く設定すると、データ２４の更新がキャッシュ２５に反映されるまでの遅延が大きくなってしまう。これに対して、第１の実施の形態では同期を効率化できる。
【００２４】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の情報処理システムの例を示す図である。
【００２５】
第２の実施の形態の情報処理システムは、ＨＴＴＰリクエストを受けてＨＴＭＬファイルなどのファイルを提供するＷｅｂサーバを、負荷の増大時に迅速に増設できるようにするものである。第２の実施の形態の情報処理システムは、クライアント装置３１などの１以上のクライアント装置、自社システム４１およびクラウドシステム４２を含む。
【００２６】
クライアント装置３１、自社システム４１およびクラウドシステム４２は、ネットワーク４３に接続されている。ネットワーク４３は、例えば、インターネットなどの広域データ通信ネットワークである。クライアント装置３１は、ユーザが使用する端末装置である。クライアント装置３１を情報処理装置やコンピュータと言うことがある。クライアント装置３１はＷｅｂブラウザを実行する。Ｗｅｂブラウザは、ユーザの操作に応じてネットワーク４３を介して自社システム４１にＨＴＴＰリクエストを送信し、自社システム４１からＨＴＴＰレスポンスを受信する。Ｗｅｂブラウザは、ＨＴＴＰレスポンスに基づいてクライアント装置３１のディスプレイにＷｅｂページを表示する。
【００２７】
自社システム４１は、Ｗｅｂサイトの運営主体が所有するオンプレミス型の情報処理システムである。ただし、自社システム４１は、プライベートクラウドシステムなど他の名称で呼ばれる情報処理システムであってもよい。例えば、自社システム４１は、Ｗｅｂサイトの運営主体が所有していないものの独占的に使用できるホスティング型のプライベートクラウドシステムであってもよい。クラウドシステム４２は、データセンタに設置された情報処理システムであり、パブリッククラウドシステムである。Ｗｅｂサイトの運営主体は、契約により有料でクラウドシステム４２の計算リソースを利用できる。利用するクラウドシステム４２の計算リソースを適宜増減することもできる。
【００２８】
自社システム４１は、管理装置３２、負荷分散装置１００およびサーバ装置２１０，２２０などの２以上のサーバ装置を含む。自社システム４１内の装置はネットワーク４４に接続されている。ネットワーク４４は、例えば、ＬＡＮ（Local Area Network）などのローカルデータ通信ネットワークである。管理装置３２は、Ｗｅｂサイトの管理者が使用する端末装置である。管理装置３２を情報処理装置やコンピュータと言うことがある。管理装置３２は、管理者の操作に応じて、Ｗｅｂサイトを実装したＨＴＭＬファイルなどのファイルを更新することがある。また、管理装置３２は、管理者の操作に応じて、Ｗｅｂサイトの提供に用いるサーバ装置の追加や削除を行うことがある。
【００２９】
負荷分散装置１００は、クライアント装置３１などのクライアント装置からＨＴＴＰリクエストを受信し、ＨＴＴＰリクエストを複数のサーバ装置に振り分けて負荷分散を行う。負荷分散装置１００を、ロードバランサやリバースプロキシサーバと言うことがあり、情報処理装置やコンピュータや通信装置と言うこともある。負荷分散装置１００は、ＨＴＴＰリクエストの振り分け先のサーバ装置からＨＴＴＰレスポンスを受信し、受信したＨＴＴＰレスポンスをＨＴＴＰリクエストの送信元のクライアント装置に転送する。負荷分散装置１００は、複数のサーバ装置へのＨＴＴＰリクエストの振り分けをラウンドロビン方式で行ってもよい。また、未応答のＨＴＴＰリクエストが多い負荷の高いサーバ装置や、一定時間以上応答のないダウンしたサーバ装置を振り分け先から除外してもよい。
【００３０】
サーバ装置２１０，２２０は、Ｗｅｂサイトを実装したファイルをローカルのストレージ装置に記憶し、ＨＴＴＰリクエストを受信してＨＴＴＰレスポンスを返信するＷｅｂサーバである。サーバ装置２１０，２２０を情報処理装置やコンピュータと言うことがある。サーバ装置２１０，２２０は、ＨＴＴＰリクエストが静的ファイルを指定している場合、指定されたファイルを含むＨＴＴＰレスポンスを返信する。
【００３１】
サーバ装置２１０は、オリジナルのファイルを記憶するマスタサーバとして動作する。サーバ装置２１０は、負荷分散装置１００から振り分けられたＨＴＴＰリクエストを受信し、受信したＨＴＴＰリクエストとサーバ装置２１０がもつファイルに基づいてＨＴＴＰレスポンスを生成し、負荷分散装置１００にＨＴＴＰレスポンスを返信する。サーバ装置２１０のファイルは、管理装置３２によって更新されることがある。
【００３２】
サーバ装置２２０は、サーバ装置２１０がもつファイルのコピーを記憶するキャッシュサーバとして動作する。サーバ装置２２０は、負荷分散装置１００から振り分けられたＨＴＴＰリクエストを受信し、受信したＨＴＴＰリクエストとサーバ装置２２０がキャッシュとしてもつファイルに基づいてＨＴＴＰレスポンスを生成し、負荷分散装置１００にＨＴＴＰレスポンスを返信する。このとき、ＨＴＴＰレスポンスの生成に用いられるファイルをサーバ装置２２０が保持していない場合、サーバ装置２２０はサーバ装置２１０からファイルのコピーを取得する。また、サーバ装置２２０にはキャッシュの有効期間が設定される。サーバ装置２２０は、取得してから有効期間が経過したファイルを無効化し、サーバ装置２１０から再度取得するようにする。
【００３３】
クラウドシステム４２は、サーバ装置２３０，２４０などの２以上のサーバ装置を含む。クラウドシステム４２内の装置はネットワーク４５に接続されている。ネットワーク４５は、例えば、ＬＡＮなどのローカルデータ通信ネットワークである。クラウドシステム４２は、管理装置３２からの要求に応じて、Ｗｅｂサイトの運営主体にサーバ装置２３０，２４０を割り当てる。サーバ装置２３０，２４０をキャッシュサーバとして動作させ、負荷分散装置１００がＨＴＴＰリクエストを振り分ける振り分け先にサーバ装置２３０，２４０を追加することで、サーバ装置２１０，２２０の負荷を下げることができる。
【００３４】
例えば、災害発生時や電子商取引のイベント期間などＨＴＴＰリクエストが増加する期間だけ、クラウドシステム４２にキャッシュサーバを増設してＨＴＴＰリクエストの振り分け先を増やすことが考えられる。これにより、自社システム４１の設備投資を抑えつつ、一時的なＷｅｂサイトの需要増大に対応することができる。
【００３５】
サーバ装置２３０，２４０は、サーバ装置２１０がもつファイルのコピーを記憶するキャッシュサーバとして動作し得る。サーバ装置２３０，２４０は、負荷分散装置１００から振り分けられたＨＴＴＰリクエストをネットワーク４３を介して受信する。サーバ装置２３０，２４０は、受信したＨＴＴＰリクエストとキャッシュとしてもつファイルに基づいてＨＴＴＰレスポンスを生成し、負荷分散装置１００にＨＴＴＰレスポンスをネットワーク４３を介して返信する。このとき、ＨＴＴＰレスポンスの生成に用いられるファイルを保持していない場合、サーバ装置２３０，２４０はサーバ装置２１０からファイルのコピーを取得する。また、サーバ装置２３０，２４０にはキャッシュの有効期間が設定される。サーバ装置２３０，２４０は、取得してから有効期間が経過したファイルを無効化し、サーバ装置２１０から再度取得するようにする。
【００３６】
なお、第２の実施の形態ではマスタサーバを自社システム４１に設置したが、マスタサーバをクラウドシステム４２に設置することも可能である。例えば、サーバ装置２３０をマスタサーバとして動作させ、管理装置３２がサーバ装置２３０のファイルを更新し、サーバ装置２１０，２２０，２４０はサーバ装置２３０からファイルのコピーを取得するようにしてもよい。また、第２の実施の形態では負荷分散装置１００を自社システム４１に設置したが、負荷分散装置１００をクラウドシステム４２に設置することも可能である。例えば、クラウドシステム４２に設置された負荷分散装置１００がクライアント装置３１からＨＴＴＰリクエストを受信し、受信したＨＴＴＰリクエストを自社システム４１のサーバ装置２１０，２２０などに振り分けるようにしてもよい。
【００３７】
なお、負荷分散装置１００は、第１の実施の形態の負荷分散処理装置１０に対応する。サーバ装置２１０は、第１の実施の形態のサーバ装置２１に対応する。サーバ装置２２０，２３０，２４０は、第１の実施の形態のサーバ装置２２に対応する。
【００３８】
図３は、負荷分散装置のハードウェア例を示すブロック図である。
負荷分散装置１００は、バスに接続されたＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。ＣＰＵ１０１は、第１の実施の形態の処理部１２に対応する。通信インタフェース１０７は、第１の実施の形態の通信部１１に対応する。クライアント装置３１、管理装置３２およびサーバ装置２１０，２２０，２３０，２４０も、負荷分散装置１００と同様のハードウェアを用いて実装できる。
【００３９】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、負荷分散装置１００は複数のプロセッサを備えてもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００４０】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に使用するデータを一時的に記憶する揮発性の半導体メモリである。なお、負荷分散装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数のメモリを備えてもよい。
【００４１】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。なお、負荷分散装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）など他の種類のストレージを備えてもよく、複数のストレージを備えてもよい。
【００４２】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、負荷分散装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを使用することができる。
【００４３】
入力信号処理部１０５は、負荷分散装置１００に接続された入力デバイス１１２から入力信号を受信する。入力デバイス１１２として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用できる。また、負荷分散装置１００に複数の種類の入力デバイスが接続されてもよい。
【００４４】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４５】
通信インタフェース１０７は、ネットワーク４４に接続され、ネットワーク４４を介して他の情報処理装置と通信を行う。通信インタフェース１０７は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースである。ただし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースであってもよい。
【００４６】
ここで、サーバ装置２２０，２３０，２４０がもつキャッシュの管理について考える。負荷分散装置１００がサーバ装置２１０，２２０，２３０，２４０にＨＴＴＰリクエストを振り分けている場合に、Ｗｅｂサイトを実装したファイルを更新したいことがある。１つの方法としては、管理装置３２が、管理者の操作に応じてサーバ装置２１０，２２０，２３０，２４０にそれぞれログインしてファイルを上書きする方法が考えられる。しかし、管理者による手動の操作では、使用するサーバ装置の台数が多いほど管理者の負担が大きくなり、更新ミスも発生しやすいという問題がある。
【００４７】
また、他の１つの方法としては、キャッシュサーバであるサーバ装置２２０，２３０，２４０がマスタサーバであるサーバ装置２１０から自動的にファイルのコピーを取得するという既存のキャッシュの仕組みを利用する方法が考えられる。この場合、管理装置３２はマスタサーバであるサーバ装置２１０のファイルのみを更新すればよい。
【００４８】
しかし、既存のキャッシュの仕組みのみでは、キャッシュの有効期間を適切に設定することが難しいという問題がある。有効期間が長いと、管理装置３２がサーバ装置２１０のファイルを更新してから、ファイルの更新がサーバ装置２２０，２３０，２４０に反映されるまでの遅延が大きくなり、クライアント装置３１に古いファイルが送信されるリスクが高くなる。一方、有効期間が短いと、ファイルの更新の有無に関係なく、サーバ装置２１０とサーバ装置２２０，２３０，２４０の間で頻繁にファイルが転送される。このため、サーバ装置２１０，２２０，２３０，２４０やネットワーク４４の負荷が高くなり負荷分散の効果が低下する。また、クラウドシステム４２の使用料金が通信量にも依存する場合、Ｗｅｂサイトの運営コストが増加してしまう。
【００４９】
また、自社システム４１のサーバ装置２１０，２２０の負荷が増大した際、クラウドシステム４２に迅速にキャッシュサーバを追加できることが好ましい。このとき、マスタサーバであるサーバ装置２１０から追加のキャッシュサーバに全てのファイルをコピーしてから追加のキャッシュサーバへのＨＴＴＰリクエストの振り分けを開始すると、急激な負荷増大に迅速に対応することが難しいという問題がある。
【００５０】
以上から、第２の実施の形態では、サーバ装置２３０，２４０がファイルのコピーを保持していない状態からサーバ装置２３０，２４０をキャッシュサーバとして動作させる。サーバ装置２３０，２４０は、負荷分散装置１００から受信するＨＴＴＰリクエストに応じてサーバ装置２１０から適宜ファイルのコピーを取得してキャッシュを増やしていく。
【００５１】
また、負荷分散装置１００は、サーバ装置２１０からのＨＴＴＰレスポンスのヘッダを監視し、あるファイルがサーバ装置２１０で更新されたことを検出する。すると、負荷分散装置１００は、当該ファイルを指定したＨＴＴＰリクエストをサーバ装置２１０以外のサーバ装置に転送する際に、キャッシュを使用しないことを指示するヘッダをＨＴＴＰリクエストに挿入する。このＨＴＴＰリクエストを受信したサーバ装置は、ヘッダの指示に従ってサーバ装置２１０からファイルを再取得する。
【００５２】
これにより、サーバ装置２１０のファイルが更新された後、サーバ装置２１０のファイルとサーバ装置２２０，２３０，２４０のファイルが迅速に同期される。なお、負荷分散装置１００からの指示によって同期が実行されるため、サーバ装置２２０，２３０，２４０のキャッシュの有効期間は十分に長く設定しておいてよい。また、キャッシュの有効期限を無期限にする機能をサーバ装置２２０，２３０，２４０が有している場合、キャッシュの有効期限を無期限に設定してもよい。また、負荷分散装置１００は、サーバ装置２１０，２２０，２３０，２４０にＨＴＴＰリクエストを振り分ける際、未同期のファイルが存在するサーバ装置に優先的にＨＴＴＰリクエストを転送して同期を促してもよい。
【００５３】
図４は、キャッシュ更新の例を示すシーケンス図である。
管理装置３２は、更新されたファイルをサーバ装置２１０に送信し、サーバ装置２１０が記憶するオリジナルのファイルを上書きする（Ｓ１０）。サーバ装置２１０のファイルが更新された後、負荷分散装置１００は、何れかのクライアント装置から当該ファイルのファイル名を含むＨＴＴＰリクエストを受信する（Ｓ１１）。ここでは、負荷分散装置１００は、転送先としてサーバ装置２１０を選択したとする。すると、負荷分散装置１００は、受信したＨＴＴＰリクエストをサーバ装置２１０に転送する（Ｓ１２）。
【００５４】
サーバ装置２１０は、受信したＨＴＴＰリクエストに含まれるファイル名に従って、ステップＳ１０で更新されたファイルを含むＨＴＴＰレスポンスを生成して負荷分散装置１００に送信する（Ｓ１３）。このＨＴＴＰレスポンスには、当該ファイルの最終更新時刻を示すヘッダが含まれている。負荷分散装置１００は、サーバ装置２１０から受信したＨＴＴＰレスポンスを要求元のクライアント装置に転送する（Ｓ１４）。ここで、負荷分散装置１００は、サーバ装置とファイル名の組毎に最終更新時刻を記録しておく。負荷分散装置１００は、サーバ装置２１０から受信したＨＴＴＰレスポンスの最終更新時刻が新しくなったことにより、当該ファイルがサーバ装置２１０で更新されたことを検知する。
【００５５】
ファイルの更新を検知した後、負荷分散装置１００は、何れかのクライアント装置から当該ファイルのファイル名を含むＨＴＴＰリクエストを受信する（Ｓ１５）。ステップＳ１１のＨＴＴＰリクエストの送信元とステップＳ１５のＨＴＴＰリクエストの送信元とは、同一でもよいし異なってもよい。ここでは、負荷分散装置１００は、ラウンドロビン方式により転送先としてサーバ装置２２０を選択したとする。すると、負荷分散装置１００は、受信したＨＴＴＰリクエストをサーバ装置２２０に転送する（Ｓ１６）。このとき、負荷分散装置１００は、転送するＨＴＴＰリクエストが更新されたファイルのファイル名を含んでいることを検知する。すると、負荷分散装置１００は、キャッシュの不使用を示すヘッダを当該ＨＴＴＰリクエストに挿入して転送する。
【００５６】
サーバ装置２２０は、受信したＨＴＴＰリクエストがキャッシュの不使用を示すヘッダを含んでいることから、キャッシュの有効期間に関係なくオリジナルのファイルを再取得するようにする。すなわち、サーバ装置２２０は、当該ファイルを指定したＨＴＴＰリクエストをサーバ装置２１０に送信する（Ｓ１７）。サーバ装置２１０は、ステップＳ１０で更新されたファイルを含むＨＴＴＰレスポンスを生成してサーバ装置２２０に送信する（Ｓ１８）。サーバ装置２２０は、サーバ装置２１０から取得したファイルをキャッシュとして記憶し、当該ファイルを含むＨＴＴＰレスポンスを生成して負荷分散装置１００に送信する（Ｓ１９）。負荷分散装置１００は、サーバ装置２２０から受信したＨＴＴＰレスポンスを要求元のクライアント装置に転送する（Ｓ２０）。
【００５７】
更に、負荷分散装置１００は、何れかのクライアント装置から当該ファイルのファイル名を含むＨＴＴＰリクエストを受信する（Ｓ２１）。ここでは、負荷分散装置１００は、ラウンドロビン方式により転送先としてサーバ装置２３０を選択したとする。すると、負荷分散装置１００は、受信したＨＴＴＰリクエストをサーバ装置２３０に転送する（Ｓ２２）。このとき、負荷分散装置１００は、転送するＨＴＴＰリクエストが更新されたファイルのファイル名を含んでいることを検知する。すると、負荷分散装置１００は、キャッシュの不使用を示すヘッダを当該ＨＴＴＰリクエストに挿入して転送する。
【００５８】
サーバ装置２３０は、受信したＨＴＴＰリクエストがキャッシュの不使用を示すヘッダを含んでいることから、キャッシュの有効期間に関係なくオリジナルのファイルを再取得するようにする。すなわち、サーバ装置２３０は、当該ファイルを指定したＨＴＴＰリクエストをサーバ装置２１０に送信する（Ｓ２３）。サーバ装置２１０は、ステップＳ１０で更新されたファイルを含むＨＴＴＰレスポンスを生成してサーバ装置２３０に送信する（Ｓ２４）。サーバ装置２３０は、サーバ装置２１０から取得したファイルをキャッシュとして記憶し、当該ファイルを含むＨＴＴＰレスポンスを生成して負荷分散装置１００に送信する（Ｓ２５）。負荷分散装置１００は、サーバ装置２３０から受信したＨＴＴＰレスポンスを要求元のクライアント装置に転送する（Ｓ２６）。
【００５９】
図５は、ＨＴＴＰメッセージの例を示す図である。
ＨＴＴＰリクエスト５１は、上記のステップＳ１６で負荷分散装置１００がサーバ装置２２０に送信するＨＴＴＰリクエストの例である。ＨＴＴＰリクエスト５１は、要求対象のファイル（例えば、ＨＴＭＬファイル）のファイル名を含む。ファイル名は、ディレクトリ名を含むファイルパスであってもよい。また、ＨＴＴＰリクエスト５１は、完全修飾ドメイン名（ＦＱＤＮ：Fully Qualified Domain Name）などで表現されたＷｅｂサイトのホスト名を含む。また、ＨＴＴＰリクエスト５１は、値を「no-cache」に指定したCache-Controlヘッダを含む。このCache-Controlヘッダは、現在のキャッシュを使用しないでＨＴＴＰレスポンスを生成するよう指示する制御情報である。
【００６０】
このCache-Controlヘッダは、所定条件を満たす場合に負荷分散装置１００によりＨＴＴＰリクエストに挿入されるものである。よって、クライアント装置３１が送信するＨＴＴＰリクエストにはこのCache-Controlヘッダは含まれない。また、負荷分散装置１００からサーバ装置２１０，２２０，２３０，２４０に転送されるＨＴＴＰリクエストであっても、所定条件を満たさない場合にはこのCache-Controlヘッダは含まれない。
【００６１】
ＨＴＴＰレスポンス５２は、上記のステップＳ１９でサーバ装置２２０が負荷分散装置１００に送信するＨＴＴＰレスポンスの例である。ＨＴＴＰレスポンス５２は、応答の意味を示す３桁の数字であるステータスコードを含む。２００番のステータスコードは、要求された正しい情報がＨＴＴＰレスポンス５２に含まれていることを示す。また、ＨＴＴＰレスポンス５２は、送信時刻を示すヘッダを含む。
【００６２】
また、ＨＴＴＰレスポンス５２は、ＨＴＴＰレスポンス５２に含まれるファイルの最終更新時刻を示すLast-Modifiedヘッダを含む。各ファイルの最終更新時刻はサーバ装置２２０で管理されている。サーバ装置２２０はキャッシュサーバであるため、サーバ装置２２０が記憶する静的ファイルの最終更新時刻は、サーバ装置２１０が記憶するオリジナルのファイルの最終更新時刻と同じである。また、ＨＴＴＰレスポンス５２は、データ長やデータ型などを示すヘッダを含む。また、ＨＴＴＰレスポンス５２は、これらのヘッダに続けて、ＨＴＭＬテキストなどのファイルの内容を含む。
【００６３】
なお、第２の実施の形態では、キャッシュの更新を負荷分散装置１００からサーバ装置２２０，２３０，２４０に指示するために、ＨＴＴＰリクエストのCache-Controlヘッダを利用している。ただし、他の方法でキャッシュの更新を指示するようにしてもよい。例えば、ＨＴＴＰリクエストに独自ヘッダを定義し、サーバ装置２２０，２３０，２４０が独自ヘッダを検知してキャッシュを更新するようにしてもよい。
【００６４】
次に、負荷分散装置１００、マスタサーバおよびキャッシュサーバの機能を説明する。
図６は、負荷分散装置とサーバ装置の機能例を示すブロック図である。
負荷分散装置１００は、ファイル管理データベース１２１、リクエスト振り分け部１２２およびレスポンス監視部１２３を有する。ファイル管理データベース１２１は、例えば、ＲＡＭ１０２またはＨＤＤ１０３の記憶領域を用いて実装できる。リクエスト振り分け部１２２およびレスポンス監視部１２３は、例えば、プログラムを用いて実装できる。
【００６５】
ファイル管理データベース１２１は、ファイルの同期の要否を管理するためのファイル管理情報を記憶する。ファイル管理情報は、サーバ装置を示すサーバ名とファイルを示すファイル名の組毎に、当該サーバ装置が記憶する当該ファイルの最終更新日時と、当該サーバ装置が記憶する当該ファイルの更新要否を示す要更新フラグとを含む。
【００６６】
リクエスト振り分け部１２２は、クライアント装置３１などのクライアント装置からＨＴＴＰリクエストを受信し、受信したＨＴＴＰリクエストをサーバ装置２１０，２２０，２３０，２４０に振り分ける。例えば、リクエスト振り分け部１２２は、ラウンドロビン方式により転送先としてサーバ装置２１０，２２０，２３０，２４０を順に選択する。ここで、転送すべきＨＴＴＰリクエストに含まれるファイル名と転送先のサーバ装置のサーバ名が決定すると、リクエスト振り分け部１２２は、ファイル管理データベース１２１から当該サーバ名と当該ファイル名の組に対応する要更新フラグを確認する。要更新フラグがキャッシュの更新要を示している場合、リクエスト振り分け部１２２は、値を「no-cache」に指定したCache-ControlヘッダをＨＴＴＰリクエストに挿入する。
【００６７】
レスポンス監視部１２３は、サーバ装置２１０，２２０，２３０，２４０からＨＴＴＰレスポンスを受信し、受信したＨＴＴＰレスポンスを要求元のクライアント装置に転送する。このとき、レスポンス監視部１２３は、ＨＴＴＰレスポンスからLast-Modifiedヘッダを抽出する。また、レスポンス監視部１２３は、送信元のサーバ装置のサーバ名と要求されたファイルのファイル名の組に対応する最終更新時刻をファイル管理データベース１２１から読み出す。レスポンス監視部１２３は、Last-Modifiedヘッダとファイル管理データベース１２１の最終更新時刻とを比較して、ファイル更新の有無を判定する。前者の時刻が後者の時刻より新しい場合、ファイルが更新されたと判定される。
【００６８】
ファイルの更新を検出すると、レスポンス監視部１２３は、ファイル管理情報において、送信元のサーバ装置のサーバ名と要求されたファイルのファイル名の組に対応する最終更新時刻をLast-Modifiedヘッダの値に書き換える。また、レスポンス監視部１２３は、ファイル名が同じでサーバ名が異なり、最終更新時刻がLast-Modifiedヘッダの値よりも古いレコードをファイル管理情報から検索する。レスポンス監視部１２３は、検索したレコードの要更新フラグがキャッシュの更新要を示すように書き換える。ただし、レスポンス監視部１２３は、ステータスコードが２００番以外のＨＴＴＰレスポンスなど、エラーを示すＨＴＴＰレスポンスを無視するようにしてもよい。
【００６９】
マスタサーバであるサーバ装置２１０は、ファイルストレージ２１１およびファイル送信部２１２を有する。ファイルストレージ２１１は、例えば、サーバ装置２１０が有するＲＡＭまたはＨＤＤの記憶領域を用いて実装される。ファイル送信部２１２は、例えば、サーバ装置２１０が実行するプログラムを用いて実装される。
【００７０】
ファイルストレージ２１１は、Ｗｅｂサイトに用いられるＨＴＭＬファイルなどのファイルを記憶する。ファイルストレージ２１１が記憶するファイルは、キャッシュではないオリジナルのファイルである。ファイル送信部２１２は、ＨＴＴＰリクエストを受信する。ＨＴＴＰリクエストは、負荷分散装置１００から受信されることもあるし、サーバ装置２２０，２３０，２４０から受信されることもある。ファイル送信部２１２は、受信したＨＴＴＰリクエストに含まれるファイル名が示すファイルをファイルストレージ２１１から読み出し、読み出したファイルを含むＨＴＴＰレスポンスを返信する。
【００７１】
キャッシュサーバであるサーバ装置２２０は、キャッシュストレージ２２１、ファイル送信部２２２およびキャッシュ更新部２２３を有する。キャッシュストレージ２２１は、例えば、サーバ装置２２０が有するＲＡＭまたはＨＤＤの記憶領域を用いて実装される。ファイル送信部２２２およびキャッシュ更新部２２３は、例えば、サーバ装置２２０が実行するプログラムを用いて実装される。キャッシュサーバであるサーバ装置２３０，２４０も、サーバ装置２２０と同様の構成によって実現できる。
【００７２】
キャッシュストレージ２２１は、Ｗｅｂサイトに用いられるＨＴＭＬファイルなどのファイルを記憶する。キャッシュストレージ２２１が記憶するファイルは、サーバ装置２１０からコピーしてキャッシュとして保存したファイルである。
【００７３】
ファイル送信部２２２は、負荷分散装置１００からＨＴＴＰリクエストを受信する。ファイル送信部２２２は、受信したＨＴＴＰリクエストに含まれるファイル名が示すファイルをキャッシュストレージ２２１から検索する。該当するファイルが存在しない場合、ファイル送信部２２２は、キャッシュ更新部２２３にファイル取得を要求する。また、該当するファイルが存在する場合であっても、ファイルの取得から所定の有効期間が経過している場合、ファイル送信部２２２は、キャッシュ更新部２２３にファイル取得を要求する。
【００７４】
また、ファイル送信部２２２は、値を「no-cache」に指定したCache-ControlヘッダがＨＴＴＰリクエストに含まれるか判断する。該当するCache-ControlヘッダがＨＴＴＰリクエストに含まれている場合、ファイル送信部２２２は、キャッシュ更新部２２３にファイル取得を要求する。ファイル送信部２２２は、該当するファイルをキャッシュストレージ２２１から読み出し、読み出したファイルを含むＨＴＴＰレスポンスを返信する。
【００７５】
キャッシュ更新部２２３は、ファイル送信部２２２からファイル取得の要求を受け付けると、サーバ装置２１０にＨＴＴＰリクエストを送信する。キャッシュ更新部２２３は、サーバ装置２１０からＨＴＴＰレスポンスを受信し、受信したＨＴＴＰレスポンスに含まれるファイルをキャッシュとしてキャッシュストレージ２２１に格納する。
【００７６】
図７は、ファイル管理テーブルの例を示す図である。
ファイル管理テーブル１２４は、負荷分散装置１００のファイル管理データベース１２１に記憶される。ファイル管理テーブル１２４は、サーバ名、ファイル名、最終更新時刻および要更新フラグの項目を含む。サーバ名は、サーバ装置２１０，２２０，２３０，２４０を識別する名称である。ファイル名は、ファイルを識別する名称である。ファイル名は、ディレクトリ名を含むファイルパスであってもよい。サーバ装置２１０が記憶するオリジナルのファイルと、サーバ装置２２０，２３０，２４０が記憶する当該ファイルに対応するキャッシュには、同じファイル名が付与されている。
【００７７】
最終更新時刻は、ファイルが最後に更新された時刻であり、ＨＴＴＰレスポンスに含まれるLast-Modifiedタグによって特定できる。サーバ装置２２０，２３０，２４０がサーバ装置２１０からファイルをコピーし、サーバ装置２１０のファイルが更新されていない場合、サーバ装置２１０，２２０，２３０，２４０の当該ファイルの最終更新時刻は同一になる。サーバ装置２１０のファイルが更新され、サーバ装置２２０，２３０，２４０がまだファイルを同期していない場合、サーバ装置２１０の当該ファイルの最終更新時刻はサーバ装置２２０，２３０，２４０よりも新しくなる。サーバ装置２２０，２３０，２４０の何れかがファイルを同期した場合、サーバ装置２２０，２３０，２４０のうち同期したサーバ装置の最終更新時刻がサーバ装置２１０の最終更新時刻と同じになり、まだ同期していないサーバ装置の最終更新時刻は古いままとなる。
【００７８】
要更新フラグは、特定のサーバ装置が有する特定のファイルの更新要否を示す。要更新フラグが「ＹＥＳ」であることは、キャッシュの更新を要することを示す。要更新フラグが「ＮＯ」であることは、キャッシュの更新が不要であることを示す。要更新フラグは負荷分散装置１００により書き換えられる。要更新フラグの初期値は「ＮＯ」である。
【００７９】
図８は、ファイル管理テーブルの更新例を示す図である。
ここでは、サーバ装置２１０がファイル/xxx/aaa.htmlを記憶しており、そのファイルの最終更新時刻が2018/07/13 12:00であるとする。また、サーバ装置２２０，２３０，２４０がそのファイルのコピーをキャッシュとして記憶しているとする。
【００８０】
負荷分散装置１００は、ファイル名が/xxx/aaa.htmlのファイルを含みLast-Modifiedヘッダが2018/07/20 09:00であるＨＴＴＰレスポンスをサーバ装置２１０から受信したとする。Last-Modifiedヘッダが示す時刻2018/07/20 09:00は、ファイル管理テーブル１２４に登録された最終更新時刻2018/07/13 12:00よりも新しい。そこで、負荷分散装置１００は、ファイル管理テーブル１２４において、サーバ装置２１０のサーバ名とファイル名/xxx/aaa.htmlとに対応する最終更新時刻を2018/07/20 09:00に書き換える。
【００８１】
また、負荷分散装置１００は、ファイル名が/xxx/aaa.htmlであり最終更新時刻が2018/07/20 09:00よりも古いレコードをファイル管理テーブル１２４から検索する。ここでは、サーバ装置２２０，２３０，２４０に対応する３つのレコードが検索される。すると、負荷分散装置１００は、３つのレコードの要更新フラグを「ＹＥＳ」に書き換える。
【００８２】
次に、負荷分散装置１００は、ファイル名/xxx/aaa.htmlを含むＨＴＴＰリクエストをサーバ装置２３０に転送することを決定したとする。すると、負荷分散装置１００は、ファイル管理テーブル１２４を参照して、サーバ装置２３０のサーバ名とファイル名/xxx/aaa.htmlとに対応する要更新フラグを確認し、要更新フラグが「ＹＥＳ」であると判断する。そこで、負荷分散装置１００は、転送するＨＴＴＰリクエストに値が「no-cache」のCache-Controlヘッダを挿入する。これにより、サーバ装置２３０は、ファイル名が/xxx/aaa.htmlのファイルをサーバ装置２１０から再取得する。
【００８３】
次に、負荷分散装置１００は、ファイル名が/xxx/aaa.htmlのファイルを含みLast-Modifiedヘッダが2018/07/20 09:00であるＨＴＴＰレスポンスをサーバ装置２３０から受信する。Last-Modifiedヘッダが示す時刻2018/07/20 09:00は、ファイル管理テーブル１２４に登録された最終更新時刻2018/07/13 12:00よりも新しい。そこで、負荷分散装置１００は、ファイル管理テーブル１２４において、サーバ装置２３０のサーバ名とファイル名/xxx/aaa.htmlとに対応する最終更新時刻を2018/07/20 09:00に書き換え、それに対応する要更新フラグを「ＮＯ」に書き換える。
【００８４】
次に、負荷分散装置１００とサーバ装置２２０の処理手順を説明する。
図９は、負荷分散装置の手順例を示すフローチャートである。
（Ｓ３０）リクエスト振り分け部１２２は、ＨＴＴＰリクエストを受信する。
【００８５】
（Ｓ３１）リクエスト振り分け部１２２は、ステップＳ３０で受信したＨＴＴＰリクエストの転送先のサーバ装置を決定する。例えば、リクエスト振り分け部１２２は、ラウンドロビン方式によりサーバ装置２１０，２２０，２３０，２４０を順に選択している。
【００８６】
（Ｓ３２）リクエスト振り分け部１２２は、ステップＳ３０で受信したＨＴＴＰリクエストから、要求対象のファイルのファイル名を抽出する。
（Ｓ３３）リクエスト振り分け部１２２は、ステップＳ３１で決定したサーバ装置のサーバ名とステップＳ３２で抽出したファイル名との組を、ファイル管理データベース１２１に記憶されたファイル管理テーブル１２４から検索する。リクエスト振り分け部１２２は、該当する組がファイル管理テーブル１２４に登録されているか判断する。登録されている場合はステップＳ３４に進み、未登録の場合はステップＳ３６に進む。
【００８７】
（Ｓ３４）リクエスト振り分け部１２２は、ステップＳ３３の組に対応付けてファイル管理テーブル１２４に登録された要更新フラグを確認し、要更新フラグが「ＹＥＳ」であるか判断する。要更新フラグが「ＹＥＳ」である場合はステップＳ３５に進み、要更新フラグが「ＮＯ」である場合はステップＳ３６に進む。
【００８８】
（Ｓ３５）リクエスト振り分け部１２２は、ステップＳ３０で受信したＨＴＴＰリクエストに、値が「no-cache」であるCache-Controlヘッダを挿入する。
（Ｓ３６）リクエスト振り分け部１２２は、ステップＳ３１で決定したサーバ装置に対してＨＴＴＰリクエストを転送する。転送するＨＴＴＰリクエストは、ステップＳ３０で受信したものと同じか、または、それにCache-Controlヘッダを挿入したものである。なお、負荷分散装置１００は、転送したＨＴＴＰリクエストに対応するＨＴＴＰレスポンスの処理のため、ステップＳ３２で抽出したファイル名を保持しておく。
【００８９】
図１０は、負荷分散装置の手順例を示すフローチャート（続き）である。
（Ｓ３７）レスポンス監視部１２３は、ステップＳ３１で決定したサーバ装置から、ステップＳ３６のＨＴＴＰリクエストに対応するＨＴＴＰレスポンスを受信する。
【００９０】
（Ｓ３８）レスポンス監視部１２３は、ステップＳ３７で受信したＨＴＴＰレスポンスから、ファイルの最終更新時刻を示すLast-Modifiedヘッダを抽出する。
（Ｓ３９）レスポンス監視部１２３は、ＨＴＴＰレスポンスの送信元のサーバ装置のサーバ名とＨＴＴＰリクエストの転送時に抽出したファイル名との組を、ファイル管理データベース１２１に記憶されたファイル管理テーブル１２４から検索する。レスポンス監視部１２３は、該当する組がファイル管理テーブル１２４に登録されているか判断する。登録されている場合はステップＳ４１に進み、未登録の場合はステップＳ４０に進む。
【００９１】
（Ｓ４０）レスポンス監視部１２３は、ステップＳ３９のサーバ名とファイル名の組に対応付けて、ステップＳ３８で抽出したLast-Modifiedヘッダが示す最終更新時刻をファイル管理テーブル１２４に登録する。また、この組に対応する要更新フラグを「ＮＯ」に設定する。そして、ステップＳ４６に進む。
【００９２】
（Ｓ４１）レスポンス監視部１２３は、ステップＳ３９のサーバ名とファイル名の組に対応する最終更新時刻をファイル管理テーブル１２４から検索する。そして、レスポンス監視部１２３は、ステップＳ３８で抽出したLast-Modifiedヘッダの最終更新時刻とファイル管理テーブル１２４に登録された最終更新時刻とを比較し、前者が後者よりも新しいか判断する。前者の時刻の方が新しい場合はステップＳ４２に進み、それ以外の場合（前者の時刻と後者の時刻が同じ場合）はステップＳ４６に進む。
【００９３】
（Ｓ４２）レスポンス監視部１２３は、ファイル管理テーブル１２４において、ステップＳ３９のサーバ名とファイル名の組に対応する最終更新時刻を、ステップＳ３８で抽出したLast-Modifiedヘッダが示す最終更新時刻に書き換える。
【００９４】
（Ｓ４３）レスポンス監視部１２３は、ファイル管理テーブル１２４から、ＨＴＴＰリクエストの転送時に抽出したファイル名を含み、最終更新時刻がステップＳ３８のLast-Modifiedヘッダよりも古いレコードを検索する。ここでは、該当するレコードが１つもない場合もあれば、該当するレコードが２以上ある場合もある。
【００９５】
（Ｓ４４）レスポンス監視部１２３は、ステップＳ４３で検索されたレコードに含まれる要更新フラグを「ＹＥＳ」に書き換える。
（Ｓ４５）レスポンス監視部１２３は、ステップＳ４２で最終更新時刻を書き換えたレコードの要更新フラグ、すなわち、ステップＳ３９のサーバ名とファイル名の組に対応する要更新フラグを「ＮＯ」に書き換える。
【００９６】
（Ｓ４６）レスポンス監視部１２３は、ステップＳ３７で受信したＨＴＴＰレスポンスを、ＨＴＴＰリクエストの送信元のクライアント装置に転送する。
図１１は、サーバ装置の手順例を示すフローチャートである。
【００９７】
（Ｓ５０）ファイル送信部２２２は、ＨＴＴＰリクエストを受信する。
（Ｓ５１）ファイル送信部２２２は、ステップＳ５０で受信したＨＴＴＰリクエストからファイル名を抽出する。ファイル送信部２２２は、抽出したファイル名をもつファイルのキャッシュがキャッシュストレージ２２１に存在するか判断する。キャッシュが存在する場合はステップＳ５２に進み、存在しない場合はステップＳ５３に進む。
【００９８】
（Ｓ５２）ファイル送信部２２２は、ステップＳ５０で受信したＨＴＴＰリクエストに値が「no-cache」のCache-Controlヘッダが含まれているか判断する。該当ヘッダが含まれている場合はステップＳ５３に進み、含まれていない場合はステップＳ５６に進む。
【００９９】
（Ｓ５３）キャッシュ更新部２２３は、ステップＳ５１で抽出されたファイル名を含むＨＴＴＰリクエストを生成し、マスタサーバであるサーバ装置２１０に送信する。
（Ｓ５４）キャッシュ更新部２２３は、ステップＳ５３で送信したＨＴＴＰリクエストに対応するＨＴＴＰレスポンスを、マスタサーバであるサーバ装置２１０から受信する。
【０１００】
（Ｓ５５）キャッシュ更新部２２３は、ステップＳ５４で受信したＨＴＴＰレスポンスからファイルを抽出し、キャッシュとしてキャッシュストレージ２２１に保存する。
（Ｓ５６）ファイル送信部２２２は、ステップＳ５１のファイル名をもつファイルをキャッシュストレージ２２１から読み出し、読み出したファイルを含むＨＴＴＰレスポンスを生成する。ファイル送信部２２２は、生成したＨＴＴＰレスポンスを、ステップＳ５０で受信したＨＴＴＰリクエストに対する応答として負荷分散装置１００に送信する。
【０１０１】
第２の実施の形態の情報処理システムによれば、自社システム４１のサーバ装置２１０，２２０の負荷が高くなった場合、クラウドシステム４２のサーバ装置２３０，２４０を利用して負荷分散が図られる。よって、Ｗｅｂサイトの応答時間を短縮できる。また、過剰な台数のサーバ装置を自社システム４１がもたなくてよく、自社システム４１の運用コストを低減できる。また、サーバ装置２１０からサーバ装置２３０，２４０に全てのファイルをコピーする前に、サーバ装置２３０，２４０の運用が開始され、運用開始後に要求に応じてファイルが順次コピーされる。よって、サーバ装置２１０，２２０の負荷の急激な増大に対して、迅速にサーバ装置の台数を増やすことができる。
【０１０２】
また、管理装置３２がサーバ装置２１０のファイルを更新すると、サーバ装置２１０から負荷分散装置１００へのＨＴＴＰレスポンスに含まれるLast-Modifiedヘッダに基づいてファイルの更新が検知される。すると、検知後に負荷分散装置１００からサーバ装置２２０，２３０，２４０に転送されるＨＴＴＰリクエストにCache-Controlヘッダが挿入され、サーバ装置２２０，２３０，２４０にファイルの同期が促される。
【０１０３】
これにより、管理装置３２がサーバ装置２１０，２２０，２３０，２４０に個々にログインしてファイルを書き換えなくてもよく、ファイル更新の負担が軽減される。また、ファイル更新のミスが低減される。また、サーバ装置２１０のファイルが更新されたときのみ、サーバ装置２２０，２３０，２４０にファイルの同期が促される。よって、ファイル更新の有無に関係なくサーバ装置２１０とサーバ装置２２０，２３０，２４０とが頻繁に通信することを抑制でき、サーバ装置２１０，２２０，２３０，２４０やネットワーク４４，４５の負荷を低減することができる。また、クラウドシステム４２の使用料金が通信量に依存する場合、支払う使用料金を低減できる。
【符号の説明】
【０１０４】
１０  負荷分散処理装置
１１  通信部
１２  処理部
１３  要求メッセージ
１４  更新指示情報
２１，２２  サーバ装置
２３  ストレージ装置
２４  データ
２５  キャッシュ
【図１】
2020095340.tif 000003
【図２】
2020095340.tif 000004
【図３】
2020095340.tif 000005
【図４】
2020095340.tif 000006
【図５】
2020095340.tif 000007
【図６】
2020095340.tif 000008
【図７】
2020095340.tif 000009
【図８】
2020095340.tif 000010
【図９】
2020095340.tif 000011
【図１０】
2020095340.tif 000012
【図１１】
2020095340.tif 000013