(57)【要約】【課題】  メンテナンスのため手動でサービスを停止させた場合であっても、生存通知がとまり必ずフェイルオーバーが実行されてしまうため、柔軟にメンテナンスの運用を行うことができないという課題がある。【解決手段】  サービスは、サービス停止時に終了時属性を監視サービスに通知し、  監視サービスは、サービス停止通知を受信すると、指定された終了時属性を判定して、フェイルオーバーさせずにサービスを停止状態に遷移させるか、サービスを一時的に停止状態に遷移させ待機系のサービスに一時的にフェイルオーバーさせるか、を判断する。【選択図】  図９
2011123681.tif 000002
【特許請求の範囲】
【請求項１】
サービス（４０）の稼働状況を監視する監視サービス（５０）と通信可能に接続したデータを管理するサービス（４０）は、終了時属性を保持する設定管理部（４１５）と、設定管理部から終了時属性を取得する手段（Ｓ８０２）と、サービス停止指示を受け付けて、終了時属性を監視サービスに通知する手段（Ｓ８０８）と、を備え、
監視サービス（５０）は、サービス停止通知を受信する手段（Ｓ９０１）と、指定された終了時属性を判定する手段（Ｓ９０５、９０６）と、フェイルオーバーさせずにサービスを停止状態に遷移させる手段（Ｓ９１３）と、停止通知を行ったサービスを一時的に停止状態に遷移させてフェイルオーバーさせる手段（Ｓ９０９）と、フェイルオーバーさせて待機中のサービスを一時的に稼働状態に遷移させる手段（Ｓ９１１）と、サービス起動通知を受信する手段（Ｓ１００１）と、サービスの状態を判定する手段（Ｓ１００３、Ｓ１００５）と、一時的に停止状態にあるサービスからの起動通知であった場合に、一時的に稼働状態にあるサービスからフェイルオーバーさせる手段（Ｓ１００５、Ｓ１００７）と、を備えることを特徴とするフェイルオーバー制御方法。
【請求項２】
請求項１記載の監視サービス（５０）は、フェイルオーバー動作のデフォルト設定情報を保持する設定管理部（５１４）を備え、
サービス停止通知受信時に終了時属性が指定されていなかった場合に、デフォルトの終了時属性を取得する手段（Ｓ９０４）と、を備えることを特徴とする請求項１記載の監視サービス（５０）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、運用系および待機系の冗長化構成の制御方法に関し、特に運用系を停止させる際のフェイルオーバー制御方法に関する。
【背景技術】
【０００２】
従来、複数のノードに負荷分散したクラスタシステムにおいて、運用系とは別に予備機として待機系のノードを備え、運用系がダウンした場合に待機系に対してフェイルオーバー処理を実現し、システムの稼働を継続するシステムが知られている。たとえば、特許文献１では、負荷分散装置管理サーバにて運用系のノードへアクセスするための接続情報を管理し、各クライアントは該接続情報を元に運用系のノードを特定しアクセスする。そして、負荷分散装置管理サーバは運用系のノードの状態を監視し、不足する場合は待機系のノードを運用系に切り替え接続情報を更新する事でフェイルオーバーを実現している。また、特許文献２では、クラスタを構成する各ノードが互いに生存通知を受信しあい、システム内のサービスの稼働状況を把握する。サービスの稼働状況を各サービスで保持することでフェイルオーバー時のオーバーヘッドを軽減している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２３５８３７号公報
【特許文献２】特開２０００−２１５０７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ハードウェアやソフトウェアのメンテナンスのためサービスを手動で止めたい場合があり、運用面から、サービス停止時の動作に関して以下のような要望がある。
【０００５】
・一時的なメンテナンス時にはフェイルオーバーさせない
・フェイルオーバーさせるがメンテナンス後に元の構成に戻す（待機サーバはメンテナンス後もあくまで待機サーバとして残す）
しかし、メンテナンスのため手動でサービスを停止させた場合であっても、生存通知がとまり必ずフェイルオーバーが実行されてしまうため、柔軟にメンテナンスの運用を行うことができないという課題がある。
【課題を解決するための手段】
【０００６】
サービス（４０）の稼働状況を監視する監視サービス（５０）と通信可能に接続したデータを管理するサービス（４０）は、終了時属性を保持する設定管理部（４１５）と、設定管理部から終了時属性を取得する手段（Ｓ８０２）と、サービス停止指示を受け付けて、終了時属性を監視サービスに通知する手段（Ｓ８０８）と、を備え、
監視サービス（５０）は、サービス停止通知を受信する手段（Ｓ９０１）と、指定された終了時属性を判定する手段（Ｓ９０５、９０６）と、フェイルオーバーさせずにサービスを停止状態に遷移させる手段（Ｓ９１３）と、停止通知を行ったサービスを一時的に停止状態に遷移させてフェイルオーバーさせる手段（Ｓ９０９）と、フェイルオーバーさせて待機中のサービスを一時的に稼働状態に遷移させる手段（Ｓ９１１）と、サービス起動通知を受信する手段（Ｓ１００１）と、サービスの状態を判定する手段（Ｓ１００３、Ｓ１００５）と、一時的に停止状態にあるサービスからの起動通知であった場合に、一時的に稼働状態にあるサービスからフェイルオーバーさせる手段（Ｓ１００５、Ｓ１００７）と、を備える。
【発明の効果】
【０００７】
フェイルオーバー機能を持つ分散環境において、メンテナンスのためのサービス停止時にフェイルオーバー動作を指定できるため、柔軟にメンテナンスの運用を行うことが出来る。
【図面の簡単な説明】
【０００８】
【図１】ネットワーク構成を示す図である。
【図２】ハードウェア構成を示す図である。
【図３】Ｗｅｂブラウザ、Ｗｅｂサーバのモジュールの構成を示す図である。
【図４】文書管理サービスモジュールの構成を示す図である。
【図５】監視サービスモジュールの構成を示す図である。
【図６】状態管理表のテーブル構成を示す図である。
【図７】設定データベースのテーブル構成の例を示す図である。
【図８】文書管理サービスにおけるサービス停止時の処理のフローチャートである。
【図９】監視サービスにおけるサービス停止通知受信時の処理のフローチャートである。
【図１０】監視サービスにおけるサービス起動通知受信時の処理のフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１０】
図１は、本発明の実施例のシステム構成を示すブロック図である。図中、１０は各構成要素を接続するネットワーク１０、１１Ａ、１１ＢはＷｅｂサーバに対してリクエストを発行するクライアント１１である。図中、１２Ａ、１２Ｂはクライアントからのリクエストを受け付けるＷｅｂサーバ１２である。また、図中、１３Ａ、１３ＢはＷｅｂサーバで受け付けたリクエストを処理するための文書管理サーバ１３であり、また１３Ｃは１３Ａ、１３Ｂに異常が発生した場合に処理を引き継ぐ待機系の文書管理サーバ１３である。また、図中、１４は各サービスの状態を監視するための監視サーバ１４であり、後述するフェイルオーバー処理を行う。また、上記各構成要素はネットワーク１０により通信可能に接続されており、通信手段としては、ＨＴＴＰや、ＨＴＴＰ上のＳＯＡＰ、つまりＷｅｂサービスが用いられる他、ＴＣＰ／ＩＰによる相互通信を用いて行われる。
【００１１】
図２は、図１のクライアント１１、Ｗｅｂサーバ１２、文書管理サーバ１３、あるいは監視サーバ１４のハードウェア構成を示すブロック図である。図中、２１は内部バスで接続される各デバイス（後述のＲＯＭ、ＲＡＭ他）を直接或いは間接的に制御し、本発明を実現するためのプログラムを実行するＣＰＵである。２２はＢＩＯＳが格納してあるＲＯＭである。２３はＣＰＵ２１のワーク領域として利用されたり、本発明を実現するためのソフトウェアモジュールをロードするための一時記憶として利用されたりするＲＡＭ（直接記憶装置）。２４は基本ソフトウェアであるＯＳやソフトウェアモジュールが記憶されているＨＤＤ（ハードディスクドライブ）、もしくはＳＳＤ（ソリッドステートドライブ）などの間接記憶装置。２５は入力装置であり不図示のキーボードやポインティングデバイスなどである。２６は出力装置でありディスプレイが接続される。２７はネットワーク１０に接続するためのＩ／Ｆである。これらハードウェアでは、起動後ＣＰＵ２１によりＢＩＯＳが実行されＯＳがＨＤＤ２４からＲＡＭ２３に実行可能にロードされる。ＣＰＵ２１はＯＳの動作に従って後述する各種ソフトウェアモジュールをＨＤＤ２４からＲＡＭ２３に随時、実行可能にロードする。各種ソフトウェアモジュールは上記各デバイスの協調によりＣＰＵ２１によって実行され動作する。また、Ｉ／Ｆ２７はネットワーク１０に接続されており、ＯＳの動作に従ってＣＰＵ２１により制御され、上述した通信手段による通信を実現している。
【００１２】
図３は、クライアント１１、およびＷｅｂサーバ１２上で動作するソフトウェアモジュールの構成図である。なお各ソフトウェアモジュールは図２で示したＨＤＤ２４に記憶されており、前述したようにＣＰＵ２１によってＲＡＭ２３にロードされ実行される。
【００１３】
図中、３０はクライアント１１からのリクエストを、複数のＷｅｂサーバ１２Ａ、１２Ｂに対して振り分け処理の負荷分散を実現するためのロードバランサ３０である。クライアント１１、Ｗｅｂサーバ１２はこのロードバランサ３０を中継してネットワーク１０により相互通信可能に接続されている。
【００１４】
クライアント１１はユーザインタフェースアプリケーションとしてＷｅｂブラウザ３１を備えている。また、Ｗｅｂサーバ１２はＷｅｂアプリケーションサーバ３２を備え、該Ｗｅｂアプリケーションサーバ３２には、文書モニタアプリケーション３３がデプロイされている。この文書モニタアプリケーション３３は、Ｗｅｂアプリケーションサーバ３２上でいわゆるＷｅｂアプリケーションとして構成されており、クライアント１１はＷｅｂブラウザ３１を介してアクセスする事が出来る。文書モニタアプリケーション３３はＷｅｂブラウザ３１からのリクエストに対してユーザインタフェース情報を返答する。Ｗｅｂブラウザ３１は文書モニタアプリケーション３３から得られたユーザインタフェース情報をレンダリングし表示する。表示されたユーザインタフェース情報には、たとえば、後述する文書管理サービスが管理する文書情報一覧や、文書の操作をリクエストするためのインタフェース等が含まれている。文書モニタアプリケーション３３は、後述する文書管理サービスに対して文書情報一覧の取得や、Ｗｅｂブラウザ３１からリクエストされた文書の操作をリクエストする。
【００１５】
図４は、文書管理サーバ１３上で動作するソフトウェアモジュールの構成図である。なお各ソフトウェアモジュールは図２で示したＨＤＤ２４に記憶されており、前述したようにＣＰＵ２１によってＲＡＭ２３にロードされ実行される。図中、４０は上述した文書モニタアプリケーション３３からリクエストを受け付け、文書に対する各種処理を実行する文書管理サービス４０である。文書管理サービス４０は、他のサービスとの通信を処理するインタフェース部４１０、受け付けたリクエストに従って処理を実行するロジック部４１１、文書データに対する処理を実行するデータ管理部４１２、自身が生存していることを定期的に通知するためのトリガである生存通知部４１３、自身のサービス状態を管理する状態管理部４１４、および自身の設定情報を管理する設定管理部４１５にて構成される。文書管理サービス４０はこれら各構成要素の協調により後述する処理を実行する。
【００１６】
また、インタフェース部４１０は上述した文書モニタアプリケーション３３および、後述する監視サーバ１４と通信する。これら通信は、各ソフトウェアモジュールからの命令をＯＳが受け、ＯＳの動作に従って、図２におけるＣＰＵ２１によりＩ／Ｆ２７を介して実行される。また、図中、４２は文書データの情報を格納するデータベース４２であり、図２で示したＨＤＤ２４に記憶されている。また、図中、４３は文書管理サーバ１３の稼働時の動作を決定する設定情報を格納する設定データベース４３であり、図２で示したＨＤＤ２４に記憶されている。設定データベース４３はユーザにより任意のタイミングで設定更新が行われる。
【００１７】
図５は、監視サーバ１４上で動作するソフトウェアモジュールの構成図である。なお各ソフトウェアモジュールは図２で示したＨＤＤ２４に記憶されており、前述したようにＣＰＵ２１によってＲＡＭ２３にロードされ実行される。
【００１８】
図中、５０は、文書管理サービス４０の状態を監視し、各サービスの状況によってフェイルオーバー等の処理を実行する監視サービス５０である。また監視サービス５０は、文書モニタアプリケーション３３からのリクエストを受け付け、後述する文書管理サービス４０への接続情報を返答する。監視サービス５０は、他のサービスとの通信を処理するインタフェース部５１０、受け付けたリクエストに従って処理を実行するロジック部５１１、後述する各種管理表に対する処理を実行する表管理部５１２、各サービスの生存状態を定期的に監視するためのトリガである生存監視部５１３、および自身の設定情報を管理する設定管理部５１４にて構成される。監視サービス５０はこれら各構成要素の協調により後述する処理を実行する。また、インタフェース部５１０は上述した文書モニタアプリケーション３３、文書管理サーバ１３と通信する。これら通信は、各ソフトウェアモジュールからの命令をＯＳが受け、ＯＳの動作に従って、図２におけるＣＰＵ２１によりＩ／Ｆ２７を介して実行される。また、図中、５２は文書モニタアプリケーション３３が文書管理サービス４０との通信するための接続情報が格納されている接続管理表５２である。また、図中、５３は各サービスの状態が格納されている状態管理表５３である。これら管理表は図２で示したＨＤＤ２４に記憶されている。また、図中、５４は文書管理サーバ１３のフェイルオーバー動作のデフォルト設定情報を格納する設定データベース５４であり、図２で示したＨＤＤ２４に記憶されている。設定データベース５４はユーザにより任意のタイミングで設定更新が行われる。
【００１９】
図６は状態管理表５３のデータ構造を示す図である。状態管理表５３は、サービス情報６００および、ステータス情報６１０によって構成される。サービス情報６００は、文書管理サービス４０の情報が格納され管理される。サービス情報６００は、サービスの識別子であるサービスＩＤ６０１、サービスの種類を示すサービス種別６０２、サービスへの接続アドレスが格納される接続アドレス６０３、サービスへの接続ポート番号が格納される接続ポート６０４で構成される。接続アドレス６０３は、たとえばＩＰアドレスやＦＱＤＮといった、サービスが稼働しているサーバをネットワーク１０内で一意に識別可能な情報が格納される。ステータス情報６１０は、文書管理サービス４０の生存状況やステータスが格納され管理される。ステータス情報６１０は、サービスの識別子であるサービスＩＤ６１１、サービスからの最新の生存通知を受け付けた日時を格納する最終通知日時６１２、ステータスを格納する状態６１３、およびフェイルオーバーされた際にどのサービスからのフェイルオーバーであるかを示すフェイルオーバー元サービスＩＤから構成される。状態６１３には、運用中であることを示す「稼働」、待機系である事を示す「待機」、異常によってダウンした場合で、かつフェイルオーバーしていない事を示す「中止」、異常によってダウンし、フェイルオーバーされている事を示す「停止」、フェイルオーバー処理中で、状態遷移中である事を示す「処理中」、一時メンテナンスのため停止状態であることを示す「復帰」、および他のサービスの一時メンテナンスのためにフェイルオーバーされ一時的に稼働している状態であることを示す「稼働（待機）」が存在する。また、サービスＩＤ６１１およびフェイルオーバー元サービスＩＤはサービス情報６００のサービスＩＤとリレーションしている。
【００２０】
図７は、設定データベース４３が保持するテーブルのうち、フェイルオーバー動作に関する設定のテーブル構造を示す図である。設定データベース５４も同様のテーブル構造をもつ。終了時属性７０１は、値として「正常」あるいは「復帰」を持つ。「正常」はメンテナンスのための終了とみなしフェイルオーバーしないことを示す。「復帰」は待機中のサービスにフェイルオーバーするが、停止したサービスからの起動通知受付時に元の状態に戻すことを示す。
【００２１】
図８は、文書管理サービス４０がサービス停止の指示を受け付けた際の処理を示すフローチャートである。ロジック部４１１は、本明細書では、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＨＤＤ等からなり、フローチャートで示す手順がロジック部４１１のＲＡＭ、ＲＯＭ、ＨＤＤのいずれかの記憶手段に記憶され、ＣＰＵ２１により実行される。ロジック部４１１は、ステップＳ８０１にて、サービス停止の指示を受け付けると、設定管理部４１５から終了時属性を取得する（ステップＳ８０２）。次に、ロジック部４１１は、ステップＳ８０３にて、前記終了時属性が指定されているかを判定する。前記終了時属性が指定されていない場合、ロジック部４１１は、終了時属性を指定せずに監視サービス５０に対して自身のサービスＩＤ６０１とともにサービス停止を通知する（ステップＳ８０５）。ステップＳ８０３にて、前記終了時属性が指定されている場合、ロジック部４１１は、ステップＳ８０５にて前記終了時属性を保持し、前記保持した終了時属性および自身のサービスＩＤ６０１とともに監視サービス５０に対してサービス停止を通知する（ステップＳ８０６）。
以上の処理により、文書管理サービス４０が監視サービス５０に対してサービス停止通知処理を行う。
【００２２】
図９は、監視サービス５０が、文書管理サービス４０からサービス停止の通知を受け付けた際の処理を示すフローチャートである。ロジック部５１１は、本明細書では、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＨＤＤ等からなり、フローチャートで示す手順がロジック部５１１のＲＡＭ、ＲＯＭ、ＨＤＤのいずれかの記憶手段に記憶され、ＣＰＵ２１により実行される。
【００２３】
ロジック部５１１は、ステップＳ９０１にて、文書管理サービス４０からサービス停止の通知を受け付けると、送られてきたサービスＩＤ６０１をもとに、状態管理表５３から停止対象の文書管理サービス４０を特定する（ステップＳ９０２）。次に、ロジック部５１１は、該文書管理サービス４０のステータス情報６１０を取得する。次に、ロジック部５１１は、ステップＳ９０３にて終了時属性が指定されているかを判定する。終了時属性が指定されていない場合、ロジック部５１１は、ステップＳ９０４にて設定管理部５１４から終了時属性を取得する。次に、ロジック部５１１は、ステップＳ９０５にて、前記取得した終了時属性が「正常」であるかを判定する。前記取得した終了時属性が「正常」である場合、ロジック部５１１は、ステップＳ９１３にて、ステップＳ９０２で取得したステータス情報６１０の状態６１３を「中止」に更新する。ステップＳ９０５にて、前記取得した終了時属性が「正常」でない場合、ロジック部５１１は、ステップＳ９０６にて、前記取得した終了時属性が「復帰」であるかを判定する。前記取得した終了時属性が「復帰」である場合、ロジック部５１１は、ステップＳ９０７にて、状態管理表５３のステータス情報６１０から、状態６１３が「待機」のサービスがあるかを判定する。
【００２４】
ステップＳ９０７にて、状態６１３が「待機」のサービスがあると判定された場合、ロジック部５１１は、ステップＳ９０８にて、該サービスのサービスＩＤを特定しステータス情報６１０を取得する。次に、ロジック部５１１は、ステップＳ９０９にて、ステップＳ９０２で取得したステータス情報６１０の状態６１３を「復帰」に更新する。次に、ロジック部５１１は、ステップＳ９１０にて、状態６１３が「待機」のサービスに対してフェイルオーバーを実行する。次に、ロジック部５１１は、ステップＳ９１１にて、ステップＳ９０８にて取得したステータス情報６１０の状態６１３を「稼働（待機）」に更新する。さらに、ロジック部５１１は、ステップＳ９１１にて、ステップＳ９０８にて取得したステータス情報６１０のフェイルオーバー元サービスＩＤ６１４に、ステップＳ９０２で特定したサービスのサービスＩＤ６０１をセットする。ステップＳ９０７にて、状態６１３が「待機」のサービスがないと判定された場合、フェイルオーバーができないため、ステップＳ９０２で取得したステータス情報６１０の状態６１３を「中止」に更新し、処理を終了する。
【００２５】
図１０は、監視サービス５０が、文書管理サービス４０からサービス起動の通知を受け付けた際の処理を示すフローチャートである。
【００２６】
ロジック部５１１は、本明細書では、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＨＤＤ等からなり、フローチャートで示す手順がロジック部５１１のＲＡＭ、ＲＯＭ、ＨＤＤのいずれかの記憶手段に記憶され、ＣＰＵ２１により実行される。ロジック部５１１は、ステップＳ１００１にて、文書管理サービス４０からサービス起動の通知を受け付けると、送られてきたサービスＩＤ６０１をもとに、状態管理表５３から起動対象の文書管理サービス４０を特定する（ステップＳ１００２）。次に、ロジック部５１１は、該文書管理サービス４０のステータス情報６１０を取得する。次に、ロジック部５１１は、ステップＳ１００３にて前記ステータス情報６１０の状態６１３が「復帰」であるかを判定する。ステップＳ１００３にて前記ステータス情報６１０の状態６１３が「復帰」である場合、ロジック部５１１は、ステップＳ１００４にて、フェイルオーバー元サービスＩＤ６１４がステップＳ１００２にて特定したサービスのサービスＩＤになっているステータス情報６１０を取得する。次に、ロジック部５１１は、ステップＳ１００５にて、前記取得したステータス情報６１０の状態６１３が「稼働（待機）」であるかを判定する。前記取得したステータス情報６１０の状態６１３が「稼働（待機）」である場合、ロジック部５１１は、ステップＳ１００６にて、前記取得したステータス情報６１０の状態６１３を「待機」に更新する。その後、ロジック部５１１は、ステップＳ１００７にて、起動通知してきた文書管理サービス４０に対してフェイルオーバーを実行する。そして、ロジック部５１１は、ステップＳ１００８にて、ステップＳ１００２で取得したステータス情報６１０の状態６１３を「稼働」に更新する。
【００２７】
ステップＳ１００３にてステータス情報６１０の状態６１３が「復帰」でない場合、ロジック部５１１は、ステップＳ１００２で取得したステータス情報６１０の状態６１３を「稼働」に更新する。
【００２８】
（他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011123681.tif 000003
【図２】
2011123681.tif 000004
【図３】
2011123681.tif 000005
【図４】
2011123681.tif 000006
【図５】
2011123681.tif 000007
【図６】
2011123681.tif 000008
【図７】
2011123681.tif 000009
【図８】
2011123681.tif 000010
【図９】
2011123681.tif 000011
【図１０】
2011123681.tif 000012