説明

キャッシュシステム及びキャッシュアクセス方法

【課題】多重化されたキャッシュ装置を用いて恒常的に継続したデータ提供を可能とする。
【解決手段】ロードバランサ2a,2bは、定期的にヘルスチェック信号を送信し、両系のキャッシュサーバ1の参照部及び転送部はそれぞれ、自機能部の自系内状態監視結果に応じて応答を返送する。ロードバランサ2aは、アプリケーション装置4からデータアクセス要求を受信すると、ヘルスチェック信号の応答状態に応じて判断した運用系のキャッシュサーバ1の参照部にデータアクセス要求を振り分ける。また、両系のキャッシュサーバ1の転送部は、定期的に系状態識別信号を送信し、ロードバランサ2bは同様に運用系と判断したキャッシュサーバ1の転送部へ送信する。自系が送信した系状態識別信号を受信したキャッシュサーバ1の転送部は、原本データ管理装置3とのデータ同期を行い、他系のキャッシュサーバ1との系間データ同期を行なう。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュシステム及びキャッシュアクセス方法に関する。
【背景技術】
【0002】
従来、ユーザの端末から、ネットワークを介して接続されるサーバにアクセスし、このサーバから提供されるウェブ画面を用いて、ネットワーク上のデータベース(以下、「データベース」を「DB」と記載)に対して、データ参照等のデータアクセスを行なうシステムが実現されている。
【0003】
図25(a)は、このような既存システムの一例であるサービスオーダシステムの構成を示す図である。同図に示すサービスオーダシステムにおいて、ウェブサービスオーダ装置は、ネットワークを介して接続される端末へ、サービスオーダ管理装置が管理対象としている顧客DB内のデータへのアクセスを行なうためのウェブ画面を提供する。ユーザが、このウェブ画面を利用してデータ参照要求を端末に入力すると、ウェブサービスオーダ装置は、端末に入力されたデータ参照要求を受信し、受信したデータ参照要求をコマンド等に形式変換してサービスオーダ管理装置に送信する。受信したコマンドに従ってサービスオーダ管理装置が顧客DBから読み出したデータは、ウェブサービスオーダシステムを介して端末へ通知される。
【0004】
図25(a)に示すようなサービスオーダシステムでは、サービスオーダ管理装置がメンテナンス等により停止している間、ユーザの端末は、顧客DB内のデータを取得することはできない。そこで、図25(b)に示すように、ウェブサービスオーダ装置と、サービスオーダ管理装置の間に、顧客DBと同期してデータを記憶するキャッシュシステムを設けることが考えられる。これにより、サービスオーダ管理装置が停止している間も、ウェブサービスオーダ装置は参照が要求されたデータをキャッシュシステムから読み出して端末に提供することができる。
【0005】
しかし、上記のように、キャッシュシステムを設けた場合であっても、キャッシュシステム自体が停止してしまった場合には、端末へデータを提供できなくなってしまう。そのため、キャッシュシステムのリダンダンシを確保することが必要である。
【0006】
リダンダンシを確保する場合、装置を多重化することが一般的である。図26に、キャッシュサーバを多重化してリダンダンシを確保した従来のシステム構成を示す。
図26(a)は、クラスタを利用し、待機系のキャッシュサーバをコールドスタンバイ(Cold.SBY)とした構成を示す。同図に示す構成のシステムでは、アクト(ACT)系とスタンバイ系のキャッシュサーバにおいてDBをSAN(Storage Area Network)により共有し、クラスタリングソフトウェアを利用して系切り替えを行なう。
図26(b)は、クラスタを利用し、待機系のキャッシュサーバをホットスタンバイ(Hot.SBY)とした構成を示す。同図に示す構成のシステムも同様に、アクト系とスタンバイ系のキャッシュサーバにおいてDBをSANにより共有し、クラスタリングソフトウェアを利用して系切り替えを行なう。
図26(c)は、各系のキャッシュサーバにDAS(Direct Attached Storage)のDBを配備し、待機系のキャッシュサーバをコールドスタンバイとした構成を示す。図26(c)においては、クォーラムサーバが各系の状態を保持し、系切り替えを行なう。
【0007】
また、データアクセスを無停止で提供することを目的とする技術が特許文献1、2に開示されている。特許文献1には、同じデータが割り当てられている複数のノードがロードバランサを介して外部と接続されており、ロードバランサは、ノードの状態を監視して最適なノードを選ぶことが記載されている。また、特許文献2には、主系、従系として動作する冗長構成のコンピュータそれぞれが、自身の状態をチェックした結果であるヘルシーチェック情報を相互に交換し、主系、従系の切り替えを行なうことが記載されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004−30204号公報
【特許文献2】特開2008−226153号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述したリダンダンシを確保するための既存の技術には、以下のような問題がある。
すなわち、図26(a)の構成において系切り替えを行なう場合、待機系はコールドスタンバイ起動となるため、系切り替えに数十分を要する場合があり、この間はデータを提供できない。また、SANのファームアップ中は、SANにアクセスするDBMS(DataBase Management System)を数十分間停止させる必要があり、やはり、この間は、データの提供できない。加えて、DBの共有ディスクがSPOF(Single Point of Failure)となってしまい、共有ディスク故障時には、全体が障害に陥ってしまう。
【0010】
また、図26(b)の構成において系切り替えを行なう場合、図26(a)と同様に、SANのファームアップ中は、SANにアクセスするDBMSを数十分間停止する必要があるとともに、共有ディスクがSPOFとなる。また、冗長構成を拡張する場合は各系の関係を解除する必要がある。つまり、両系のDBMSや、クラスタリングソフトウェアを停止し、設定変更の作業を行うため、その間はデータアクセスサービスが提供できない。
このように、上記の図26(a)、(b)のように、系間でDBを共有する形態では、恒常的に継続してデータを提供することは困難である。
【0011】
また、図26(c)の構成においては系切り替えを行なう場合、待機系はコールドスタンバイ起動となるため、系切り替えに数十分を要する場合があり、この間はデータアクセスサービスが提供できないことに加え、各系の状態を保持し、系切り替えを行なうクォーラムサーバがSPOFとなってしまう。
【0012】
特許文献1の技術は、ロードバランサが、外部から受信したリクエストを二重化されたノードコンピュータの両方に送信し、リクエストに対する仮実行結果を早く返送したノードコンピュータに対して本実行を行なうよう指示し、他方のノードコンピュータには無効を指示するものであり、ノードコンピュータにリクエストを受信する都度、仮実行を行わせその結果を破棄するという処理を実装しなければならない。また、特許文献2の技術は、冗長構成のコンピュータにおいて主系、従系の切り替えを行なうものであり、冗長構成のコンピュータが常に他方のコンピュータの状態を意識しなければならない。
【0013】
本発明は、このような事情を考慮してなされたもので、その目的は、多重化されたキャッシュ装置を用い、キャッシュ装置に系切り替えのための負荷をかけることなく、恒常的に継続してデータ提供を可能とするキャッシュシステム及びキャッシュアクセス方法を提供することにある。
【課題を解決するための手段】
【0014】
本発明は、上記の課題を解決すべくなされたもので、原本データをキャッシュする複数のキャッシュ装置と、受信信号を複数の前記キャッシュ装置のいずれに振り分けるかを管理するアクセス振分装置とを備えるキャッシュシステムであって、複数の前記キャッシュ装置それぞれは、前記アクセス振分装置から振り分けられたデータアクセス要求を受信し、受信したデータアクセス要求に応じて自キャッシュ装置がキャッシュしている原本データへのアクセス処理を行う参照部と、原本データ管理装置から原本データを読み出して自キャッシュ装置がキャッシュしている前記原本データを更新する転送部とを備え、前記アクセス振分装置は、アクト状態の複数の前記キャッシュ装置の前記参照部及び前記転送部それぞれの運用状態を取得するサービスチェック部と、前記サービスチェック部が取得した複数の前記キャッシュ装置の前記参照部及び前記転送部の運用状態に基づいて、複数の前記キャッシュ装置の中から受信信号の振分先となる前記キャッシュ装置を判定する運用系判断処理部とを備える、ことを特徴とするキャッシュシステムである。
上記発明によれば、それぞれが1台のサーバ(筐体)によって実現される複数のキャッシュ装置を、上位アプリケーションからのデータアクセス要求に応じて自身がキャッシュしている原本データへのアクセス処理を行う参照部と、原本データ管理装置が保持している原本データにより自身がキャッシュしている原本データを更新する転送部とに分離した構成とし、振分装置は、各キャッシュ装置内の参照部及び転送部が両方とも正常であるか、いずれかあるいは両方に障害が発生しているかなどの状況に従って信号の振分先、すなわち、運用系のキャッシュ装置を判断する。
これによって、振分装置は、上位アプリケーションからのデータアクセス要求を受信した場合、まずは参照部が正常に動作しているキャッシュ装置を選択し、選択したキャッシュ装置が1台であればその選択したキャッシュ装置を振り分け先とし、選択したキャッシュ装置が複数であれば、選択した中でも同一筐体内の転送部が正常であるキャッシュ装置の中から振り分け先を選択したり、選択したキャッシュ装置の転送部がいずれも障害である場合には、選択した中から任意に振り分け先を選択したりすることができる。従って、複数のキャッシュシステム装置の中から、恒常的に継続して原本データへのアクセスを提供すること可能となるとともに、できるだけ最新の原本データを提供することが可能となる。
また、参照部と転送部を分離しているため、将来的に参照部と転送部をそれぞれ別の筐体に実装した構成に移行することが容易となる。参照部のトラフィックは、上位サービスアプリケーションを使用するユーザの増加や、上位サービスアプリケーションの種類の増加に伴って増加する一方、転送部のトラフィックは、上位サービスアプリケーションから参照されるデータ項目が追加されたときに増加することを勘案すると、将来的には、参照部を実行するサーバをn台構成の全運用方式へ、転送部を実行するサーバを1+1台構成の運用待機方式へと移行することが望ましく、その縮退した構成として本発明のキャッシュシステムを用いることが可能となる。
なお、n台構成とは、同一のシステム、機能部を複数台用意し、全て運用系とする冗長化構成であり、1+1台構成とは、同一のシステム、機能部を2台用意し、一方は運用系、もう一方は待機系とする冗長化構成であり、運用待機方式とは、ある機能部を複数台のサーバに分散配置した際、機能部を運用系と待機系に分けて稼動する方式である。
【0015】
また本発明は、上述するキャッシュシステムであって、前記運用系判断処理部は、前記参照部の運用状態に基づいて複数の前記参照部が正常であると判断した場合、正常な前記参照部を備える複数の前記キャッシュ装置の中から、前記転送部の運用状態に基づいて正常であると判断される前記転送部を備える前記キャッシュ装置を振分先と判定する、ことを特徴とする。
上記発明によれば、振分装置は、参照部が正常に動作しているということだけではなく、原本データの同期を行なう転送部が正常に動作しているかも判断して運用系のキャッシュ装置を選択する。
転送部が正常に動作していれば、そのキャッシュ装置にキャッシュされている原本データは正しく同期されているため、参照部が正常に動作しているキャッシュ装置の中から、転送部も正常に動作しているキャッシュ装置を振り分け先として選択することにより、データアクセスが可能な原本データの中から常に最新の原本データを上位アプリケーションに提供することができる。
【0016】
また本発明は、上述するキャッシュシステムであって、複数の前記キャッシュ装置それぞれの転送部は、前記振分装置に系状態識別信号を送信する系状態識別部と、前記振分装置から自身が送信した前記系状態識別信号を受信した場合に、原本データ管理装置から原本データを読み出して自キャッシュ装置がキャッシュしている前記原本データを更新する情報転送処理部と、他のキャッシュ装置がキャッシュしている原本データを前記情報転送処理部が読み出した前記原本データにより更新する系間転送処理部とをさらに備え、前記アクセス振分装置の前記運用系判断処理部は、振分先として判定した前記キャッシュ装置へ受信した前記系状態識別信号を送信する、ことを特徴とする。
上記発明によれば、各キャッシュ装置の転送部は系状態識別信号を送信し、送信された系状態識別信号は、振分装置が運用系と判断したキャッシュ装置へ振り分けられる。自身が送信した系状態識別信号を受信した転送部は自系が運用系であると判断し、原本データ管理装置が保持している原本データによって自系がキャッシュしている原本データを更新し、さらに他のキャッシュ装置がキャッシュしている原本データも更新する。
振分装置は、信号の種類や宛先ではなく、各キャッシュ装置内の参照部及び転送部の運用状態によって信号の振分先を判断するため、上位アプリケーションからのデータアクセス要求と同じ振分先に系状態識別信号も振り分けられる。そこで、自身の送信した系状態識別信号を受信した、すなわち、データアクセス要求を処理するキャッシュ装置の転送部がまず、原本データ管理装置が保持している原本データとの同期を行なうことで、常に最新の原本データを上位アプリケーションに提供することが可能となる。例えば、待機系のキャッシュ装置の転送部が原本データ管理装置と同期を行い、続いて、運用系のキャッシュ装置との系間同期を行なうような同期手順と比較すると、運用系のキャッシュ装置がキャッシュしている原本データが更新されるタイミングが早く、また、系間同期中の障害等によって、運用系のキャッシュ装置がキャッシュしている原本データの更新が行なえずに、古い原本データへのアクセスを提供してしまうようなこともない。また、原本データ管理装置との同期の後、他系のキャッシュ装置とも系間同期を行なうため、キャッシュ装置間での原本データの不整合も発生しない。
【0017】
また本発明は、上述するキャッシュシステムであって、前記情報転送処理部は、自身が送信した前記系状態識別信号を受信した場合に、前記原本データ管理装置から、自キャッシュ装置がキャッシュしている前記原本データよりも、前記原本データ管理装置における更新日時が新しい原本データを読み出し、自キャッシュ装置がキャッシュしている前記原本データを更新し、前記系間転送処理部は、自キャッシュ装置がキャッシュしている前記原本データのうち、前記他のキャッシュ装置がキャッシュしている前記原本データよりも前記原本データ管理装置における更新日時が新しい原本データにより、前記他のキャッシュ装置がキャッシュしている原本データを更新する、ことを特徴とする。
上記発明によれば、運用系のキャッシュ装置の転送部は、原本データ管理装置における更新日時に基づいて、自身がキャッシュしている原本データの更新と、他のキャッシュ装置がキャッシュしている原本データの更新を行なう。
これにより、運用系のキャッシュ装置が切り替わり、新たにデータアクセス要求の振分先となったキッシュ装置において原本データ管理装置と同期を行なう際や、他系の原本データとの同期を行なう際にも更新もれが発生することがない。よって、一元性を確保しながら、最新の原本データを提供することが可能となる。
【0018】
また本発明は、上述するキャッシュシステムであって、前記転送部は、自キャッシュ装置がキャッシュしている前記原本データを記憶する転送データ記憶部をさらに備え、前記情報転送処理部は、前記原本データ管理装置から読み出した前記原本データを前記転送データ記憶部に書き込み、前記参照部は、自キャッシュ装置がキャッシュしている前記原本データを記憶する参照データ記憶部と、前記転送データ記憶部から読み出した前記原本データを前記参照データ記憶部に書き込む系内同期処理部と、受信した前記データアクセス要求に応じて前記参照データ記憶部に記憶している前記原本データへのアクセス処理を行う参照データアクセス部とを備える、ことを特徴とする。
上記発明によれば、参照部及び転送部それぞれにキャッシュした原本データを記憶する記憶部を備えておき、転送部は、自身の備える記憶部に原本データ管理装置から読み出した原本データを書き込んでキャッシュし、参照部は自身の備える記憶部にキャッシュしている原本データを、転送部の記憶部にキャッシュしている原本データによって更新する。
上記構成により、参照部と転送部を完全に分離することが可能となるため、将来的に、参照部を実行するサーバをn台構成の全運用方式へ、転送部を実行するサーバを1+1台構成の運用待機方式へと移行することが容易になる。
【0019】
また本発明は、原本データをキャッシュする複数のキャッシュ装置と、受信信号を複数の前記キャッシュ装置のいずれに振り分けるかを管理するアクセス振分装置とを備えるキャッシュシステムに用いられるキャッシュアクセス方法であって、複数の前記キャッシュ装置それぞれは、前記アクセス振分装置から振り分けられたデータアクセス要求を受信し、受信したデータアクセス要求に応じて自キャッシュ装置がキャッシュしている原本データへのアクセス処理を行う参照部と、原本データ管理装置から原本データを読み出して自キャッシュ装置がキャッシュしている前記原本データを更新する転送部とを備えており、前記アクセス振分装置において、サービスチェック部が、アクト状態の複数の前記キャッシュ装置の前記参照部及び前記転送部それぞれの運用状態を取得する状態取得過程と、運用系判断処理部が、前記状態取得過程において取得した複数の前記キャッシュ装置の前記参照部及び前記転送部の運用状態に基づいて、複数の前記キャッシュ装置の中から受信信号の振分先となる前記キャッシュ装置を判定する運用系判断処理過程と、を有することを特徴とするキャッシュアクセス方法である。
【発明の効果】
【0020】
本発明によれば、振分装置は、各キャッシュ装置内の参照部及び転送部が両方とも正常であるか、いずれかあるいは両方に障害が発生しているかなどの状況に従って信号の振分先、すなわち、運用系のキャッシュ装置を判断するため、恒常的に継続して原本データへのアクセスを提供することが可能となるとともに、できるだけ最新の原本データを提供することが可能となる。
また、本発明によれば、参照部が正常に動作しているキャッシュ装置の中から、転送部も正常に動作しているキャッシュ装置を振り分け先として選択するため、アクセス可能な原本データの中から常に最新の原本データを上位アプリケーションに提供することが可能となる。
また、本発明によれば、データアクセス要求を処理する参照系と同じキャッシュ装置の転送部がまず、原本データ管理装置が保持している原本データとの同期を行なうため、常に最新の原本データを上位アプリケーションに提供することが可能となり、原本データ管理装置との同期後、他系との同期を行なうため、キャッシュ装置間での原本データの不整合も発生しない。
また、本発明によれば、データアクセス要求の振分先となるキャッシュ装置は、原本データ管理装置における更新日時に基づいて、自身がキャッシュしている原本データの更新と、他のキャッシュ装置がキャッシュしている原本データとの同期を行なうため、一元性を確保した、最新の原本データを提供することが可能となる。
また、本発明によれば、参照部と転送部を分離しているため、将来的に参照部と転送部をそれぞれ別の筐体に実装した構成に移行することが容易となり、参照部及び転送部にそれぞれ記憶部を有することによって、さらに、この分離が容易となる。従って、参照部を実行するサーバをn台構成の全運用方式に、転送部を実行するサーバを1+1台構成の運用待機方式へと移行する場合の縮退構成として本発明のキャッシュシステムを用いることが可能となる。
【図面の簡単な説明】
【0021】
【図1】本発明の一実施形態によるキャッシュシステムの接続構成を示す図である。
【図2】同実施形態によるキャッシュシステムの動作概要を示す図である。
【図3】同実施形態による各装置の内部構成を示すブロック図である。
【図4】同実施形態によるキャッシュシステムの系状態確認シーケンスを示す図である。
【図5】同実施形態による系状態確認における各装置の機能部間の処理の流れを示す図である。
【図6】同実施形態による両系のキャッシュサーバ1の参照部11及び転送部15における自系内状態監視処理フローを示す図である。
【図7】同実施形態による両系のキャッシュサーバ1の参照部11及び転送部15における自系内状態監視結果返却処理フローを示す図である。
【図8】同実施形態によるロードバランサ2のヘルスチェック処理フローを示す図である。
【図9】同実施形態によるデータ参照要求受信時の振分処理シーケンスを示す図である。
【図10】同実施形態による系状態識別信号受信時の振分処理シーケンスを示す図である。
【図11】同実施形態によるロードバランサ2aにおける振分処理フローを示す図である。
【図12】同実施形態による振分け状態表を示す図である。
【図13】同実施形態によるロードバランサ2bにおける振分処理の処理フローを示す図である。
【図14】同実施形態への適用を検討した原本データ同期方法を示す図である。
【図15】同実施形態への適用を検討した系間同期方法を示す図である。
【図16】同実施形態によるキャッシュシステムのデータ同期シーケンスを示す図である。
【図17】同実施形態によるデータ同期処理に用いられる各装置のデータ例を示す図である。
【図18】同実施形態による原本データ同期処理におけるデータ更新の流れを示す図である。
【図19】同実施形態による系間データ同期処理におけるデータ更新の流れを示す図である。
【図20】同実施形態による両系のキャッシュサーバ1の転送部15における系状態識別処理フローを示す図である。
【図21】同実施形態による両系のキャッシュサーバ1の転送部15における原本データとの同期処理フローを示す図である。
【図22】同実施形態による運用系のキャッシュサーバ1の転送部15における系間データ同期処理フローを示す図である。
【図23】同実施形態による汎用インタフェースを用いた動作概要を示す図である。
【図24】同実施形態によるキャッシュサーバ1の汎用インタフェース処理フローを示す図である。
【図25】従来のデータアクセスシステムを示す図である。
【図26】二重化によりリダンダンシを確保した従来のシステム構成を示す図である。
【発明を実施するための形態】
【0022】
以下、図面を参照しながら本発明の実施形態を詳細に説明する。
【0023】
[1. 構成]
図1は、本発明の一実施形態によるキャッシュシステムの接続構成を示す図である。同図において、キャッシュシステムは、キャッシュサーバ1により多重化されたキャッシュインタフェース装置と、キャッシュサーバ1それぞれに接続されるロードバランサ2a、2bとからなる。ロードバランサ2aはさらに、原本データを使用して上位サービスアプリケーションを実行するアプリケーション装置4と接続され、ロードバランサ2bはさらに、上位サービスアプリケーションが参照する原本データを記憶する原本データ管理装置3と接続される。同図においては、アプリケーション装置4を1台のみ示しているが、複数台が接続されうる。
【0024】
キャッシュサーバ1は、原本データ管理装置3が記憶する原本データのうち、上位サービスアプリケーションに必要な情報を内部にキャッシュする。キャッシュサーバ1は、上位サービスアプリケーションの実行に伴ってアプリケーション装置4から送信されたデータ参照要求に対して、原本データ管理装置3から読み出してキャッシュした原本データを検索し、その結果を返却する。キャッシュサーバ1は多重化構成の形態をとっているため、上位サービスアプリケーションに対して、サービスの恒常的継続が可能である。
【0025】
以下、キャッシュサーバ1のうち一方を0系、他方を1系とし、0系のキャッシュサーバ1をキャッシュサーバ1−0、1系のキャッシュサーバ1をキャッシュサーバ1−1と記載し、0系と1系をあわせて「両系」と記載する。また、ロードバランサ2a、2bを総称してロードバランサ2と記載する。なお、ロードバランサ2は二重化されており、障害等が発生した場合でも短い時間での系切り替えが可能である。
【0026】
図2は、図1に示すキャッシュシステムの動作概要を示す図である。
本実施形態において、両系のキャッシュサーバ1は、アクト系、スタンバイ系という系状態を持たず、キャッシュサーバ1−0、1−1ともアクト系として動作しており、ネットワーク装置としてのロードバランサ2が、受信した信号をキャッシュサーバ1−0、1−1のいずれに振り分けるかを判断する。ここでは、ロードバランサ2が信号を振り分ける側のキャッシュサーバ1を運用系、運用系ではない側のキャッシュサーバ1を待機系と記載する。
【0027】
各キャッシュサーバ1は、参照部11及び転送部15を備えた1台のサーバである。すなわち、同じ筐体において参照部11及び転送部15が動作する。参照部11は、該参照部11が備えるデータベース(以下、「DB」と記載)にキャッシュされている原本データを用い、上位サービスアプリケーションの実行によりアプリケーション装置4から送信されたデータ参照要求に対応して応答する。転送部15は、ロードバランサ2から自系が運用系と判断されているかを識別し、運用系であると判断されている場合は、該転送部15が備えるDBにキャッシュされている原本データと、原本データ管理装置3に記憶されている原本データとのデータ同期を行い、さらに、他系の転送部15のDBにキャッシュされている原本データとの同期を行なう。参照部11は、定期的に転送部15のDBから同期が行われた原本データを読み出し、該参照部11が備えるDBを更新することにより、転送部15のDBとデータ同期を行なっている。
【0028】
ロードバランサ2は、定期的にキャッシュサーバ1にヘルスチェック信号を送信して各系の参照部11及び転送部15の状態を監視するヘルスチェックを行っており、その監視結果に基づいて運用系と待機系を決定する。
ロードバランサ2aは、アプリケーション装置4側の仮想IPアドレスAを持つとともに、キャッシュサーバ1−0の物理IPアドレスC0、キャッシュサーバ1−1の物理IPアドレスC1を記憶しており、仮想IPアドレスAを宛先とした信号を受信すると、運用側のキャッシュサーバ1の物理IPアドレスC0またはC1を宛先として受信した信号を送出する。このとき、物理IPアドレスには、参照部11に対応したポート番号が付加される。キャッシュサーバ1−0、1−1の参照部11それぞれのポート番号をPS0、PS1とする。
同様に、ロードバランサ2bは、原本データ管理装置3側の仮想IPアドレスBを持つとともに、キャッシュサーバ1−0の物理IPアドレスC0、キャッシュサーバ1−1の物理IPアドレスC1を記憶しており、仮想IPアドレスBを宛先とした信号を受信すると、運用側のキャッシュサーバ1の物理IPアドレスC0またはC1を宛先として受信した信号を送出する。このとき、物理IPアドレスには、転送部15に対応したポート番号が付加される。キャッシュサーバ1−0、1−1の転送部15それぞれのポート番号をPT0、PT1とする。
【0029】
なお、同じキャッシュサーバ1内において参照部11、転送部15が異なる物理IPアドレスを用いるようにすることもできる。この場合、ロードバランサ2aは、仮想IPアドレスAを宛先とした信号を受信すると、運用側のキャッシュサーバ1の参照部11に対応した物理IPアドレスを宛先として受信した信号を送出する。同様に、ロードバランサ2bは、仮想IPアドレスBを宛先とした信号を受信すると、運用側のキャッシュサーバ1の転送部15に対応した物理IPアドレスを宛先として受信した信号を送出する。
【0030】
上記により、ロードバランサ2aは、運用系と判断しているキャッシュサーバ1の参照部11にアプリケーション装置4から受信したデータ参照要求を送信する。そのため、キャッシュサーバ1は、系を意識せずとも、データ参照要求を受信したときに、自身の参照部11が備えるDAS(Direct Attached Storage)のDBに記憶されているデータを読み出して応答すればよい。ロードバランサ2aに待機系と判断されているキャッシュサーバ1も、運用系と判断されているキャッシュサーバ1と同じ状態で動作しているため、ロードバランサ2aによって運用系の切り替え判断がなされた場合にもそれを意識する必要はなく、受信したデータ参照要求に応答すればよい。このように、独立した2つのキャッシュサーバ1が外部からはあたかも1つの装置のように見え、サービスルートの決定はロードバランサ2に制御をゆだねている。
【0031】
ただし、本実施の形態のキャッシュシステムにおいて、原本データ管理装置3が記憶する原本データとの同期や、待機系のキャッシュサーバ1とのデータ同期は、運用系のキャッシュサーバ1の転送部15から起動する。そのため、キャッシュサーバ1の転送部15は、ロードバランサ2bに自系の系状態を問い合わせる系状態識別処理を行なう。系状態識別処理では、ロードバランサ2が仮想IPアドレスを宛先とした信号を、運用系のキャッシュサーバ1に振り分けることを利用する。つまり、キャッシュサーバ1の転送部15は、仮想IPアドレスB宛に系状態識別信号を送信し、ロードバランサ2bからその信号を受信した場合には運用系であると判断する。
【0032】
ロードバランサ2は、ヘルスチェックによる各系の参照部11及び転送部15の状態の監視結果に基づいて運用系と待機系を決定しているが、両系のキャッシュサーバ1の参照部11とも運用可能(障害が発生していない)である場合、同じ筐体に備えられている転送部15が運用可能であるキャッシュサーバ1を運用系と判断する。
【0033】
例えば、ある機能部を複数台のサーバに分散配置した際に、ロードバランスにより全サーバ上の該当機能部を全て運用系として稼動する全運用方式のように、転送部15の運用状態に関わらず、参照部11が運用可能であれば、上位サービスアプリケーションからキャッシュサーバ1にアクセス可能としたとする。この場合、転送部15の運用状態が待機系のキャッシュサーバ1では、原本データ管理装置3から取得される原本データとの同期が遅れてしまったり(系間同期の遅れ)、キャッシュされている原本データが更新されなかったりする(系間同期故障)可能性がある。このときに、転送部15が待機系であるキャッシュサーバ1に、データ参照要求が振り分けられてしまうと、古いデータを返却するという不具合が生じてしまう。
そこで、ロードバランサ2aは、両系のキャッシュサーバ1の参照部11が運用可能かどうかを確認し、同時に、両系のキャッシュサーバ1の転送部15が運用可能かどうかを確認する。そして、両系のキャッシュサーバ1の参照部11とも運用可能である場合、同じ筐体に備えられている転送部15が正常に動作している参照部11にアプリケーション装置4から受信したデータ参照要求を振り分ける。
【0034】
ロードバランサ2aが上記のように振り分け先を決定することにより、例えば、キャッシュサーバ1−0の参照部11及び転送部15が運用状態であり、キャッシュサーバ1−1の参照部11が運用状態、転送部15が待機状態である場合、アプリケーション装置4からのデータ参照要求はキャッシュサーバ1−0の参照部11に振り分けられる。このとき、キャッシュサーバ1−0の参照部11においてアプリケーション障害、DB障害、ロードバランサとの間のネットワーク障害等の障害が発生した場合、系切替が行なわれる。従来方式を適用した場合、キャッシュサーバ1は、参照部11の運用状態に関わらず、転送部15が運用状態であればデータの同期を行なうことが考えられる。しかし、データ参照要求の振分先がキャッシュサーバ1−1の参照部11となっても、キャッシュサーバ1−0の転送部15については運用状態のまま系切替が行なわれないと、正常時と比較して、原本DBから取得された原本データとの同期が遅れてしまったり(系間同期の遅れ)、キャッシュされている原本データが更新されなかったりする(系間同期故障)可能性があり、サービス提供レベルが下がってしまう。
【0035】
そこで、本実施の形態では、キャッシュサーバ1の転送部15は、原本データ管理装置3との間の原本データ同期処理の開始時に、データ参照要求の振分先が同一筐体内の参照部11であるかを確認する。そのため、キャッシュサーバ1の転送部15は、系状態識別信号を送信し、ロードバランサ2bは、ロードバランサ2aと同様に振り分け先を決定する。自身が送信した系状態識別信号をロードバランサ2bから受信した、すなわち、データ参照要求の振分先のキャッシュサーバ1と同一の筐体内の転送部15は、原本データ管理装置3から原本データを取得し、同期を行う。このようにして、運用状態の転送部15は、同一筐体内の参照部11が振り分け先の場合は原本データ同期処理を実施し、別筐体内の参照部11が振り分け先の場合は、転送部15の系切替を実施する。
【0036】
図3は、キャッシュサーバ1、ロードバランサ2及び原本データ管理装置3の内部構成を示すブロック図である。
参照部11は、ロードバランサ2との間でヘルスチェックを実行するとともに、上位サービスアプリケーションからのデータ参照要求に応答し、同一系内、つまり、同一のキャッシュサーバ1が備える転送部15との間でデータ同期を行なう。参照部11は、タイマ111、監視処理部112、監視結果通知処理部113、参照データ管理部114、情報参照処理部115、及び、系内同期処理部116を備える。
【0037】
監視処理部112は、タイマ111により定期的に起動され、自系の参照部11内の各プロセスの生起確認、参照データ管理部114が備えるDBの死活確認など、自系の参照部11についての系内状態監視を実施し、その結果を内部に備える監視結果記憶部121に保持する。監視結果通知処理部113は、ロードバランサ2から定期的にヘルスチェック信号を受信し、監視結果記憶部121に保持されている自参照部11の系内状態監視結果に応じて応答を送信する。
【0038】
参照データ管理部114は、参照データアクセス部122と、参照データ記憶部123を備える。参照データアクセス部122は、既存のDBMS(DataBase Management System)ソフトウェアにより実現することができ、DBとしての参照データ記憶部123に記憶されているキャッシュデータの読み出しや書き込みを行なう。
系内同期処理部116は、参照データ記憶部123に記憶されている原本データと、転送部15のDBに記憶されている原本データとのデータ同期を行なう。
【0039】
情報参照処理部115は、アプリケーション装置4が送信したデータ参照要求を受信して参照データ管理部114に出力し、参照データ管理部114がデータ参照要求に基づいて読み出したデータを返送する。
【0040】
転送部15は、ロードバランサ2との間でヘルスチェックを実行するとともに、自系が運用系かどうかを確認し、運用系であれば原本データ管理装置3との間でデータ同期を実施する。さらに、転送部15は、同一系内、つまり、同一のキャッシュサーバ1内の転送部15との間でデータ同期を行なう。転送部15は、タイマ151、監視処理部152、監視結果通知処理部153、転送データ管理部154、系状態識別部155、同期情報記憶部156、情報転送処理部157、系間転送処理部158、及び、系内同期処理部159を備える。
【0041】
監視処理部152は、タイマ151により定期的に起動され、自系の転送部15内の各プロセスの生起確認、転送データ管理部154が備えるDBの死活確認など、自系の転送部15についての系内状態監視を実施し、その結果を内部に備える監視結果記憶部161に保持する。監視結果通知処理部153は、ロードバランサ2から定期的にヘルスチェック信号を受信し、監視結果記憶部161に保持されている自転送部15内の系内状態監視結果に応じて応答を送信する。
【0042】
転送データ管理部154は、転送データアクセス部162と、転送データ記憶部163を備える。転送データアクセス部162は、既存のDBMSソフトウェアにより実現することができ、DBとしての転送データ記憶部163に記憶されているキャッシュデータの読み出しや書き込みを行なう。
系内同期処理部159は、転送データ記憶部163に記憶されているデータと、参照部11が保持するデータとの原本データ同期を行なう。
【0043】
同期情報記憶部156は、原本データ管理装置3から読み出した原本のデータのうち、転送データ記憶部163には書き込んだが、まだ他のキャッシュサーバ1との同期更新を行なっていないデータと、そのデータが原本データ管理装置3において更新された日時の情報とを対応づけた更新情報テーブル(以下、テーブルを「TBL」と記載)を記憶する。さらに、同期情報記憶部156は、転送データ記憶部163への書き込みが終了した原本データの原本データ管理装置3における更新日時のうち、最新の更新日時であるラストルックを示す最終更新情報TBLを記憶する。
【0044】
系状態識別部155は、ロードバランサ2が自系を運用系として認識しているか、待機系と判断しているかを問い合わせる。情報転送処理部157は、自系が運用系と認識されている場合、同期情報記憶部156内の最終更新情報TBLに設定されているラストルック以降が更新日時である原本データを原本データ管理装置3から読み出し、読み出した原本データを同期情報記憶部156内の更新情報TBLに書き込むとともに、読み出した原本データを書き込んで転送データ記憶部163を更新するよう転送データ管理部154に指示する。系間転送処理部158は、同期情報記憶部156内の更新情報TBLに記憶されている原本データのうち、他系のキャッシュサーバ1の最終更新情報TBLに設定されているラストルック以降が更新日時である原本のデータを他系のキャッシュサーバ1の転送データ記憶部163に書き込むとともに、書き込みが成功した場合、書き込みが成功した原本データの原本データ管理装置3における更新日時のうち最新の更新日時をラストルックとして他系のキャッシュサーバ1の最終更新情報TBLに書き込む。
【0045】
以下、キャッシュサーバ1−0が備えるキャッシュサーバ1の各部には符号に「−0」を付加して記載し、キャッシュサーバ1−1が備えるキャッシュサーバ1の各部には符号に「−1」を付加して記載する。また、各部が0系のキャッシュサーバ1−0に備えられている旨を単に「0系の」、1系のキャッシュサーバ1−1に備えられている旨を単に「1系の」とも記載する。例えば、キャッシュサーバ1−0の備える監視処理部112は、「監視処理部112−0」、または、「0系の監視処理部112−0」と記載し、キャッシュサーバ1−1の備える監視処理部112は、「監視処理部112−1」、または、「1系の監視処理部112−1」と記載する。
【0046】
同図において、ロードバランサ2は、タイマ21、サービスチェック部22、及び、運用系判断処理部23を含んで構成される。
サービスチェック部22は、タイマ21により定期的に起動され、両系のキャッシュサーバ1の物理IPアドレス及び参照部11のポート番号、両系のキャッシュサーバ1の物理IPアドレス及び転送部15のポート番号を宛先に用いてヘルスチェック信号を送信し、両系のキャッシュサーバ1の参照部11及び転送部15から応答が返送されたか否かの結果を内部に備える記憶部221に書き込む。応答が返送されたか否かによって、正常か異常かの状態が識別できる。
【0047】
運用系判断処理部23は、自ロードバランサ2の仮想IPアドレスを宛先とした信号を受信した場合に、記憶部221に記憶されている両系のキャッシュサーバ1の参照部11及び転送部15のヘルスチェックの応答受信状態、つまり、正常か異常かの状態に基づいて運用系のキャッシュサーバ1を判断する。運用系判断処理部23は、運用系と判断したキャッシュサーバ1の物理IPアドレスを宛先として受信信号を送信することにより、運用系のキャッシュサーバ1の参照部11または転送部15へ振り分ける。
【0048】
以下、ロードバランサ2aが備えるロードバランサ2の各部には符号に「a」を付加して記載し、ロードバランサ2bが備えるロードバランサ2の各部には符号に「b」を付加して記載する。例えば、ロードバランサ2aが備えるサービスチェック部22はサービスチェック部22a、ロードバランサ2bが備えるサービスチェック部22はサービスチェック部22bと記載する。
なお、ロードバランサ2aとロードバランサ2bは異なるネットワーク装置によって実現してもよく、同一のネットワーク装置によって実現してもよい。
【0049】
同図において、原本データ管理装置3は、データ管理部31、更新履歴記憶部32、及び、原本データ記憶部33を含んで構成される。データ管理部31は、原本データ記憶部33に記憶されている原本データの読み書きを行ない、原本データの更新を行なったときには、更新した原本データと、その原本データの更新日時の情報とを対応付けた更新履歴を更新履歴記憶部32に書き込む。
【0050】
[2. 系状態確認処理]
本実施形態のキャッシュシステムにおける系状態確認処理の動作について説明する。
【0051】
[2.1 系状態確認シーケンス]
図4は、キャッシュシステムの系状態確認シーケンスを示す図である。同図において、キャッシュサーバ1−0、1−1の参照部11及び転送部15は、定期的に自機能部の自系内状態監視処理を行っている(ステップS105−1〜S105−4)。なお、参照部11−0、11−1、転送部15−0、15−1の間でタイミングを同期させる必要はない。
【0052】
一方、ロードバランサ2は、定期的にヘルスチェックを起動する。つまり、ロードバランサ2は、キャッシュサーバ1−0の物理IPアドレスC0及び参照部11−0のポート番号PS0、キャッシュサーバ1−0の物理IPアドレスC0及び転送部15−0のポート番号PT0、キャッシュサーバ1−1の物理IPアドレスC1及び参照部11−1のポート番号PS1、キャッシュサーバ1−1の物理IPアドレスC1及び転送部15−1のポート番号PT1を宛先としてヘルスチェック信号を送信する(ステップS110、S115−1〜S115−4)。
【0053】
0系の参照部11−0は、系内状態監視結果返却処理を実行し(ステップS120−1)、ステップS105−1により確認した自系の参照部11−0についての系内状態監視結果に応じてロードバランサ2へ応答を返送する(ステップS125−1)。0系の転送部15−0は、系内状態監視結果返却処理を実行し(ステップS120−2)、ステップS105−2により確認した自系の転送部15−0についての系内状態監視結果に応じてロードバランサ2へ応答を返送する(ステップS125−2)。同様に、1系の参照部11−1は、系内状態監視結果返却処理を実行し(ステップS120−3)、ステップS105−3により確認した自系の参照部11−1についての系内状態監視結果に応じてロードバランサ2へ応答を返送する(ステップS125−3)。また、1系の転送部15−1は、系内状態監視結果返却処理を実行し(ステップS120−4)、ステップS105−4により確認した自系の転送部15−1についての系内状態監視結果に応じてロードバランサ2へ応答を返送する(ステップS125−4)。
ロードバランサ2は、両系のキャッシュサーバ1の参照部11及び転送部15それぞれからのヘルスチェック信号への応答状態を確認し、その確認結果を保持する(ステップS130)。
【0054】
その後も、キャッシュサーバ1−0、1−1の参照部11、転送部15は、ステップS105−1〜S105−4と同様に各機能部の自系内状態監視処理を定期的に起動する(ステップS135−1〜S135−4、S140−1〜S140−4)。また、ロードバランサ2は、ステップS110、S115−1〜S115−4の処理と同様に、キャッシュサーバ1−0、1−1の参照部11及び転送部15にヘルスチェック信号を定期的に送信する(ステップS145、S150−1〜S150−4)。これにより、ステップS120−1〜S120−4、S125−1〜S125−4、S130と同様の処理が行なわれる(ステップS155−1〜S155−4、S160−1〜S160−4、S165)。
【0055】
上述したロードバランサ2の処理は、ロードバランサ2a、2bそれぞれについて行なわれる。
【0056】
[2.2 系状態確認処理における各装置の機能部間の処理の流れ]
図5は、系状態確認処理における各装置の機能部間の処理の流れを示す図である。
両系のキャッシュサーバ1の参照部11において、監視処理部112は、各プロセスの生起を確認してその結果を監視結果記憶部121に保持し(ステップS305−1)、続いて、ダミーのSQLを発行して参照データ管理部114の動作確認を行い、確認結果を監視結果記憶部121に保持する(ステップS310−1)。同様に、両系のキャッシュサーバ1の転送部15において、監視処理部152は、各プロセスの生起を確認してその結果を監視結果記憶部161に保持し(ステップS305−2)、続いて、ダミーのSQLを発行して転送データ管理部154の動作確認を行い、確認結果を監視結果記憶部161に保持する(ステップS310−2)。
【0057】
ロードバランサ2のサービスチェック部22は、両系のキャッシュサーバ1の参照部11及び転送部15それぞれにヘルスチェック信号を送信する(ステップS315−1、S315−2)。両系のキャッシュサーバ1の監視結果通知処理部113は、ヘルスチェック信号を受信すると、監視処理部112から監視結果記憶部121に保持されている系状態の監視結果を取得し(ステップS320−1)、取得した監視結果が「正常」である場合は応答を返送する(ステップS325−1)。同様に、両系のキャッシュサーバ1の監視結果通知処理部153は、ヘルスチェック信号を受信すると、監視処理部152から監視結果記憶部161に保持されている系状態の監視結果を取得し(ステップS320−2)、取得した監視結果が「正常」である場合は応答を返送する(ステップS325−2)。ロードバランサ2のサービスチェック部22は、両系のキャッシュサーバ1の参照部11及び転送部15からの応答の有無を記憶部221に保持する。
【0058】
[2.3 キャッシュサーバ1における自系内状態監視処理]
図6は、図4のステップS105−1〜S105−4、S135−1〜S135−4、S140−1〜S140−4において、両系のキャッシュサーバ1の参照部11及び転送部15が実行する自系内状態監視処理フローを示す図である。
【0059】
まず、参照部11における自系内状態監視処理フローを説明する。同図において、キャッシュサーバ1のタイマ111は、所定の時間毎に監視処理部112を起動する(ステップS405)。これにより、監視処理部112は、自系内の参照部11の各プロセスの生起を確認する(ステップS410)。各プロセスが生起されている場合(ステップS415:正常)、正常であると判断し、続いて、DBの死活状態を確認するためダミーのSQLを参照データ管理部114に発行する(ステップS420)。参照データ管理部114の参照データアクセス部122は、ダミーのSQLに基づいて参照データ記憶部123に記憶されているデータに対するデータ操作を行なった結果を監視処理部112に返送する。参照データ管理部114から正常にダミーSQLの応答を受信した場合(ステップS425:正常)、監視処理部112は、監視結果「正常」を自系の備える監視結果記憶部121に書き込む(ステップS430)。
【0060】
一方、プロセスが生起されていない場合(ステップS415:異常)、あるいは、参照データ管理部114から正常にダミーSQLの応答を受信しなかった場合(ステップS425:異常)、監視処理部112は、監視結果「異常」を自系の備える監視結果記憶部121に書き込む(ステップS435)。
【0061】
転送部15における自系内状態監視処理フローの場合、参照部11を転送部15に、タイマ111をタイマ151に、監視処理部112を監視処理部152に、参照データ管理部114を転送データ管理部154に、監視結果記憶部121を監視結果記憶部161に、参照データアクセス部122を転送データアクセス部162に、参照データ記憶部123を転送データ記憶部163に読み替え、上記と同様の処理を行なう。
【0062】
[2.4 キャッシュサーバ1における自系内状態監視結果返却処理]
図7は、図4のステップS120−1〜120−4、155−1〜155−4において、両系のキャッシュサーバ1の参照部11及び転送部15が実行する自系内状態監視結果返却処理フローを示す図である。
【0063】
まず、参照部11における自系内状態監視結果返却処理フローを説明する。同図において、キャッシュサーバ1の監視結果通知処理部113は、ロードバランサ2からヘルスチェック信号を受信する(ステップS505)。監視結果通知処理部113は、監視処理部112から監視結果記憶部121に記憶されている系内状態の監視結果を取得する(ステップS510)。監視結果通知処理部113は、取得した系内状態監視結果が「正常」である場合は(ステップS515:正常)、ヘルスチェック信号送信元のロードバランサ2に正常を設定した応答を返送し(ステップS520)、系内状態監視結果が「異常」である場合は(ステップS515:異常)、受信したヘルスチェック信号を廃棄し、応答を返送しない(ステップS525)。
【0064】
転送部15における自系内状態監視結果返却処理フローの場合、監視処理部112を監視処理部152に、監視結果通知処理部113を監視結果通知処理部153に、監視結果記憶部121を監視結果記憶部161に読み替え、上記と同様の処理を行なう。
【0065】
[2.5 ロードバランサ2におけるヘルスチェック]
図8は、図4のステップS110及びS130、S145及びS155において実行される、ロードバランサ2のヘルスチェック処理フローを示す図である。
同図において、ロードバランサ2のタイマ21は、所定の時間毎にサービスチェック部22を起動する(ステップS605)。まず、0系の参照部11についてのヘルスチェックが起動された場合について説明する。サービスチェック部22は、キャッシュサーバ1−0の物理IPアドレスC0、参照部11−0のポート番号PS0を宛先としてヘルスチェック信号を送信する(ステップS610)。
【0066】
サービスチェック部22は、ステップS610において送信したヘルスチェック信号に対して、図7のステップS520においてキャッシュサーバ1の監視結果通知処理部113が送信した応答を受信した場合(ステップS615:応答あり)、参照部11−0の識別情報と対応付けて「応答あり」を記憶部221に書き込む(ステップS620)。
一方、ステップS610において送信したヘルスチェック信号に対して所定時間内に応答を受信しなかった場合(ステップS615:応答なし)、参照部11−0の識別情報と対応付けて「応答なし」を記憶部221に書き込む(ステップS625)。
【0067】
ステップS605において、0系の転送部15−0についてのヘルスチェックが起動された場合、ステップS610において、サービスチェック部22は、キャッシュサーバ1−0の物理IPアドレスC0、転送部15−0のポート番号PT0を宛先としてヘルスチェック信号を送信する。そして、ステップS620においては、転送部15−0の識別情報と対応付けて「応答あり」を、ステップS625においては、転送部15−0の識別情報と対応付けて「応答なし」を記憶部221に書き込む。
【0068】
同様に、ステップS605において、1系の参照部11−1についてのヘルスチェックが起動された場合、ステップS610において、サービスチェック部22は、キャッシュサーバ1−1の物理IPアドレスC1、参照部11−1のポート番号PS1を宛先としてヘルスチェック信号を送信する。そして、ステップS620においては、参照部11−1の識別情報と対応付けて「応答あり」を、ステップS625においては、参照部11−1の識別情報と対応付けて「応答なし」を記憶部221に書き込む。
【0069】
また、ステップS605において、1系の転送部15−1についてのヘルスチェックが起動された場合、ステップS610において、サービスチェック部22は、キャッシュサーバ1−1の物理IPアドレスC1、転送部15−1のポート番号PT1を宛先としてヘルスチェック信号を送信する。そして、ステップS620においては、転送部15−1の識別情報と対応付けて「応答あり」を、ステップS625においては、転送部15−1の識別情報と対応付けて「応答なし」を記憶部221に書き込む。
【0070】
[3. 振分処理]
ロードバランサ2a、2bは、上述したヘルスチェックにより、キャッシュサーバ1−0、1−1の参照部11及び転送部15それぞれが正常であるか異常であるかを判定するためのヘルスチェック結果を保持する。つまり、応答が返送された場合は運用状態が正常、応答が返送されなかった場合は異常であると判断することができる。そして、ロードバランサ2aは、アプリケーション装置4からのデータ参照要求を受信するたびに、ヘルスチェック結果を利用して運用系のキャッシュサーバ1を決定し、データ参照要求の振分処理を行なう。また、ロードバランサ2bは、キャッシュサーバ1から系状態識別信号を受信するたびに、同様の振分処理を行う。以下、振分処理の動作について説明する。
【0071】
[3.1 振分処理シーケンス]
図9は、アプリケーション装置4からのデータ参照要求受信時の振分処理シーケンスを示す図である。
同図において、ロードバランサ2aは、アプリケーション装置4から、ロードバランサ2aの仮想IPアドレスAを宛先としたデータ参照要求を受信する(ステップS705)。ロードバランサ2は、ヘルスチェック処理結果を参照して、運用系のキャッシュサーバ1を判断する(ステップS710)。ここでは、キャッシュサーバ1−0が運用系であると判断したと仮定する。ロードバランサ2は、データ参照要求の宛先を、運用系であるキャッシュサーバ1−0の物理IPアドレスC0及び参照部11−0のポート番号PS0として送信する(ステップS715)。0系の参照部11−0は、受信したデータ参照要求に対する応答を返送すると(ステップS720)、ロードバランサ2aは、データ参照要求の送信元であるアプリケーション装置4へ応答を送信する(ステップS725)。
【0072】
ロードバランサ2aは、アプリケーション装置4から、ロードバランサ2aの仮想IPアドレスAを宛先としたデータ参照要求を受信するたびに、ヘルスチェック処理結果を参照して、運用系のキャッシュサーバ1を判断する。つまり、同図に示すように、ロードバランサ2aは、再びアプリケーション装置4からデータ参照要求を受信すると(ステップS730)、ヘルスチェック処理結果を参照して、運用系のキャッシュサーバ1を判断する(ステップS735)。以降のステップS745〜S750の処理は、ステップS715〜S720の処理と同様である。
【0073】
なお、振分処理において、ロードバランサ2aが、運用系はキャッシュサーバ1−1であると判断した場合、アプリケーション装置4から受信したデータ参照要求の宛先を、運用系であるキャッシュサーバ1−1の物理IPアドレスC1及び参照部11−1のポート番号PS1として送信する。そして、1系の参照部11−1がデータ参照要求に対する応答を返送すると、ロードバランサ2aは、データ参照要求の送信元であるアプリケーション装置4へ応答を送信する。
【0074】
図10は、キャッシュサーバ1からの系状態識別信号受信時の振分処理シーケンスを示す図である。
同図において、ロードバランサ2bは、0系の転送部15−0からロードバランサ2bの仮想IPアドレスBを宛先とした系状態識別信号を受信する(ステップS805)。ロードバランサ2bは、ヘルスチェック処理結果を参照して、運用系のキャッシュサーバ1を判断する(ステップS810)。ここでは、キャッシュサーバ1−0が運用系であると判断したと仮定する。ロードバランサ2bは、系状態識別信号の宛先を、運用系であるキャッシュサーバ1−0の物理IPアドレスC0及び転送部15−0のポート番号PT0として送信する(ステップS815)。0系の転送部15−0は、自系が送信した系状態識別信号を受信するため、運用系であることを認識する。
【0075】
同様に、ロードバランサ2bは、1系の転送部15−1からロードバランサ2bの仮想IPアドレスBを宛先とした系状態識別信号を受信する(ステップS820)。ロードバランサ2bは、ヘルスチェック処理結果を参照し、キャッシュサーバ1−0が運用系であると判断したと仮定する(ステップS825)。ロードバランサ2bは、系状態識別信号の宛先を、運用系であるキャッシュサーバ1−0の物理IPアドレスC0及びポート番号PT0として送信する(ステップS830)。1系の転送部15−1は、自系が送信した系状態識別信号を受信できないため、待機系であることを認識する。
【0076】
なお、振分処理において、ロードバランサ2bが、運用系はキャッシュサーバ1−1であると判断した場合、キャッシュサーバ1−0、1−1から受信した系状態識別信号の宛先を、運用系であるキャッシュサーバ1−1の物理IPアドレスC1及び転送部15−1のポート番号PT1として送信する。これにより、1系の転送部15−1は、自系が送信した系状態識別信号を受信するため、運用系であることを認識し、0系の転送部15−0は、自系が送信した系状態識別信号を受信できないため、待機系であることを認識する。
【0077】
[3.2 ロードバランサ2における振分処理]
図11は、ロードバランサ2aにおける振分処理フローを示す図である。
同図においてロードバランサ2aは、ロードバランサ2aの仮想IPアドレスAを宛先としたデータ参照要求をアプリケーション装置4から受信したことを契機に、運用系判断処理部23aを起動する(ステップS905)。運用系判断処理部23aは、サービスチェック部22aの記憶部221aから、0系の参照部11−0及び転送部15−0、1系の参照部11−1及び転送部15−1それぞれからのヘルスチェック信号の応答ありなしの結果を読み出すとともに(ステップS910)、運用フラグを読み出し、保持する(ステップS915)。なお、運用フラグとは、0系及び1系の参照部11の応答状態が同じであり、かつ、0系及び1系の転送部15の応答状態が同じである場合など、応答の状態からは運用系を決定することができない場合に参照するフラグであり、0系を振分先とする場合は「0」、1系を振分先とする場合は「1」、0系及び1系とも振分不可である場合は「3」の値をとる。通常は、システム開始時に初期値として「0」か「1」を設定する。
【0078】
続いて、運用系判断処理部23aは、図12に示す振分け状態表に従い、振分け状態を判断する(ステップS920)。
すなわち、運用系判断処理部23aは、0系及び1系の参照部11の両方から応答があり、かつ、0系及び1系の転送部15の応答有無の状態が同じであった場合は振分状態「2」とする。また、0系の参照部11−0から応答があり、1系の参照部11−1から応答がなかった場合、あるいは、0系及び1系の参照部11、ならびに、0系の転送部15−0から応答があり、1系の転送部15−1から応答がなかった場合は振分状態「0」とする。また、0系の参照部11−0から応答がなく、1系の参照部11−1から応答があった場合、あるいは、0系及び1系の参照部11、ならびに、1系の転送部15−1から応答があり、0系の転送部15−0から応答がなかった場合は振分状態「1」とする。また、0系及び1系の参照部11の両方から応答がなかった場合は振分け状態「3」と判断する。
【0079】
振分け状態が「0」であると判断した場合(ステップS920:振分け状態0)、運用系判断処理部23aは、ステップS905において受信したデータ参照要求の宛先をキャッシュサーバ1−0の物理IPアドレスC0及び参照部11−0のポート番号PS0として送信し(ステップS925)、記憶部221aに記憶されている運用フラグに振分け状態の値を設定する(ステップS930)。これにより、運用フラグには「0」が設定される。
【0080】
振分け状態が「1」であると判断した場合(ステップS920:振分け状態1)、運用系判断処理部23aは、ステップS905において受信したデータ参照要求の宛先をキャッシュサーバ1−1の物理IPアドレスC1及び参照部11−1のポート番号PS1として送信し(ステップS935)、記憶部221aに記憶されている運用フラグに振分け状態の値を設定する(ステップS930)。これにより、運用フラグには「1」が設定される。
【0081】
振分け状態が「2」であると判断した場合(ステップS920:振分け状態2)、0系1系とも正常に動作しているため、応答の状態からはどちらのキャッシュサーバ1を運用系、待機系とするかを判断することはできない。そこで、運用系判断処理部23aは、さらに、ステップS915にお保持していた運用フラグを取得し(ステップS940)、値が「0」または「1」であるかを判断する(ステップS945)。
運用フラグが「0」または「1」である場合(ステップS945:真)、運用系判断処理部23aは、運用フラグにおいて示される系のキャッシュサーバ1にステップS905において受信したデータ参照要求を送信する(ステップS950)。つまり、運用フラグが「0」である場合は、データ参照要求の宛先アドレスをキャッシュサーバ1−0の物理IPアドレスC0及び参照部11−0のポート番号PS0に変換して送信し、運用フラグが「1」である場合は、データ参照要求の宛先アドレスをキャッシュサーバ1−1の物理IPアドレスC1及び参照部11−1のポート番号PS1に変換して送信する。これにより、0系1系の両方が正常に動作している間は同じ系が振分先となる。
【0082】
一方、運用フラグが「0」でも「1」でもない場合(ステップS945:偽)、運用系判断処理部23aは、0系を振分先とする。運用系判断処理部23aは、ステップS905において受信したデータ参照要求の宛先アドレスをキャッシュサーバ1−0の物理IPアドレスC0及び参照部11−0のポート番号PS0に変換して送信し(ステップS955)、運用フラグへ「0」を設定する(ステップS960)。従って、0系及び1系の両方に異常が発生した後、同時に正常に戻った場合には、0系を振分先とする。
【0083】
振分け状態「3」であると判断した場合(ステップS920:振分け状態3)、0系、1系ともに異常が発生しているため、運用系判断処理部23aは、ステップS905において受信したデータ参照要求に対するエラー応答をアプリケーション装置4へ返送し(ステップS965)、運用フラグへ「3」を設定する(ステップS970)。
【0084】
図13は、ロードバランサ2bにおける振分処理の処理フローを示す図である。
同図においてロードバランサ2bは、ロードバランサ2bの仮想IPアドレスBを宛先とした系状態識別信号をキャッシュサーバ1から受信したことを契機に、運用系判断処理部23bを起動する(ステップS1005)。
ステップS1010以降の処理は、図11に示すステップS910以降の処理と同様であり、振分け状態表も同じ設定内容である。ただし、運用系判断処理部23a、記憶部221a、参照部11−0のポート番号PS0、参照部11−1のポート番号PS1はそれぞれ、運用系判断処理部23b、記憶部221b、転送部15−0のポート番号PT0、転送部15−1のポート番号PT1と読み替え、ステップS905においてアプリケーション装置4から受信したデータ参照要求は、ステップS1005においてキャッシュサーバ1から受信した系状態識別信号と読み替える。よって、ステップS1065においてはエラー応答を系状態識別信号の送信元のキャッシュサーバ1の転送部15に返送することになる。
【0085】
[4. データ同期処理]
キャッシュシステムでは、原本データ管理装置3が記憶する実データとの同期をとりつつ、キャッシュサーバ1−0、1−1間でデータの同期をとる必要がある。以下では、本実施形態のデータ同期方法を採用した理由について説明した後、本実施の形態によるキャッシュシステムにおける同期処理の動作について説明する。
【0086】
[4.1 データ同期方法の検討過程]
図14は、本実施の形態によるキャッシュシステムへの適用を検討した原本データ同期方法を示す図である。
図14(a)は、原本データ管理装置3から両系のキャッシュサーバ1それぞれに対して実データを反映させる方法である。この方法では、両系のキャッシュサーバ1間でデータの同期を行なう必要がない。しかし、原本データ管理装置3に負荷がかかるとともに、同期のための機能を追加しなければならず、また、原本データ管理装置3からの実データの転送時にミスが発生した場合、キャッシュサーバ1では実データとの差分を反映できないままとなるという問題がある。加えて、両系のキャッシュサーバ1が記憶するデータの整合性が担保できず、系切り替え時にデータの同期がとれなくなってしまうおそれがあり、リダンダンシそのものが実現できないという問題もある。
【0087】
図14(b)は、原本データ管理装置3から一方のキャッシュサーバ1のみ対して実データを反映させ、その後、キャッシュサーバ1の系間でデータの同期をとる方法である。この方法では、原本データ管理装置3に原本データ書き込みのための機能を追加しなければならず、また、原本データ管理装置3からの実データの転送時に時にミスが発生した場合、キャッシュサーバ1では実データとの差分を反映できないままとなるという問題がある。さらには、原本データ管理装置3において、キャッシュサーバ1に系切替えが発生している場合についての動作を考慮しなければならず、系切り替え時データの同期がとれなくなってしまうおそれがあり、リダンダンシそのものが実現できないという問題もある。
【0088】
図14(c)は、一方のキャッシュサーバ1が定期的に原本データ管理装置3から原本データを読み出し、系間でデータの同期をとる方法である。この方法の場合、考慮すべき点はあるものの、系切り替えに伴うデータロストの最小化といったリダンダンシの根幹に係る条件をクリアしている。
そこで、本実施形態では、図14(c)の方法をベースとして、運用系、待機系を認識せずに動作しているキャッシュサーバ1のどちらが原本データとの同期を行なうかを決定する処理を追加するとともに、系間においてデータ同期がどこまで行なわれたかを管理可能な系間同期方法を追加した。
【0089】
独立した2つのキャッシュサーバ1のどちらが原本データとの同期を行なうかについては、図10等においても説明したように、各々のキャッシュサーバ1がロードバランサ2bの仮想IPアドレス宛てにダミーリクエスト、つまり、系状態識別信号を送信し、そのリクエストの応答返却をもって同期を行なう側であることを認識し、データ同期処理を起動する。
【0090】
図15は、本実施の形態によるキャッシュシステムへの適用を検討した系間の同期方法を示す図である。
図15(a)は、既存のDBMSが持つデータ同期機能を用いる方法を示す図である。本実施の形態においては、両系のキャッシュサーバ1は自系の状態、他系の系状態とも意識せず、外部のネットワーク装置であるロードバランサ2によって系が切り替えられる。つまり、ロードバランサ2による切り替えは、既存のDBMSのリンク機能が持つ系間同期の状態とは無関係に行なわれることになる。よって、既存のDBMSのリンク機能自体は系が切り替えを行なわれたことを認識できず、正しくデータ同期を行なうことはできない。また、既存のDBSMでは、障害時のデータ紛失を回復する機能が適用されておらず、DBインスタンスの再起動が必要となることがあり、適切ではない。
【0091】
図15(b)は、原本データとは同期しない系のキャッシュサーバ1が、原本データと同期する側のキャッシュサーバ1から更新されたデータを吸い上げる方法である。この方法の場合、原本データとの同期の処理、系間の同期の処理が両系に分散しているため、系切り替え時にデータの不整合が発生する可能性があるとともに、系障害時、旧サービスルート側に残ったデータの消去ができないという問題がある。また、両系のキャッシュサーバ1において系の状態を意識しなくてはならず、本実施形態にはそぐわない。
【0092】
図15(c)は、原本データと同期する系のキャッシュサーバ1が、原本データと同期しない側のキャッシュサーバ1へ更新されたデータを書き込む方法である。この方法の場合、原本データとの同期を行なう系のキャッシュサーバ1において、系間の同期の処理も行なうためにデータ同期処理が片方の系に集約され、系切り替え時にデータの不整合が発生することを防ぐことができる。
そこで、図15(c)の方法を系間の同期方法として採用し、以下のようにデータ同期がどこまで行なわれたかの管理方法を追加した。
【0093】
つまり、図15(c)の方法では、系間でデータの転送中に系切り替えが発生するなどして、新しく原本データと同期する側になった系は、どの時点から原本データとの同期を行なえばよいかを把握することができない。そこで、データ同期がどこまで行なわれたかを、原本データ管理装置3において原本データが更新されたときに付与されたタイムスタンプを利用して管理する。具体的には、原本データと同期する系のキャッシュサーバ1は、原本データ管理装置3から更新された原本データを読み出すときは、その各原本データの更新日時とともに読み出し、その中で最新の更新日時を同期日時として保持する。そして、原本データと同期しない側のキャッシュサーバ1へ更新された原本データを書き込むときには、同期日時も同時に通知する。これにより、次に同期を行なうタイミングのときに、原本データと同期する系のキャッシュサーバ1は、自系が保持している同期日時以降が更新日時である原本データを原本データ管理装置3から読み出せばよい。
【0094】
[4.2 データ同期シーケンス]
図16は、キャッシュシステムのデータ同期シーケンスを示す図である。
同図は、キャッシュサーバ1−0が運用系、キャッシュサーバ1−1が待機系であるとロードバランサ2bに判断されている場合の例を示す。
両系のキャッシュサーバ1の転送部15は、定期的に系状態識別処理を起動し、系状態識別信号をロードバランサ2bに送信している。同図において、0系の転送部15−0が、ロードバランサ2bに対して系状態識別信号を送信すると、図10のステップS805〜S815の処理が行なわれる(ステップS1105)。
【0095】
ロードバランサ2bが、キャッシュサーバ1−0を運用系と判断しているため、0系の転送部15−0は自系の送信した系状態識別信号を受信する。これにより、転送部15−0は、自系が運用系であると判断し、処理を継続することを決定して(ステップS1110)、原本データとの同期処理を起動する(ステップS1115)。転送部15−0は、原本データ管理装置3に原本データ取得を送信し(ステップS1120)、原本データ管理装置3のデータ管理部31は、原本データ記憶部33から原本データを読み出して(ステップS1125)、転送部15−0に返送する(ステップS1130)。転送部15−0は、受信した原本データにより、転送データ記憶部163−0に記憶されているデータを更新した後(ステップS1135)、系間同期処理を行なう(ステップS1140)。すなわち0系の転送部15−0は、1系の転送部15−1に更新対象の原本データを送信し(ステップS1145)、転送部15−1は、受信した原本データにより転送データ記憶部163−1に記憶されているデータを更新する(ステップS1150)。更新が正常に終了した場合、1系の転送部15−1は、0系の転送部15−0に正常応答を返送する(ステップS1155)。
【0096】
一方、1系の転送部15−1も、ロードバランサ2bに対して系状態識別信号を送信している。これにより、同様に、図10のステップS820〜S830の処理が行なわれる(ステップS1160)。上述したように、ロードバランサ2bはキャッシュサーバ1−0を運用系と判断しているため、系状態識別信号は0系の転送部15−0へ送信される。転送部15−1は自系が送信した系状態識別信号を受信できないため、自系が待機系であると判断して処理を終了する(ステップS1165)。
【0097】
両系のキャッシュサーバ1の転送部15はステップS1105、S1160の処理を定期的に起動し、運用系と待機系の入れ替えがない間は、上述したステップS1105〜S1165の処理を繰り返す。系状態が入れ替わり、キャッシュサーバ1−1が運用系となったときには、上記処理における0系の転送部15−0と1系の転送部15−1の動作が入れ替わる。
【0098】
[4.3 データ同期処理に用いられるデータ]
図17は、データ同期処理に用いられる各装置のデータ例を示す図である。ここでは、キャッシュサーバ1−0が運用系、キャッシュサーバ1−1が待機系であるとロードバランサ2bに判断されている場合の例を示す。
【0099】
原本データ管理装置3は、原本データ記憶部33に、アプリケーション装置4が利用する各種情報の原本データである「情報1」、「情報2」、「情報3」、「情報4」、・・・を記憶している。また、更新履歴記憶部32には、更新された原本データである「情報1」、「情報2」、「情報3」、「情報4」と、それらの更新日時「00:00:01」、「00:00:02」、「00:00:03」、「00:00:04」とを対応付けた更新履歴TBLを記憶している。なお、原本データ管理装置3のデータ管理部31は、原本データ記憶部33に記憶されている原本データが更新されると、随時、更新履歴記憶部32内の更新履歴TBLに更新された原本データとその更新日時とを対応付けて書き込んでいる。
【0100】
運用系であるとみなされている0系の転送部15−0が備える転送データ記憶部163−0には、原本データ管理装置3から読み出された原本データのコピー(キャッシュデータ)である「情報1」、「情報2」が記憶されている。また、同期情報記憶部156−0の更新情報TBLには、転送データ記憶部163−0には書き込んだが、まだキャッシュサーバ1−1との同期更新を行なっていない原本データ「情報2」とその更新日時「00:00:02」とが対応付けて設定されている。さらに、同期情報記憶部156−0が記憶する最終更新情報TBLには、転送データ記憶部163−0に書き込みが終了した原本データの更新日時のうち、最新の更新日時であるラストルック「00:00:02」が設定されている。
【0101】
待機系であるとみなされている1系の転送部15−1が備える転送データ記憶部163−1には、原本データ管理装置3から読み出された原本データのコピー(キャッシュデータ)である「情報1」が記憶されている。また、同期情報記憶部156−1が記憶する最終更新情報TBLには、転送データ記憶部163−1に書き込みが終了した原本データの更新日時のうち、最新の更新日時であるラストルック「00:00:01」が設定されている。待機系の場合、原本データ管理装置3から直接原本データを読み出さないため、通常、同期情報記憶部156−1の更新情報TBLは空である。
【0102】
[4.4 データ更新の流れ]
図18は、原本データ同期処理におけるデータ更新の流れを示す図であり、図17の状態から更新を行なう例を示す。
同図において、自系が運用系であることを認識した0系の転送部15−0は、最終更新情報TBLに設定されているラストルックを取得し、この取得したラストルックと原本データ取得要求とを原本データ管理装置3に送信する(ステップS1205)。原本データ管理装置3のデータ管理部31は、更新履歴記憶部32内の更新履歴TBLを検索してラストルック以降が更新日時である原本データを特定し、特定した原本データとその更新日時をキャッシュサーバ1−0へ返送する。同図においては、原本データ管理装置3は、キャッシュサーバ1−0からラストルック「00:00:02」を受信し、原本データ「情報3」とその更新日時「00:00:03」、原本データ「情報4」とその更新日時「00:00:04」を返送している。
【0103】
0系の転送部15−0は、原本データ管理装置3から受信した原本データ「情報3」及び「情報4」を転送データ記憶部163−0に書き込むと(ステップS1210)、更新したこれらの原本データの更新日時のうち、最新の更新日時「00:00:04」により最終更新情報TBLのラストルックを上書きする(ステップS1215)。
【0104】
なお、上記においては、0系の転送部15−0は、最終更新情報TBLに設定されているラストルックを原本データ取得要求とともに原本データ管理装置3に送信しているが、ラストルックから所定の時間だけ遡った日時を送信してもよい。原本データ管理装置3のデータ管理部31は、更新履歴TBLを検索して受信した日時以降が更新日時である原本データを特定し、特定した原本データとその更新日時を返送する。
【0105】
図19は、系間データ同期処理におけるデータ更新の流れを示す図であり、図18に示す処理に続いて実行する場合の例を示す。
図18のステップS1215の処理の前または後、0系の転送部15−0は、更新情報TBLに、ステップS1210において受信した原本データ「情報3」とその更新日時「00:00:03」、原本データ「情報4」とその更新日時「00:00:04」を追加して書き込む(ステップS1305)。
【0106】
0系の転送部15−0は、1系の転送部15−1が保持する最終更新情報TBLからラストルック「00:00:01」を読み出すと、自系が保持する更新情報TBLに設定されている更新日時と比較する(ステップS1310)。0系の転送部15−0は、1系の転送部15−1から読み出したラストルック以降が更新日時である更新情報TBL内の原本データを特定し、特定した原本データにより1系の転送部15−1が備える転送データ記憶部163−1に記憶されている情報を更新する。これにより、キャッシュサーバ1−1の転送データ記憶部163−1に、「情報2」、「情報3」、「情報4」が書き込まれる(ステップS1315)。
【0107】
0系の転送部15−0は、ステップS1315において1系の転送データ記憶部163−1に書き込んだ原本データの更新日時のうち、最新の更新日時「00:00:04」をラストルックとして1系の転送部15−1が記憶している最終更新情報TBLに書き込む(ステップS1320)。0系の転送部15−0は、1系の転送部15−1に書き込んだ原本データである「情報2」、「情報3」、「情報4」を更新情報TBLから削除する。
【0108】
[4.5 キャッシュサーバ1における更新処理]
図20は、図16のステップS1105、S1160において、両系のキャッシュサーバ1の転送部15が実行する系状態識別処理フローを示す。
同図において、キャッシュサーバ1のタイマ151は、所定の時間毎に系状態識別処理を起動し、これにより、系状態識別部155は、ロードバランサ2bの仮想IPアドレスB宛に系状態識別信号を送信する(ステップS1405)。ロードバランサ2bは、図13に示す振分処理を行い、受信した系状態識別信号を運用系と判断しているキャッシュサーバ1に送信する。
【0109】
ステップS1405において系状態識別信号を送信した後、自系が送信したこの系状態識別信号を受信できなかった場合(ステップS1410:到達しない)、系状態識別部155は、自系が現在待機系であると判断し、その系状態を保持する(ステップS1415)。
【0110】
ステップS1405において系状態識別信号を送信した後、自系が送信したこの系状態識別信号を受信した場合(ステップS1410:到達した)、系状態識別部155は、自系が現在運用系であると判断してその系状態を保持する(ステップS1420)。なお、自系が送信した系状態識別信号を受信したかについては、受信した系状態識別信号に設定されている送信元IPアドレスが自系の物理IPアドレスであるかにより判断することができる。
【0111】
図21は、図16のステップS1110〜S1135、S1165において、両系のキャッシュサーバ1の転送部15が実行する原本データとの同期処理フローを示す。
両系のキャッシュサーバ1の転送部15は、図20に示す系状態識別処理が終了すると、原本データとの同期処理を起動する。これにより、情報転送処理部157は、系状態識別部155が保持している自系の系状態を判断する(ステップS1505)。自系の系状態が待機系である場合(ステップS1505:待機系)、情報転送処理部157は処理を終了する。
【0112】
自系の系状態が運用系である場合(ステップS1505:運用系)、情報転送処理部157は、自系の同期情報記憶部156に記憶されている最終更新情報TBLからラストルックを読み出す(ステップS1510)。続いて、情報転送処理部157は、取得したラストルックと、原本データ取得要求を原本データ管理装置3に送信することにより、原本データ管理装置3からラストルック以降が更新日時である原本データとその更新日時の情報を取得する(ステップS1515)。情報転送処理部157が、ステップS1515において取得した原本データの書き込みを自系の転送データ管理部154に指示すると、転送データアクセス部162は、転送データ記憶部163に取得した原本データを書き込む(ステップS1520)。情報転送処理部157は、書き込みが終了した原本データと、原本データ管理装置3から受信したその原本データの更新日時とを対応づけて、自系の同期情報記憶部156が記憶している更新情報TBLに登録する(ステップS1525)。情報転送処理部157は、ステップS1525において登録した情報に対応した更新日時のうち最も新しい更新日時をラストルックとして、自系の同期情報記憶部156が記憶している最終更新情報TBLに書き込む(ステップS1530)。
【0113】
図22は、図16のステップS1140において、運用系のキャッシュサーバ1の転送部15が実行する系間データ同期処理フローを示す。
図21のステップS1505において自系の系状態が運用系であると判断したキャッシュサーバ1の転送部15は、図21に示す原本データとの同期処理が終了すると、続いて系間データ同期処理を起動する。これにより、運用系のキャッシュサーバ1の系間転送処理部158は、自系の同期情報記憶部156に記憶されている更新情報TBLから原本データとその更新日時とを取得する(ステップS1605)。さらに、系間転送処理部158は、他系、つまり、現在待機系であるキャッシュサーバ1の同期情報記憶部156に記憶されている最終更新情報TBLからラストルックを読み出す(ステップS1610)。
【0114】
ステップS1605において取得した、転送データ記憶部163に反映済みの原本データの更新日時が、ステップS1610において取得した待機系のラストルックよりも新しい場合(ステップS1615:運用系のほうが新しい)、運用系の系間転送処理部158は、待機系のキャッシュサーバ1の転送データ管理部154に、ステップS1605において取得した原本データの書き込みを指示する(ステップS1620)。これにより、待機系のキャッシュサーバ1の転送データアクセス部162は、自系の転送データ記憶部163に指示された原本データを書き込む。
【0115】
続いて運用系のキャッシュサーバ1の系間転送処理部158は、ステップS1620で待機系のキャッシュサーバ1に書き込んだ原本データに対応した原本データ管理装置3における更新日時のうち、最新の更新日時をラストルックとして待機系のキャッシュサーバ1の同期情報記憶部156が記憶する最終更新情報TBLに書き込む(ステップS1625)。運用系のキャッシュサーバ1の系間転送処理部158は、ステップS1620において、待機系のキャッシュサーバ1の転送データ記憶部163に書き込んだ原本データ及びその更新日時を、自系の転送データ記憶部163に記憶されている更新情報TBLから削除する(ステップS1630)。
【0116】
なお、ステップS1610において取得した待機系のラストルックが、ステップS1605において取得した、自系の転送データ記憶部163に反映済みの原本データの更新日時よりも新しい場合(ステップS1615:待機系のほうが新しい)、処理を終了する。
【0117】
両系のキャッシュサーバ1は、以下のように定期的に系内データ同期処理を行う。
キャッシュサーバ1の参照部11において、タイマ111により系内同期処理部116が定期的に起動される。起動された系内同期処理部116は、転送部15へ系内データ同期を要求する。転送部15の系内同期処理部159は、参照部11の系内同期処理部116から系内データ同期を受信すると、転送データアクセス部162が転送データ記憶部163から読み出した原本データを返送する。参照部11の系内同期処理部116は、転送部15の系内同期処理部159から受信した原本データの書き込みを参照データアクセス部122へ指示し、参照データアクセス部122は、系内同期処理部116が受信した原本データを参照データ記憶部123へ書き込む。
【0118】
[5.汎用インタフェース]
本実施の形態のキャッシュシステムは、複数のアプリケーション装置4からデータ参照要求を受信する。しかし、アプリケーション装置4において実行されている上位サービスアプリケーションそれぞれに対して独自のインタフェース(以下、IFと記載)を定義すると、上位サービスアプリケーションの追加のたびにIFの実装が必要となってしまう。そこで、汎用的なIF定義によりデータアクセスを行なう機能を実装し、上位サービスアプリケーションの追加に伴う開発を不要にする。
【0119】
汎用IF定義では、1つのIF定義によって、複数の上位サービスアプリケーションが用いる複数パターンのデータ参照要求及びその応答、すなわち、INパラメータ及びOUTパラメータに対応する。従って、新たなデータ参照要求及び応答のパターンが発生した場合でも設定ファイルの変更を行なうのみでよく、IF開発は不要である。
【0120】
図23は、汎用IFの動作概要を示す図である。同図において、アプリケーション装置4は、データ参照要求を送信する。データ参照要求は、汎用インタフェースを用いて記述したIN電文であり、変換ルールを特定する識別子と、検索キーとして用いられるIN項目とが設定され、HTTP(Hypertext Transfer Protocol)−SOAP(Simple Object Access Protocol)により送信される。ロードバランサ2aによってデータ参照要求が運用系のキャッシュサーバ1に振り分けられ、運用系のキャッシュサーバ1の情報参照処理部115は、データ参照要求に設定されている識別子により特定される変換ルールを、情報参照処理部115が備えるルール記憶部124から取得する(ステップS1705)。
【0121】
ルール記憶部124は、識別子毎に変換ルールを記憶しており、変換ルールには、正常性チェック用データ、DBアクセス文変換ルール、OUT電文生成ルールが含まれる。
正常性チェック用データは、IN電文の正常性をチェックするための条件を示す。正常性チェック用データは、例えば、XML(extensible markup language)スキーマにより記述され、IN項目のパラメータのデータ型や長さ、設定値などについての正常性をチェックするための条件を記述したXSDファイルである。
DBアクセス文変換ルールは、汎用インタフェースのIN項目をパラメータとしたDBアクセス文を生成するための変換ルールを示す。DBアクセス文変換ルールは、例えば、XSLT(XML Stylesheet Language Transformations)により記述され、IN項目を検索キーとしたSQL文を生成するための変換ルールを記述したSQL導出用XSLTファイルである。
OUT電文生成ルールは、参照データ管理部114から読み出されたデータをOUT項目として設定した汎用インタフェースのOUT電文を生成するための変換ルールを示す。OUT電文生成ルールは、例えば、XSLTにより記述され、読み出されたデータをOUT項目としてXML形式に整形するための変換ルールを記述したOUT電文生成用XSLTファイルである。
【0122】
情報参照処理部115は、読み出した変換ルールを用いて、データ参照要求に設定されているIN項目の正常性をチェックした後、IN項目をキーとして原本データの検索を行うDBアクセス文を生成し、転送データ管理部154へ出力する(ステップS1710)。情報参照処理部115は、読み出した汎用IF定義を用いて、参照データ管理部123からDBアクセス文によって読み出された原本データをOUT項目に設定したXMLのOUT電文を生成し、アプリケーション装置4へ返送する(ステップS1715)。
【0123】
上記によって、データアクセス要求及び応答の追加時には、変換ルールを追加するのみでよく、上位サービスアプリケーションに追加に伴うIF開発が不要となる。
【0124】
図24は、情報参照処理部115における汎用インタフェース処理フローを示す図である。同図において情報参照処理部115は、アプリケーション装置4から送信されたデータ参照要求であるIN電文から識別子を抽出する。情報参照処理部115は、読み出した識別子によってルール記憶部124に記憶されている変換ルール、すなわち、適用すべき電文正常性確認用XSDファイル、SQL導出用XSLTファイル、OUT電文生成用XSLTファイルを特定する(ステップS1805)。情報参照処理部115は、ステップS1805において特定した電文正常性確認用XSDファイルを適用し、IN電文に設定されているパラメータであるIN項目の正常性を確認する(ステップS1810)。情報参照処理部115は、ステップS1805において特定したSQL導出用XSLTファイルを用いて、OUT項目として必要な要素となる原本データを読み出すためのSQLを生成する(ステップS1815)。
【0125】
情報参照処理部115は、参照データ管理部114へステップS1815において生成したSQL文を出力する。参照データ管理部114の参照データアクセス部122は、受信したSQL文に従って参照データ記憶部123から原本データを読み出し、情報参照処理部115へ出力する(ステップS1820)。情報参照処理部115は、ステップS1820において取得した原本データに対して、ステップS1805において特定したOUT電文生成用XSLTファイルを適用し、OUT電文を作成する(ステップS1825)。情報参照処理部115は、ステップS1825において生成したOUT電文をアプリケーション装置4へ返送する。
【0126】
[6. 効果]
上述した本実施形態のキャッシュシステムによれば、原本データ管理装置3が故障したり、計画停止等を行なったりする場合であっても、アプリケーション装置4に最新、かつ、一元性を確保した原本データを継続して提供することができる。
【0127】
本実施形態のキャッシュシステムでは、両系のキャッシュサーバ1は、自系が運用系か待機系かを意識することなく、独立に非同期で動作しており、外部のネットワーク装置であるロードバランサ2に系切り替えを委ねている。そのため、キャッシュサーバ1は、データアクセス要求を受信したときに、自系の備える参照データ記憶部123に記憶しているキャッシュデータへのアクセスを提供すればよい。従って、従来技術のように共有ディスクを使用した場合の単一障害点の問題を解決することができ、さらには、ロードバランサ2において系切り替えの必要性を判断した場合に、迅速に系切り替えを行なうことができる。
【0128】
また、キャッシュサーバ1は、ロードバランサ2が有する系切り替えの機能を利用して、自系が同期を行なう系か否かを問合せることができ、問合せの結果に応じて原本データ管理装置3とのデータ同期、及び、他系のキャッシュサーバ1との系間データ同期を起動する。よって、独立した系間でもデータの整合性を保った同期を実現することができる。
また、原本データ管理装置において付与された原本データの更新日時を利用することにより、系切り替えが行なわれた場合や、系間においてデータ転送中にエラーが発生した場合であっても、原本データ管理装置とのデータの同期もれや、系間の同期もれを防ぐことが可能になる。
【0129】
キャッシュシステムは、上位サービスアプリケーションを実行するアプリケーション装置4と、原本データを保持する原本データ管理装置3との中間層に位置するシステムである。そのため、参照部11と転送部15とでは、トラフィックの増加要因やタイミングが必ずしも一致しない。例えば、参照部11のトラフィックは、上位サービスアプリケーションを使用するユーザの増加や、上位サービスアプリケーションの種類の増加に伴って増加する。一方、転送部15のトラフィックは、上位サービスアプリケーションから参照されるデータ項目が追加されたときに増加する。本実施の形態では、1台の筐体(サーバ)において参照部11と転送部15が分離されているため、将来的に、参照部11を実行するサーバと、転送部15を実行するサーバとに分離し、それぞれをトラフィックに応じた台数とする構成に移行することが容易となる。一般的には、上位サービスアプリケーションからのトラフィックの増加の割合のほうが高いと考えられることから、例えば、参照部11の性能拡張及びスケールアウトによる負荷分散を可能とするために、参照部11を実行するサーバをn台構成の全運用方式に、転送部15を実行するサーバを1+1台構成の運用待機方式へと移行するようなことも容易である。
【0130】
[7. その他]
上記実施形態においては、キャッシュインタフェース装置を2台のキャッシュサーバ1により多重化しているが、3台以上により多重化してもよい。キャッシュインタフェース装置を3台以上のキャッシュサーバ1により多重化する場合、そのうち少なくとも2台以上がアクト系として動作しているものとし、ロードバランサ2は、アクト系のキャッシュサーバ1について上述した処理を行ない、アクト系のキャッシュサーバ1の中の1台を運用系として判断する。
また、キャッシュサーバ1として動作する1台の筐体(サーバ)に、複数の参照部11を備える構成としてもよい。
【0131】
なお、上述のキャッシュサーバ1、ロードバランサ2、原本データ管理装置3、アプリケーション装置4は、内部にコンピュータシステムを有している。そして、キャッシュサーバ1の監視処理部112、監視結果通知処理部113、参照データ管理部114、情報参照処理部115、系内同期処理部116、監視処理部152、監視結果通知処理部153、転送データ管理部154、系状態識別部155、情報転送処理部157、系間転送処理部158及び系内同期処理部159、ロードバランサ2のサービスチェック部22及び運用系判断処理部23、原本データ管理装置3のデータ管理部31、ならびに、アプリケーション装置4の動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいうコンピュータシステムとは、CPU及び各種メモリやOS、周辺機器等のハードウェアを含むものである。
【0132】
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【符号の説明】
【0133】
1、1−0、1−1…キャッシュサーバ
11、11−0、11−1…参照部
111、151…タイマ
112、152…監視処理部
113、153…監視結果通知処理部
114…参照データ管理部
115…情報参照処理部
116、159…系内同期処理部
121、161…監視結果記憶部
122…参照データアクセス部
123…参照データ記憶部
15、15−0、15−1…転送部
154…転送データ管理部
155…系状態識別部
156…同期情報記憶部
157…情報転送処理部
158…系間転送処理部
162…転送データアクセス部
163…転送データ記憶部
2、2a、2b…ロードバランサ
21…タイマ
22…サービスチェック部
221…記憶部
23…運用系判断処理部
3…原本データ管理装置
31…データ管理部
32…更新履歴記憶部
33…原本データ記憶部
4…アプリケーション装置

【特許請求の範囲】
【請求項1】
原本データをキャッシュする複数のキャッシュ装置と、受信信号を複数の前記キャッシュ装置のいずれに振り分けるかを管理するアクセス振分装置とを備えるキャッシュシステムであって、
複数の前記キャッシュ装置それぞれは、
前記アクセス振分装置から振り分けられたデータアクセス要求を受信し、受信したデータアクセス要求に応じて自キャッシュ装置がキャッシュしている原本データへのアクセス処理を行う参照部と、
原本データ管理装置から原本データを読み出して自キャッシュ装置がキャッシュしている前記原本データを更新する転送部とを備え、
前記アクセス振分装置は、
アクト状態の複数の前記キャッシュ装置の前記参照部及び前記転送部それぞれの運用状態を取得するサービスチェック部と、
前記サービスチェック部が取得した複数の前記キャッシュ装置の前記参照部及び前記転送部の運用状態に基づいて、複数の前記キャッシュ装置の中から受信信号の振分先となる前記キャッシュ装置を判定する運用系判断処理部とを備える、
ことを特徴とするキャッシュシステム。
【請求項2】
前記運用系判断処理部は、前記参照部の運用状態に基づいて複数の前記参照部が正常であると判断した場合、正常な前記参照部を備える複数の前記キャッシュ装置の中から、前記転送部の運用状態に基づいて正常であると判断される前記転送部を備える前記キャッシュ装置を振分先と判定する、
ことを特徴とする請求項1に記載のキャッシュシステム。
【請求項3】
複数の前記キャッシュ装置それぞれの転送部は、
前記振分装置に系状態識別信号を送信する系状態識別部と、
前記振分装置から自身が送信した前記系状態識別信号を受信した場合に、原本データ管理装置から原本データを読み出して自キャッシュ装置がキャッシュしている前記原本データを更新する情報転送処理部と、
他のキャッシュ装置がキャッシュしている原本データを前記情報転送処理部が読み出した前記原本データにより更新する系間転送処理部とをさらに備え、
前記アクセス振分装置の前記運用系判断処理部は、振分先として判定した前記キャッシュ装置へ受信した前記系状態識別信号を送信する、
ことを特徴とする請求項1または請求項2に記載のキャッシュシステム。
【請求項4】
前記情報転送処理部は、自身が送信した前記系状態識別信号を受信した場合に、前記原本データ管理装置から、自キャッシュ装置がキャッシュしている前記原本データよりも、前記原本データ管理装置における更新日時が新しい原本データを読み出し、自キャッシュ装置がキャッシュしている前記原本データを更新し、
前記系間転送処理部は、自キャッシュ装置がキャッシュしている前記原本データのうち、前記他のキャッシュ装置がキャッシュしている前記原本データよりも前記原本データ管理装置における更新日時が新しい原本データにより、前記他のキャッシュ装置がキャッシュしている原本データを更新する、
ことを特徴とする請求項3に記載のキャッシュシステム。
【請求項5】
前記転送部は、自キャッシュ装置がキャッシュしている前記原本データを記憶する転送データ記憶部をさらに備え、
前記情報転送処理部は、前記原本データ管理装置から読み出した前記原本データを前記転送データ記憶部に書き込み、
前記参照部は、
自キャッシュ装置がキャッシュしている前記原本データを記憶する参照データ記憶部と、
前記転送データ記憶部から読み出した前記原本データを前記参照データ記憶部に書き込む系内同期処理部と、
受信した前記データアクセス要求に応じて前記参照データ記憶部に記憶している前記原本データへのアクセス処理を行う参照データアクセス部とを備える、
ことを特徴とする請求項1から請求項4のいずれかの項に記載のキャッシュシステム。
【請求項6】
原本データをキャッシュする複数のキャッシュ装置と、受信信号を複数の前記キャッシュ装置のいずれに振り分けるかを管理するアクセス振分装置とを備えるキャッシュシステムに用いられるキャッシュアクセス方法であって、
複数の前記キャッシュ装置それぞれは、
前記アクセス振分装置から振り分けられたデータアクセス要求を受信し、受信したデータアクセス要求に応じて自キャッシュ装置がキャッシュしている原本データへのアクセス処理を行う参照部と、
原本データ管理装置から原本データを読み出して自キャッシュ装置がキャッシュしている前記原本データを更新する転送部とを備えており、
前記アクセス振分装置において、
サービスチェック部が、アクト状態の複数の前記キャッシュ装置の前記参照部及び前記転送部それぞれの運用状態を取得する状態取得過程と、
運用系判断処理部が、前記状態取得過程において取得した複数の前記キャッシュ装置の前記参照部及び前記転送部の運用状態に基づいて、複数の前記キャッシュ装置の中から受信信号の振分先となる前記キャッシュ装置を判定する運用系判断処理過程と、
を有することを特徴とするキャッシュアクセス方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate


【公開番号】特開2011−164919(P2011−164919A)
【公開日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願番号】特願2010−26759(P2010−26759)
【出願日】平成22年2月9日(2010.2.9)
【出願人】(397065480)エヌ・ティ・ティ・コムウェア株式会社 (187)
【Fターム(参考)】