JP4703681B2 - Cluster system and takeover node determination method - Google Patents

Cluster system and takeover node determination method Download PDF

Info

Publication number
JP4703681B2
JP4703681B2 JP2008110570A JP2008110570A JP4703681B2 JP 4703681 B2 JP4703681 B2 JP 4703681B2 JP 2008110570 A JP2008110570 A JP 2008110570A JP 2008110570 A JP2008110570 A JP 2008110570A JP 4703681 B2 JP4703681 B2 JP 4703681B2
Authority
JP
Japan
Prior art keywords
node
application program
program interface
unit
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008110570A
Other languages
Japanese (ja)
Other versions
JP2009265689A (en
Inventor
若菜 深瀬
真也 安藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2008110570A priority Critical patent/JP4703681B2/en
Publication of JP2009265689A publication Critical patent/JP2009265689A/en
Application granted granted Critical
Publication of JP4703681B2 publication Critical patent/JP4703681B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Description

本発明は、複数のサーバ計算機(ノード)から構成されるクラスタシステムに係り、特に、稼動系(稼動系ノード)として動作しているサーバ計算機で異常が発生した場合に、当該稼動系ノードでの処理を引き継ぐノード(引き継ぎ先ノード)を決定するのに好適なクラスタシステム及び引き継ぎ先ノード決定方法に関する。   The present invention relates to a cluster system composed of a plurality of server computers (nodes). In particular, when an abnormality occurs in a server computer operating as an active system (active system node), The present invention relates to a cluster system and a takeover destination node determination method suitable for determining a node to take over processing (takeover destination node).

従来から、複数台のサーバ計算機(ノード)が互いに通信して連携を取ることにより、クライアントに対して1台のマシンであるかのように振る舞う、いわゆるクラスタシステムが知られている。このようなクラスタシステムによれば、処理の分散や可用性の向上が実現される。   Conventionally, a so-called cluster system is known in which a plurality of server computers (nodes) communicate with each other to cooperate with each other to behave as if they were one machine for a client. According to such a cluster system, distribution of processing and improvement of availability are realized.

処理分散を特徴とするクラスタシステムでは、システム内でクライアントに対して処理(サービスの提供)を行っているサーバ計算機(稼動系ノード)の負荷が増大した場合、他のサーバ計算機(待機系ノード)に当該処理を行わせる(または分担させる)ことによって、システム全体の処理能力を下げることなく稼動系ノードの負荷を減少させることができる。   In a cluster system characterized by distributed processing, when the load on a server computer (active node) that processes (provides services) to clients in the system increases, another server computer (standby node) By performing (or sharing) the processing, the load on the active node can be reduced without reducing the processing capacity of the entire system.

また高可用性を特徴とするクラスタシステムでは、システム内の稼動系ノードに障害が発生した場合、当該処理が待機系ノードによって引き継がれる。このように、稼動系ノードに障害が発生しても、待機系ノードによって処理が引き継がれることにより、システム全体で可用性を保つことができる。ここで、障害が発生したノードはシステムから切り離される。このためクラスタシステムでは、システムを停止させることなく障害が発生したノードの交換や修理を行うことが可能となる。   In a cluster system characterized by high availability, when a failure occurs in an active node in the system, the processing is taken over by the standby node. Thus, even if a failure occurs in the active node, the availability can be maintained in the entire system by taking over the processing by the standby node. Here, the failed node is disconnected from the system. For this reason, in the cluster system, it is possible to replace or repair the failed node without stopping the system.

クラスタシステムの稼動系ノードでは、当該システムにおけるクラスタ構成を管理するためのクラスタ管理部が、当該稼動系ノードの状態及び当該稼動系ノードで動作するアプリケーション(クライアントにサービスを提供するためのアプリケーション)の状態を監視する。稼動系ノードのクラスタ管理部は、この監視によって、稼動系ノードの負荷の増大や当該稼動系ノードの障害を検知する。   In the active node of the cluster system, the cluster management unit for managing the cluster configuration in the system includes the status of the active node and the applications operating on the active node (applications for providing services to clients). Monitor status. Based on this monitoring, the cluster management unit of the active node detects an increase in the load on the active node and a failure of the active node.

稼動系ノードのクラスタ管理部は、稼動系ノードの負荷の増大や当該稼動系ノードの障害(例えば稼動系ノードで動作しているアプリケーションの異常)を検知すると、クラスタシステム内の他のノード(待機系ノード)のクラスタ管理部と連携して、当該他のノードへの処理の引き継ぎを行う。稼動系ノードから処理を引き継ぐ待機系ノード、つまり引き継ぎ先ノードは、クライアントへのサービスの提供のために用いられていた、アプリケーションの情報やIPアドレス、共有ディスク領域などを引き継ぐことにより、稼動系ノードで行われていた処理(サービス)を開始する。このため、クライアントは、このような引き継ぎを意識することなく、同じIPアドレスで引き継ぎ先ノードと接続することが可能である。   When the cluster management unit of the active node detects an increase in the load on the active node or a failure of the active node (for example, an abnormality of an application operating on the active node), another node (standby in the cluster system) In cooperation with the cluster management unit of the system node), the process is taken over to the other node. The standby node that takes over processing from the active node, that is, the takeover destination node, takes over the application information, IP address, shared disk area, etc. that were used to provide services to the client. The processing (service) performed in step 1 is started. Therefore, the client can connect to the takeover destination node with the same IP address without being aware of such takeover.

システムの実行能力や稼働率をできるだけ下げないためには、異常検知の仕組みと待機系ノードへの早急の引き継ぎの他、引き継ぎ先ノードで確実にサービスが動作することが重要であり、更にシステムが快適に稼動することが求められる。   In order to reduce the system execution capacity and availability as much as possible, it is important to ensure that the service operates on the takeover destination node, in addition to the mechanism of abnormality detection and immediate takeover to the standby node. It is required to operate comfortably.

そこで従来の技術では、以下のようにして引き継ぎ先ノードが決定される。   Therefore, in the conventional technique, the takeover destination node is determined as follows.

(1)待機系ノードが1台の場合はこれに引き継ぐ
(2)待機系ノードが複数台の場合、次の要素を検討して決定する
2a)予め設定されたノード優先度
2b)アプリケーション(サービス)の依存関係
アプリケーションの依存関係とは、例えば特許文献1に記載されているように、同一ノード内で複数のアプリケーションが並行して実行される場合に、それらのアプリケーションが作用し合うかを示す関係をいう。引き継ぐべきアプリケーションが、待機系ノードで実行されている他のアプリケーションと作用し合う場合、当該待機系ノードは引き継ぎ先として決定されない。
特開2004−133764号公報
(1) Take over if there is one standby node (2) If there are multiple standby nodes, determine by considering the following factors 2a) Preset node priority 2b) Application (service ) Dependency Relationships As shown in Patent Document 1, for example, when a plurality of applications are executed in parallel within the same node, the application dependency relationship indicates whether these applications work together. Say relationship. When an application to be taken over interacts with another application running on the standby node, the standby node is not determined as the takeover destination.
Japanese Patent Application Laid-Open No. 2004-133864

上述のように従来の技術では、引き継ぎ先ノードの決定に、予め設定されたノード優先度や、アプリケーションの依存関係のように、各ノード(サーバ計算機)に関する予め設定される静的な条件のみが用いられる。またアプリケーションに関する条件は依存関係のみである。   As described above, in the conventional technique, only the static conditions set in advance for each node (server computer) such as the node priority set in advance and the application dependency are determined in determining the takeover destination node. Used. The application condition is only dependency.

ところが、このような条件に基づいて決定されるノードが、引き継ぎ先ノードとして必ずしも最適であるとは限らない。即ち、引き継ぎ先ノードとして決定されたノードであっても、例えば、引き継いだアプリケーションの実行によって大量のリソースを消費するような場合には、一時的なリソース不足が起こって実行能力が低くなったり、正常に動作しなかったりすることもあり得る。このようなリソースの消費状況は、引き継がれるべきアプリケーションが引き継ぎ先ノードで実際に起動されて初めて把握される。   However, a node determined based on such conditions is not always optimal as a takeover destination node. That is, even if the node is determined as the takeover destination node, for example, when a large amount of resources is consumed by executing the inherited application, a shortage of resources occurs, and the execution capability becomes low. It may not work properly. Such a resource consumption state is grasped only when an application to be taken over is actually started on the takeover destination node.

本発明は上記事情を考慮してなされたものでその目的は、稼動系ノードで障害が発生した場合に、稼動系ノードでの処理が引き継ぎ先ノードに実際に引き継がれる前に、その引き継ぎ先ノードの候補となる待機系ノードでアプリケーションが稼動可能であるかを評価することによって最適な引き継ぎ先ノードを決定することができるクラスタシステム及び引き継ぎ先ノード決定方法を提供することにある。   The present invention has been made in consideration of the above circumstances, and its purpose is that when a failure occurs in the active node, before the processing in the active node is actually taken over to the takeover destination node, the takeover destination node It is an object of the present invention to provide a cluster system and a takeover destination node determination method capable of determining an optimum takeover destination node by evaluating whether or not an application can be operated on a standby node that is a candidate for the above.

本発明の1つの観点によれば、稼動系ノードとして動作する場合に所定のアプリケーションを稼動させることによりクライアントに対してサービスを提供する、通信路によって相互接続された複数のサーバ計算機と、前記複数のサーバ計算機によって共有される記憶手段とを備えたクラスタシステムにおいて、前記複数のサーバ計算機はそれぞれ、前記通信路を介して連携することにより当該複数のサーバ計算機のクラスタ構成を管理するクラスタ管理手段を有し、前記クラスタ管理手段は、前記アプリケーションとオペレーティングシステムとの間に位置するフック手段であって、当該クラスタ管理手段を有するサーバ計算機が稼動系ノードとして動作している場合、当該稼動系ノードで稼動している前記アプリケーションが使用するアプリケーションプログラムインタフェースをフックして、そのフックされたアプリケーションプログラムインタフェースの実行結果を含む当該アプリケーションプログラムインタフェースに関するアプリケーションプログラムインタフェース情報を取得し、当該取得されたアプリケーションプログラムインタフェース情報を前記記憶手段に格納するフック手段と、当該クラスタ管理手段を有するサーバ計算機が待機系ノードとして動作している状態で前記稼動系ノードで障害が発生した場合、前記記憶手段に格納されているアプリケーションプログラムインタフェース情報で示されるアプリケーションプログラムインタフェースを実行し、その実行結果が正しいかを、当該アプリケーションプログラムインタフェース情報に含まれている実行結果に基づいて判定することにより、当該クラスタ管理手段を有するサーバ計算機で前記アプリケーションを稼動することが可能であるかを評価して、その評価結果に基づき、当該クラスタ管理手段を有するサーバ計算機を、前記障害を発生した稼動系ノードの引き継ぎノードとするかを決定する評価手段とを含む。 According to one aspect of the present invention, a plurality of server computers interconnected by communication paths that provide services to clients by operating a predetermined application when operating as an active node; In the cluster system comprising the storage means shared by the server computers, the plurality of server computers each have cluster management means for managing the cluster configuration of the plurality of server computers by cooperating via the communication path. The cluster management means is a hook means located between the application and the operating system, and when the server computer having the cluster management means is operating as an active node, App used by the running application By hooking the application program interface, the hook means acquires the application program interface information relating to the application program interface including an execution result of the hook application program interface, and stores the application program interface information the acquired in the storage means And an application program interface indicated by application program interface information stored in the storage means when a failure occurs in the active node while the server computer having the cluster management means is operating as a standby node The execution result included in the application program interface information indicates whether the execution result is correct. By determining, based on, and evaluate whether it is possible to run the application on the server computer having the cluster management device, based on the evaluation result, the server computer having the cluster management device, wherein Evaluation means for determining whether to take over the active node that has failed .

本発明によれば、アプリケーションが稼動している稼動系ノードに異常が発生した場合に、稼動系ノードでの処理が引き継ぎ先ノードに実際に引き継がれる前に、その引き継ぎ先ノードの候補となる待機系ノードでアプリケーションが稼動可能であるかが評価され、稼動可能と評価された待機系ノードが引き継ぎ先ノードとして決定される。このため、本発明によれば、アプリケーションの実行失敗による障害発生を減少させることができる。   According to the present invention, when an abnormality occurs in an active node where an application is operating, a standby that is a candidate for the takeover destination node before processing in the active node is actually taken over by the takeover destination node. It is evaluated whether the application can be operated on the system node, and the standby system node evaluated to be operable is determined as the takeover destination node. For this reason, according to the present invention, it is possible to reduce the occurrence of a failure due to an application execution failure.

以下、本発明の実施の形態につき図面を参照して説明する。
[第1の実施形態]
図1は本発明の第1の実施形態に係るクラスタシステムの構成を示すブロック図である。
Embodiments of the present invention will be described below with reference to the drawings.
[First Embodiment]
FIG. 1 is a block diagram showing a configuration of a cluster system according to the first embodiment of the present invention.

図1に示すクラスタシステムは、3台以上のサーバ計算機、例えば3台のサーバ計算機(以下、ノードと称する)10-1,10-2及び10-3から構成される。図1の例では、ノード10-1は稼動系ノードとして動作し、ノード10-2及び10-3は待機系ノードとして動作しているものとする。ノード10-1〜10-3は、ネットワークのような通信路20によって相互接続されている。   The cluster system shown in FIG. 1 includes three or more server computers, for example, three server computers (hereinafter referred to as nodes) 10-1, 10-2 and 10-3. In the example of FIG. 1, it is assumed that the node 10-1 operates as an active node and the nodes 10-2 and 10-3 operate as standby nodes. The nodes 10-1 to 10-3 are interconnected by a communication path 20 such as a network.

ノード10-1〜10-3では、それぞれオペレーティングシステム(OS)11-1〜11-3が動作する。ノード10-1〜10-3ではまた、当該ノード10-1〜10-3が稼動系ノードである場合に、アプリケーション(アプリケーションプログラム)12-1〜12-3が動作する。アプリケーション12-1〜12-3は、ノード10-1〜10-3がクライアントに対して特定のサービスを提供するために、当該ノード10-1〜10-3において実行される。このため図1の例では、ノード10-1〜10-3上のアプリケーション12-1〜12-3のうち、稼動系ノード10-1上のアプリケーション12-1のみが動作しており、待機系ノード10-2及び10-3上のアプリケーション12-2及び12-3は停止している。アプリケーション12-1〜12-3が実行されることによって提供されるサービス(サービスの種類)は同一である。   In the nodes 10-1 to 10-3, operating systems (OS) 11-1 to 11-3 operate, respectively. In the nodes 10-1 to 10-3, applications (application programs) 12-1 to 12-3 operate when the nodes 10-1 to 10-3 are active nodes. The applications 12-1 to 12-3 are executed in the nodes 10-1 to 10-3 in order for the nodes 10-1 to 10-3 to provide specific services to the clients. Therefore, in the example of FIG. 1, among the applications 12-1 to 12-3 on the nodes 10-1 to 10-3, only the application 12-1 on the active node 10-1 is operating, and the standby system Applications 12-2 and 12-3 on nodes 10-2 and 10-3 are stopped. The services (service types) provided by executing the applications 12-1 to 12-3 are the same.

ノード10-1〜10-3は、それぞれ、クラスタ管理部13-1〜13-3及びアプリケーションプログラムインタフェース情報記憶部(以下、API情報記憶部と称する)14-1〜14-3を有する。第1の実施形態においクラスタ管理部13-1〜13-3は、通信路20を介して連携することにより、ノード10-1〜10-3のクラスタ構成を管理する。ノード10-i(i=1,2,3)のクラスタ管理部13-iは、ノード10-i内の図示せぬCPUが、ディスクのような記憶媒体に格納されているクラスタソフトウェアと呼ばれるソフトウェアプログラムを例えば当該ノード10-i内の主メモリに読み込んで実行することにより実現されるものとする。   The nodes 10-1 to 10-3 include cluster management units 13-1 to 13-3 and application program interface information storage units (hereinafter referred to as API information storage units) 14-1 to 14-3, respectively. In the first embodiment, the cluster management units 13-1 to 13-3 manage the cluster configuration of the nodes 10-1 to 10-3 by cooperating with each other via the communication path 20. The cluster management unit 13-i of the node 10-i (i = 1, 2, 3) is a software called cluster software stored in a storage medium such as a disk by a CPU (not shown) in the node 10-i. It is assumed that the program is realized by, for example, reading the program into the main memory in the node 10-i and executing it.

図2は、ノード10-i(i=1,2,3)の構成(特にノード10-i内のクラスタ管理部13-iの構成)を示すブロック図である。クラスタ管理部13-iは、クラスタ制御部131、アプリケーション制御部(以下、アプリ制御部と称する)132、監視部133、アプリケーションプログラムインタフェースフック部(以下、APIフック部と称する)134及び評価部135を含む。   FIG. 2 is a block diagram showing the configuration of the node 10-i (i = 1, 2, 3) (particularly the configuration of the cluster management unit 13-i in the node 10-i). The cluster management unit 13-i includes a cluster control unit 131, an application control unit (hereinafter referred to as an application control unit) 132, a monitoring unit 133, an application program interface hook unit (hereinafter referred to as an API hook unit) 134, and an evaluation unit 135. including.

クラスタ制御部131は、アプリ制御部132、監視部133、APIフック部134及び評価部135を制御することによって、クラスタシステム内のノード10-1〜10-3のクラスタ構成を制御する。クラスタ制御部131は、他のノードのクラスタ制御部131と通信路20を介して相互に通信を行うことで、他のノードの障害を検知する。このクラスタ制御部131相互間のノード障害検知のための通信はハートビート通信と呼ばれる。   The cluster control unit 131 controls the cluster configuration of the nodes 10-1 to 10-3 in the cluster system by controlling the application control unit 132, the monitoring unit 133, the API hook unit 134, and the evaluation unit 135. The cluster control unit 131 detects a failure of the other node by communicating with the cluster control unit 131 of the other node via the communication path 20. This communication for detecting a node failure between the cluster control units 131 is called heartbeat communication.

アプリ制御部132は、クラスタ管理部13-1の制御の下でアプリケーション12-iの起動/停止を制御する。
監視部133は、アプリケーション12-iの状態を監視することによって当該アプリケーション12-iの異常を検知する。監視部133をクラスタ制御部131に含めることも可能である。
The application control unit 132 controls the start / stop of the application 12-i under the control of the cluster management unit 13-1.
The monitoring unit 133 detects an abnormality of the application 12-i by monitoring the state of the application 12-i. The monitoring unit 133 can be included in the cluster control unit 131.

APIフック部134は、例えば論理的に、アプリケーション12-iとOS11-iとの間に位置する。APIフック部134は、ノード10-iが稼動系ノードの場合、アプリケーション12-iが使用するAPIをフックするように構成されている。第1の実施形態においてAPIは関数(システム関数)であり、予めOS11-iに用意されている。APIフック部134は、自身がフックしたAPIに関する情報(以下、API情報と称する)をAPI情報記憶部14-1に時系列順に格納する。API情報は、APIフック部134によってフックされた関数(API)の関数名と、当該関数に渡されるべき(つまり当該関数の実行に用いられるべき)入力値である引数(OS11-iに渡される引数)と、当該関数の実行の結果としての出力値(OS11-iからの出力値)である返り値とを含む。   The API hook unit 134 is logically positioned between the application 12-i and the OS 11-i, for example. The API hook unit 134 is configured to hook an API used by the application 12-i when the node 10-i is an active node. In the first embodiment, the API is a function (system function) and is prepared in advance in the OS 11-i. The API hook unit 134 stores information related to the API hooked by itself (hereinafter referred to as API information) in the API information storage unit 14-1 in chronological order. The API information is passed to the function name (API) hooked by the API hook unit 134 and an argument (OS11-i) that is an input value to be passed to the function (that is, to be used for execution of the function). Argument) and a return value that is an output value (output value from the OS 11-i) as a result of execution of the function.

API情報記憶部14-iに格納されたAPI情報、つまりノード10-iが稼動系ノードである場合に、当該ノード10-i内のAPIフック部134によって取得されたAPI情報(アプリケーション12-iが使用した関数の関数名を含むAPI情報)は、ノード10-i内のクラスタ制御部131によって、クラスタシステムを構成する他の全てのノード(つまり待機系ノード)のクラスタ制御部に転送される。転送されたAPI情報は、上記待機系ノードのAPI情報記憶部に格納される。   API information stored in the API information storage unit 14-i, that is, when the node 10-i is an active node, API information (application 12-i acquired by the API hook unit 134 in the node 10-i). API information including the function name of the function used by the node 10-i is transferred by the cluster control unit 131 in the node 10-i to the cluster control units of all other nodes (that is, standby nodes) constituting the cluster system. . The transferred API information is stored in the API information storage unit of the standby node.

ノード10-i内の評価部135は、稼動系ノードの異常が検知され、且つ当該ノード10-iが待機系ノードの場合に、API情報記憶部14-iに格納されているAPI情報の示す関数(API)を実行することによって、当該ノード10-iが引き継ぎ先ノードとなり得るかを評価するように構成されている。第1の実施形態において、引き継ぎ先ノードとなり得るノードとは、アプリケーションを稼動することが可能ノードをいう。 The evaluation unit 135 in the node 10-i indicates the API information stored in the API information storage unit 14-i when an abnormality of the active node is detected and the node 10-i is a standby node. By executing a function (API), it is configured to evaluate whether the node 10-i can be a takeover destination node. In the first embodiment, a node that can be a takeover destination node is a node capable of operating an application.

評価部135による上述の評価の仕組みは次の通りである。評価部135は、API情報記憶部14-iに格納されているAPI情報の示す関数(つまり稼動系ノードのAPIフック部134によってフックされた関数)をOS11-iを介して実行する。第1の実施形態において評価部135によって実行される関数は、API情報記憶部14-iに格納されているAPI情報の示す全ての関数ではなく、例えば、使用頻度の高い関数、或いはリソースを大量に消費する関数のような、アプリケーション12-iの動作に大きな影響のある関数(API)に限られるものとする。したがってAPIフック部134が、このような関数だけを選択的にフックする構成とすることもできる。リソースを大量に消費する関数として、メモリ確保関数(例えばmalloc関数、realloc関数)や、スレッド作成関数(CreateThread関数)が挙げられる。   The above-described evaluation mechanism by the evaluation unit 135 is as follows. The evaluation unit 135 executes the function indicated by the API information stored in the API information storage unit 14-i (that is, the function hooked by the API hook unit 134 of the active node) via the OS 11-i. The functions executed by the evaluation unit 135 in the first embodiment are not all the functions indicated by the API information stored in the API information storage unit 14-i, but, for example, a frequently used function or a large amount of resources It is assumed that the function is limited to a function (API) that has a large influence on the operation of the application 12-i, such as a function consumed by the application. Therefore, the API hook unit 134 may be configured to selectively hook only such a function. Examples of functions that consume a large amount of resources include a memory allocation function (for example, a malloc function, a realloc function) and a thread creation function (CreateThread function).

評価部135は、関数の実行によってOS11-iから返される値(返り値)が正しいかによって、ノード10-iでアプリケーション12-iを稼動することが可能かを評価する。評価部135の評価結果は、クラスタ制御部131に通知される。待機系ノードのクラスタ制御部131は、相互に評価部135の判定結果を通知する。これにより各待機系ノード内の評価部135は、当該各待機系ノード内の評価部135の評価結果に基づいて、いずれの待機系ノードが引き継ぎ先ノードとして最適かを決定する。なお、第1の実施形態と異なって待機系ノードが1台の場合には、その唯一の待機系ノードでアプリケーションが稼動可能であれば、当該ノードが引き継ぎ先ノードとして決定される。   The evaluation unit 135 evaluates whether or not the application 12-i can be operated on the node 10-i depending on whether the value (return value) returned from the OS 11-i by executing the function is correct. The evaluation result of the evaluation unit 135 is notified to the cluster control unit 131. The cluster control unit 131 of the standby node notifies the determination result of the evaluation unit 135 to each other. Thereby, the evaluation unit 135 in each standby node determines which standby node is optimal as the takeover destination node based on the evaluation result of the evaluation unit 135 in each standby node. Note that, unlike the first embodiment, when there is one standby node, if the application can operate on that single standby node, the node is determined as the takeover destination node.

次に、第1の実施形態の動作について、図1の例のように、ノード10-1が稼動系ノードとして動作し、ノード10-2及び10-3が待機系ノードとして動作している場合を例に説明する。   Next, with respect to the operation of the first embodiment, as in the example of FIG. 1, the node 10-1 operates as an active node and the nodes 10-2 and 10-3 operate as standby nodes. Will be described as an example.

<稼動系ノード内のAPIフック部の動作>
まず、稼動系ノード10-1内のAPIフック部134の動作について、図3のフローチャートを参照して説明する。
<Operation of API hook in active node>
First, the operation of the API hook unit 134 in the active node 10-1 will be described with reference to the flowchart of FIG.

稼動系ノード10-1内のAPIフック部134は、当該ノード10-1で動作するアプリケーション12-1によって呼び出される(コールされる)API(ここではAPIフック部134によって管理されているAPI)をフックする(つかまえる)(ステップS1,S2)。これによりアプリケーション12-1からのAPIの呼び出しが直接アプリケーション12-1に伝えられるのが抑止される。APIフック部134は、フックしたAPI(関数)に関する情報として、当該関数の関数名と、引数と、返り値(つまりAPI)情報を含むAPI情報を取得する(ステップS3)。   The API hook unit 134 in the active node 10-1 is an API that is called (called) by the application 12-1 operating on the node 10-1 (here, an API managed by the API hook unit 134). Hook (catch) (steps S1, S2). As a result, the API call from the application 12-1 is prevented from being directly transmitted to the application 12-1. The API hook unit 134 acquires API information including a function name, an argument, and return value (that is, API) information of the function as information on the hooked API (function) (step S3).

APIフック部134は取得されたAPI情報を、API情報記憶部14-1に格納する(ステップS4)。またAPIフック部134は、取得されたAPI情報を、稼動系ノード10-1内のクラスタ制御部131によって待機系ノード10-2及び10-3に転送させる(ステップS5)。   The API hook unit 134 stores the acquired API information in the API information storage unit 14-1 (step S4). The API hook unit 134 causes the cluster control unit 131 in the active node 10-1 to transfer the acquired API information to the standby nodes 10-2 and 10-3 (step S5).

稼動系ノード10-1内のクラスタ制御部131によって待機系ノード10-2及び10-3に転送されたAPI情報は、当該待機系ノード10-2及び10-3内のクラスタ制御部131によって、それぞれAPI情報記憶部14-2及び14-3に格納される。これにより、稼動系ノード10-1内のAPIフック部134によって取得されたAPI情報は、当該稼動系ノード10-1及び待機系ノード10-2及び10-3によって共有される。つまり、API情報記憶部14-1乃至14-3は、論理的に共有API情報記憶部を構成する。   The API information transferred to the standby nodes 10-2 and 10-3 by the cluster controller 131 in the active node 10-1 is transferred by the cluster controller 131 in the standby nodes 10-2 and 10-3. They are stored in the API information storage units 14-2 and 14-3, respectively. Thus, the API information acquired by the API hook unit 134 in the active node 10-1 is shared by the active node 10-1 and the standby nodes 10-2 and 10-3. That is, the API information storage units 14-1 to 14-3 logically constitute a shared API information storage unit.

第1の実施形態では、作図の都合で、ノード10-1〜10-3が、それぞれAPI情報記憶部14-1〜14-3を有している。しかし、ノード10-1〜10-3が、それぞれAPI情報記憶部14-1〜14-3を持つ代わりに、当該ノード10-1〜10-3によって共有される共有ストレージ装置(の記憶領域)内に、API情報記憶部(つまり共有API情報記憶部)が確保される構成としてもよい。この場合、ノード10-1(稼動系ノード10-1)のAPIフック部134がAPI情報を共有ストレージ装置のAPI情報記憶部に格納するだけで、ノード10-1〜10-3は当該API情報を共有することができる。   In the first embodiment, the nodes 10-1 to 10-3 have API information storage units 14-1 to 14-3, respectively, for the convenience of drawing. However, instead of the nodes 10-1 to 10-3 having the API information storage units 14-1 to 14-3, the shared storage devices (storage areas) shared by the nodes 10-1 to 10-3 The API information storage unit (that is, the shared API information storage unit) may be ensured. In this case, the API hook unit 134 of the node 10-1 (active node 10-1) simply stores the API information in the API information storage unit of the shared storage device, and the nodes 10-1 to 10-3 can receive the API information. Can be shared.

稼動系ノード10-1内のAPIフック部134の詳細について、図4の動作説明図を参照して説明する。
アプリケーション12-iは自身が呼び出すべき関数(API)の関数名のリストである関数テーブル120を含んでいる。この関数テーブル120は、アプリケーション12-iが本来呼び出すべき第1の関数(第1のAPI)の関数名、及び当該第1の関数に予め対応付けられた第2の関数(第2のAPI)の関数名の対のリストを保持する。
Details of the API hook unit 134 in the active node 10-1 will be described with reference to the operation explanatory diagram of FIG.
The application 12-i includes a function table 120 that is a list of function names of functions (API) to be called by the application 12-i. The function table 120 includes a function name of a first function (first API) that the application 12-i should call and a second function (second API) associated with the first function in advance. Holds a list of function name pairs.

図4の例では、関数テーブル120に保持されるリストは、第1の関数fun1()の関数名及び第2の関数fun1′()の関数名の対と、第1の関数fun2()の関数名及び第2の関数fun2′()の関数名の対とを含む。OS11-1には、このリストで示される関数fun1()及びfun2()を含む第1の関数の集合(第1の集合)が予めAPIの集合として用意されている。一方、APIフック部134には、関数fun1′()及びfun2′()を含む第2の関数の集合が予めAPIの集合として用意されている。APIフック部134において、関数fun1′()及びfun2′()の関数名は関数fun1()及びfun2()の関数名と対応付けて管理されている。   In the example of FIG. 4, the list held in the function table 120 includes a pair of a function name of the first function fun1 () and a function name of the second function fun1 ′ (), and a list of the first function fun2 (). A function name and a function name pair of the second function fun2 ′ () are included. In the OS 11-1, a first function set (first set) including functions fun1 () and fun2 () shown in this list is prepared in advance as an API set. On the other hand, in the API hook unit 134, a second function set including functions fun1 ′ () and fun2 ′ () is prepared in advance as a set of APIs. In the API hook unit 134, the function names of the functions fun1 ′ () and fun2 ′ () are managed in association with the function names of the functions fun1 () and fun2 ().

今、アプリケーション12-1が第1の関数fun1()を呼び出したいものとする。第1の実施形態において、アプリケーション12-1が呼び出そうとする第1の関数(の関数名)に第2の関数(の関数名)が関数テーブル120によって対応付けられている場合、当該アプリケーション12-iは第2の関数を呼び出す。これにより、例えば関数fun1()の呼び出しが必要な場合であれば、関数fun1′()の呼び出しが行われる。関数fun1()の呼び出しに用いられる引数は、そのまま関数fun1′()の呼び出しに用いられる(継承される)。この引数は、例えば整数(Integer)型(INT型)のXXであるものとする。   Assume that the application 12-1 wants to call the first function fun1 (). In the first embodiment, when the second function (function name) is associated with the first function (function name) to be called by the application 12-1 by the function table 120, the application 12-1 12-i calls the second function. Thus, for example, if the function fun1 () needs to be called, the function fun1 '() is called. The argument used for calling the function fun1 () is used (inherited) as it is for calling the function fun1 '(). This argument is, for example, an integer (INT type) XX.

上記したように、関数fun1′()はAPIフック部134に予め用意されている。そこでAPIフック部134は、関数fun1()に対応付けられた関数fun1′()の呼び出しがアプリケーション12-1によって行われると、図4において矢印41で示されるように、当該fun1′()の呼び出しをフックする。これによりAPIフック部134では、関数fun1′()が呼び出されて実行される。   As described above, the function fun1 ′ () is prepared in the API hook unit 134 in advance. Therefore, when the function fun1 ′ () associated with the function fun1 () is called by the application 12-1, the API hook unit 134, as shown by the arrow 41 in FIG. Hook the call. As a result, in the API hook unit 134, the function fun1 ′ () is called and executed.

APIフック部134は、関数fun1′()の実行により、当該関数fun1′()に対応付けられた関数fun1()の関数名と、当該関数fun1′()に継承された引数(つまり関数fun1()を呼び出すために用いられる入力値である引数(XX))とを取得する。そしてAPIフック部134は、関数fun1′()に対応付けられた関数fun1()の呼び出し、つまりアプリケーション12-1が本来行うべき関数fun1()の呼び出しを、図4において矢印42で示すように、当該アプリケーション12-1に代わって行う。この呼び出しにより、OS11-1に用意されている関数fun1()が呼び出され、当該関数fun1()に上記取得された引数(XX)が渡される。   By executing the function fun1 ′ (), the API hook unit 134 executes a function name of the function fun1 () associated with the function fun1 ′ () and an argument inherited by the function fun1 ′ () (that is, the function fun1 Argument (XX)) which is an input value used to call () is acquired. Then, the API hook unit 134 calls the function fun1 () associated with the function fun1 ′ (), that is, the call of the function fun1 () that should be originally performed by the application 12-1 as indicated by an arrow 42 in FIG. In place of the application 12-1. By this call, the function fun1 () prepared in the OS 11-1 is called, and the acquired argument (XX) is passed to the function fun1 ().

するとOS11-1では、呼び出された関数fun1()(つまり、APIフック部134からの呼び出しに応じて呼び出された関数fun1())が、APIフック部134を介して渡されたアプリケーション12-1からの引数(XX)に基づいて実行される。OS11-1による関数fun1()の実行結果を示す、当該OS11-1(関数fun1())からの出力値(つまり返り値)は、図4において矢印43で示すように、当該関数fun1()の直接の呼び出し元であるAPIフック部134に返される。この返り値は、例えば整数型(INT型)のYYであるものとする。   Then, in the OS 11-1, the called function fun1 () (that is, the function fun1 () called in response to the call from the API hook unit 134) is passed through the API hook unit 134. It is executed based on the argument (XX) from An output value (that is, a return value) from the OS 11-1 (function fun1 ()) indicating the execution result of the function fun1 () by the OS 11-1 is the function fun1 () as shown by an arrow 43 in FIG. Is returned to the API hook unit 134 which is a direct caller of the API. This return value is assumed to be YY of an integer type (INT type), for example.

APIフック部134は、OS11-1から返される、当該OS11-1による関数fun1()の実行結果である返り値(YY)を取得する。APIフック部134は、取得された返り値(YY)を、図4において矢印44で示されるように、アプリケーション12-1に返す。   The API hook unit 134 obtains a return value (YY) that is returned from the OS 11-1 and is the execution result of the function fun1 () by the OS 11-1. The API hook unit 134 returns the acquired return value (YY) to the application 12-1 as indicated by the arrow 44 in FIG.

以上の動作は、アプリケーション12-1にとっては、図4において矢印45で示されるように、アプリケーション12-1からOS11-1に対して関数fun1()の呼び出しを行い、図4において矢印46で示されるように、関数fun1()の実行結果である返り値(YY)をアプリケーション12-1がOS11-1(関数fun1())から受け取ったことと等価である。   For the application 12-1, the application 12-1 calls the function fun1 () from the application 12-1 to the OS 11-1 as shown by the arrow 45 in FIG. As shown, the return value (YY), which is the execution result of the function fun1 (), is equivalent to the application 12-1 receiving from the OS 11-1 (function fun1 ()).

さてAPIフック部134は、アプリケーション12-1からの関数fun1′()の呼び出しをフックした際に取得された、当該fun1′()が対応付けられた関数fun1()の関数名及び当該関数fun1()に渡されるべき引数(XX)と、当該関数fun1()をOS11-1から呼び出すことによって当該OS11-1から取得された返り値(YY)とを含むAPI情報を、図4において矢印47で示されるように、API情報記憶部14-1に格納する。   The API hook unit 134 acquires the function name of the function fun1 () associated with the fun1 ′ () and the function fun1 acquired when hooking the function fun1 ′ () call from the application 12-1. API information including an argument (XX) to be passed to () and a return value (YY) obtained from the OS 11-1 by calling the function fun1 () from the OS 11-1 is shown by an arrow 47 in FIG. Is stored in the API information storage unit 14-1.

APIフック部134が関数fun1()の関数名、引数(XX)及び返り値(YY)を取得する動作は、当該APIフック部134がアプリケーション12-1の使用する関数fun1()をフックして、当該関数fun1()の関数名及び当該関数fun1()の引数(関数fun1()の実行に関する入力値)と、当該関数fun1()の実行結果である返り値(YY)とを取得することと等価である。   The API hook unit 134 acquires the function name, argument (XX), and return value (YY) of the function fun1 () by hooking the function fun1 () used by the application 12-1. The function name of the function fun1 (), the argument of the function fun1 () (input value related to the execution of the function fun1 ()), and the return value (YY) that is the execution result of the function fun1 () Is equivalent to

以上に述べた稼動系ノード10-1内のAPIフック部134の動作は、アプリケーション12-1から第1の関数に対応付けられた第2の関数の呼び出しが行われる都度実行される。これにより、ノード10-1〜10-3内のそれぞれAPI情報記憶部14-1〜14-3には、アプリケーション12-1が使用する第1の関数の各々について、関数名と入出力値である引数及び返り値とを含むAPI情報が蓄積される。   The operation of the API hook unit 134 in the active node 10-1 described above is executed every time the second function associated with the first function is called from the application 12-1. As a result, the API information storage units 14-1 to 14-3 in the nodes 10-1 to 10-3 have the function names and input / output values for each of the first functions used by the application 12-1. API information including an argument and a return value is accumulated.

このような状態で、稼動系ノード10-1に障害が発生したものとする。ここでは稼動系ノード10-1の障害として、ノード10-1内のアプリケーション12-1に異常が発生した場合を想定している。稼動系ノード10-1内の監視部133は、アプリケーション12-1の異常を検知すると、その旨を当該ノード10-1内のクラスタ制御部131に通知する。   Assume that a failure has occurred in the active node 10-1 in such a state. Here, it is assumed that an abnormality has occurred in the application 12-1 in the node 10-1 as a failure of the active node 10-1. When the monitoring unit 133 in the active node 10-1 detects an abnormality in the application 12-1, the monitoring unit 133 notifies the cluster control unit 131 in the node 10-1 to that effect.

稼動系ノード10-1内のクラスタ制御部131は、監視部133からアプリケーション12-1の異常が通知されると、待機系ノード10-2及び10-3内のクラスタ制御部131に、その旨を通知する。この通知に応じて待機系ノード10-2及び10-3内のクラスタ制御部131は、当該ノード10-2及び10-3内の評価部135に、それぞれ当該ノード10-2及び10-3が引き継ぎ先ノードとなり得るか、つまりアプリケーション12-2及び12-3を稼動することが可能かを評価するように要求する。   When the cluster control unit 131 in the active node 10-1 is notified of the abnormality of the application 12-1 from the monitoring unit 133, the cluster control unit 131 in the standby nodes 10-2 and 10-3 notifies the fact. To be notified. In response to this notification, the cluster control unit 131 in the standby nodes 10-2 and 10-3 sends the evaluation unit 135 in the nodes 10-2 and 10-3 to the nodes 10-2 and 10-3, respectively. It is requested to evaluate whether it can become a takeover destination node, that is, whether the applications 12-2 and 12-3 can be run.

なお、稼動系ノード10-1においてアプリケーション12-1の異常以外の障害が発生した場合、例えば稼動系ノード10-1のハードウェア障害が発生した場合には、稼動系ノード10-1のクラスタ制御部131は、待機系ノード10-2及び10-3内のクラスタ制御部131との間でハートビート通信を行うことができなくなる。そこで、待機系ノード10-2及び10-3内のクラスタ制御部131は、稼動系ノード10-1内のクラスタ制御部131との間のハートビート通信が途絶えたことをもって、当該稼動系ノード10-1の障害を検知することができる。   When a failure other than an abnormality of the application 12-1 occurs in the active node 10-1, for example, when a hardware failure occurs in the active node 10-1, the cluster control of the active node 10-1 is performed. The unit 131 cannot perform heartbeat communication with the cluster control unit 131 in the standby nodes 10-2 and 10-3. Therefore, the cluster control unit 131 in the standby nodes 10-2 and 10-3 has lost the heartbeat communication with the cluster control unit 131 in the active node 10-1, and the active node 10 -1 failure can be detected.

<待機系ノード内の評価部の動作>
待機系ノード10-2及び10-3内の評価部135は、待機系ノード10-2及び10-3内のクラスタ制御部131から評価要求を受け取ると、それぞれAPI情報記憶部14-2及び14-3(つまり論理的な共有API情報記憶部)に格納されているAPI情報(つまり、稼動系ノード10-1内のAPIフック部134によって取得されたAPI情報)に基づき、当該API情報の示す関数(API)を実行することによって、当該ノード10-2及び10-3自身についての要求された評価を行う。
<Operation of the evaluation unit in the standby node>
When the evaluation unit 135 in the standby nodes 10-2 and 10-3 receives the evaluation request from the cluster control unit 131 in the standby nodes 10-2 and 10-3, the API information storage units 14-2 and 14 respectively. -3 (that is, the logical shared API information storage unit), based on the API information (that is, the API information acquired by the API hook unit 134 in the active node 10-1), By executing the function (API), the requested evaluation of the nodes 10-2 and 10-3 itself is performed.

第1の実施形態において評価部135によって実行される関数は、API情報記憶部14-iに格納されているAPI情報の示す全ての関数ではなく、例えば、リソースを大量に消費する関数のような、アプリケーション12-iの動作に大きな影響のある関数(API)に限られる。したがってAPIフック部134が、このような関数だけを選択的にフックする構成とすることもできる。リソースを大量に消費する関数としては、前述したように、メモリ確保関数やスレッド作成関数などが知られている。   The functions executed by the evaluation unit 135 in the first embodiment are not all the functions indicated by the API information stored in the API information storage unit 14-i but, for example, functions that consume a large amount of resources. The function (API) has a great influence on the operation of the application 12-i. Therefore, the API hook unit 134 may be configured to selectively hook only such a function. As functions that consume a large amount of resources, as described above, a memory allocation function, a thread creation function, and the like are known.

以下、評価部135による評価処理の手順について、待機系ノード10-2内の評価部135の動作を例に、図5のフローチャートを参照して説明する。
まず評価部135は、API情報記憶部14-2から、実行されるべきAPI情報(詳細には、実行されるべき関数の関数名及び引数を含むAPI情報)を選択する(ステップS11)。評価部135は、選択されたAPI情報中の関数名と引数とを用いて、当該関数名で示される関数(API)の呼び出しを行う(ステップS12)。
Hereinafter, the procedure of the evaluation process by the evaluation unit 135 will be described with reference to the flowchart of FIG. 5 by taking the operation of the evaluation unit 135 in the standby node 10-2 as an example.
First, the evaluation unit 135 selects API information to be executed (specifically, API information including the function name and argument of the function to be executed) from the API information storage unit 14-2 (step S11). Using the function name and argument in the selected API information, the evaluation unit 135 calls the function (API) indicated by the function name (step S12).

OS11-2は、評価部135による呼び出しに応じ、呼び出された関数に、当該関数の呼び出しに用いられた引数を適用することで、当該関数を実行する。そしてOS11-2(呼び出された関数)は、呼び出された関数の実行の結果である返り値を評価部135に返す。これにより評価部135は、自身が呼び出した関数の実行の結果である返り値を取得する(ステップS13)。つまり評価部135は、選択されたAPI情報中の関数名で示される関数を実行することにより、関数の実行の結果である返り値を取得する。   In response to the call by the evaluation unit 135, the OS 11-2 applies the argument used for calling the function to the called function to execute the function. Then, the OS 11-2 (the called function) returns a return value, which is a result of executing the called function, to the evaluation unit 135. As a result, the evaluation unit 135 acquires a return value that is a result of executing the function that it calls (step S13). That is, the evaluation unit 135 acquires a return value that is a result of the execution of the function by executing the function indicated by the function name in the selected API information.

評価部135は、取得された返り値が正しいかを判定する(ステップS14)。このステップS14での判定は、次のように行われる。まず、取得された返り値が選択されたAPI情報中の返り値と比較される。そして、両返り値が同じであるならば、取得された返り値は正しいと判定される。これに対し、両返り値が異なっているならば、取得された返り値は誤っていると判定される。   The evaluation unit 135 determines whether the acquired return value is correct (step S14). The determination in step S14 is performed as follows. First, the obtained return value is compared with the return value in the selected API information. If the two return values are the same, it is determined that the acquired return value is correct. On the other hand, if the two return values are different, it is determined that the acquired return value is incorrect.

ところで、返り値の「型」は様々である。例えば返り値の型が整数型のように、選択されたAPI情報中の返り値と比較可能な場合には、上述の判定手法を適用することができる。しかし、比較ができない「型」の返り値もある。そこで、比較ができないような「型」の返り値が返される関数に関するAPI情報は、例えばステップS11での選択の対象から外せばよい。また、値の比較ができないような「型」の返り値の場合に、取得された返り値自体が、対応する関数の実行に成功したと見なせるか否かによって、当該返り値が正しいかを判定するようにしても構わない。例えば「RegOpenKeyEx」というレジストリ操作関数は、レジストリのハンドルを返す。したがって、レジストリ操作関数の実行の場合、返り値として「ハンドル」が返されたなら、当該返り値が正しいと判定するようにしても構わない。   By the way, there are various types of return values. For example, when the return value type is an integer type and can be compared with the return value in the selected API information, the above-described determination method can be applied. However, there are some "type" return values that cannot be compared. Therefore, API information related to a function that returns a “type” return value that cannot be compared may be excluded from the selection target in step S11, for example. Also, in the case of a “type” return value that cannot be compared, it is determined whether the return value is correct depending on whether or not the obtained return value itself can be considered successful in executing the corresponding function. You may make it. For example, a registry operation function “RegOpenKeyEx” returns a handle of the registry. Therefore, in the case of executing the registry operation function, if “handle” is returned as a return value, it may be determined that the return value is correct.

さて、取得された返り値が正しくないと、上記ステップS14において判定された場合、評価部135は待機系ノード10-2でのアプリケーション12-2の稼動が不可であることを示す評価結果を、当該ノード10-2内のクラスタ制御部131に通知する(ステップS15)。するとクラスタ制御部131は、この評価部135による評価結果を、他の待機系ノードであるノード10-3のクラスタ制御部131に通知する。待機系ノード10-3内のクラスタ制御部131は、待機系ノード10-2内のクラスタ制御部131から通知された評価結果を当該ノード10-3内の評価部135に送る。   When the obtained return value is not correct, if it is determined in step S14, the evaluation unit 135 obtains an evaluation result indicating that the operation of the application 12-2 on the standby node 10-2 is not possible. The cluster control unit 131 in the node 10-2 is notified (step S15). Then, the cluster control unit 131 notifies the evaluation result by the evaluation unit 135 to the cluster control unit 131 of the node 10-3 that is another standby node. The cluster control unit 131 in the standby node 10-3 sends the evaluation result notified from the cluster control unit 131 in the standby node 10-2 to the evaluation unit 135 in the node 10-3.

評価部135はステップS15を実行した場合、待機系ノード10-2でアプリケーション12-2を稼動することはできず、当該ノード10-2は引き継ぎ先ノードとして不適であると決定する(ステップS16)。この評価部135の決定結果は待機系ノード10-2内のクラスタ制御部131に通知される(ステップS20)。   When executing step S15, the evaluation unit 135 cannot operate the application 12-2 on the standby node 10-2, and determines that the node 10-2 is not suitable as a takeover destination node (step S16). . The determination result of the evaluation unit 135 is notified to the cluster control unit 131 in the standby node 10-2 (step S20).

これに対し、取得された返り値が正しいと、上記ステップS14において判定された場合、評価部135は、実行されるべきAPI情報を全て実行したかを判定する(ステップS17)。もし、実行されるべきAPI情報(未選択のAPI情報)があるならば(ステップS17)、評価部135は当該未選択のAPI情報を選択して(ステップS11)、ステップS12以降の処理を行う。   On the other hand, when it is determined in step S14 that the acquired return value is correct, the evaluation unit 135 determines whether all API information to be executed has been executed (step S17). If there is API information (unselected API information) to be executed (step S17), the evaluation unit 135 selects the unselected API information (step S11), and performs the processing after step S12. .

一方、実行されるべき未選択のAPI情報がないならば(ステップS17)、評価部135は、実行されるべきAPI情報は全て選択されて、当該API情報の示す全ての関数の実行により取得された返り値はいずれも正しかったと判断する。この場合、評価部135は、待機系ノード10-2でのアプリケーション(ここではアプリケーション12-2)の稼動が可能であることを示す評価結果を、当該ノード10-2内のクラスタ制御部131に通知する(ステップS18)。すると待機系ノード10-2内のクラスタ制御部131は、評価部135の評価結果を、他の待機系ノードであるノード10-3のクラスタ制御部131に通知する。待機系ノード10-3内のクラスタ制御部131は、待機系ノード10-2内のクラスタ制御部131から通知された評価結果を当該ノード10-3内の評価部135に送る。   On the other hand, if there is no unselected API information to be executed (step S17), the evaluation unit 135 selects all the API information to be executed and is acquired by executing all the functions indicated by the API information. It is determined that all the return values are correct. In this case, the evaluation unit 135 sends an evaluation result indicating that the application (here, the application 12-2) on the standby node 10-2 can be operated to the cluster control unit 131 in the node 10-2. Notification is made (step S18). Then, the cluster control unit 131 in the standby node 10-2 notifies the evaluation result of the evaluation unit 135 to the cluster control unit 131 of the node 10-3 that is another standby node. The cluster control unit 131 in the standby node 10-3 sends the evaluation result notified from the cluster control unit 131 in the standby node 10-2 to the evaluation unit 135 in the node 10-3.

待機系ノード10-3においても、待機系ノード10-2と同様の処理が行われ、当該ノード10-3内の評価部135による評価結果、つまりノード10-3でアプリケーション12-3を稼動することが可能であるかの評価結果が、待機系ノード10-2内のクラスタ制御部131に通知される。待機系ノード10-2内のクラスタ制御部131は、待機系ノード10-3についての評価結果を、当該待機系ノード10-2内の評価部135に通知する。   In the standby node 10-3, processing similar to that in the standby node 10-2 is performed, and the evaluation result by the evaluation unit 135 in the node 10-3, that is, the application 12-3 is operated on the node 10-3. The cluster control unit 131 in the standby node 10-2 is notified of the evaluation result of whether it is possible. The cluster control unit 131 in the standby node 10-2 notifies the evaluation result of the standby node 10-3 to the evaluation unit 135 in the standby node 10-2.

待機系ノード10-2内の評価部135はステップS18を実行すると、当該ノード10-2を含む各待機系ノード(ここでは待機系ノード10-2及び10-3)の評価結果に基づき、当該ノード10-2が引き継ぎ先ノードとして最適かを決定(判定)する(ステップS19)。もし、待機系ノード10-2及び10-3の評価結果が、いずれもアプリケーションの稼動が可能であることを示す場合、待機系ノード10-2内の評価部135は、当該ノード10-2の方が予め定められた優先度が高いかによって、当該ノード10-2が引き継ぎ先ノードとして最適かを決定する。これに対し、待機系ノード10-2及び10-3の評価結果のうち、待機系ノード10-2の評価結果のみアプリケーションの稼動が可能であることを示す場合、当該待機系ノード10-2内の評価部135は、当該ノード10-2が引き継ぎ先ノードとして最適であると決定する。   When the evaluation unit 135 in the standby node 10-2 executes step S18, based on the evaluation result of each standby node including the node 10-2 (here, the standby nodes 10-2 and 10-3), It is determined (determined) whether the node 10-2 is optimal as a takeover destination node (step S19). If the evaluation results of the standby nodes 10-2 and 10-3 indicate that the application can be operated, the evaluation unit 135 in the standby node 10-2 determines that the node 10-2 Whether the node 10-2 is optimal as a takeover destination node is determined depending on whether the predetermined priority is higher. On the other hand, in the evaluation results of the standby nodes 10-2 and 10-3, when only the evaluation result of the standby node 10-2 indicates that the application can be operated, The evaluation unit 135 determines that the node 10-2 is optimal as the takeover destination node.

評価部135は、ステップS19における決定結果を待機系ノード10-2内のクラスタ制御部131に通知する。待機系ノード10-2内のクラスタ制御部131は、当該ノード10-2が引き継ぎ先ノードとして最適であると決定された場合だけ、稼動系ノード10-1での処理を引き継ぐための制御を行う。   The evaluation unit 135 notifies the determination result in step S19 to the cluster control unit 131 in the standby node 10-2. The cluster control unit 131 in the standby node 10-2 performs control for taking over the processing in the active node 10-1 only when it is determined that the node 10-2 is optimal as the takeover destination node. .

待機系ノード10-3においても、待機系ノード10-2と同様の処理が行われ、当該ノード10-3を含む各待機系ノード(ここでは待機系ノード10-2及び10-3)の評価結果に基づき、当該ノード10-3が引き継ぎ先ノードとして最適かが決定される。   In the standby node 10-3, the same processing as that of the standby node 10-2 is performed, and the standby nodes including the node 10-3 (in this case, the standby nodes 10-2 and 10-3) are evaluated. Based on the result, it is determined whether the node 10-3 is optimal as the takeover destination node.

このように第1の実施形態においては、アプリケーション12-1が稼動している稼動系ノード10-1に異常が発生した場合に、待機系ノード10-2及び10-3のいずれかが引き継ぎ先ノードとなって稼動系ノード10-1での処理を実際に引き継ぐ前に、当該待機系ノード10-2及び10-3でアプリケーション12-2及び12-3が稼動可能であるかを評価し、稼動可能と評価されたノードが引き継ぎ先ノードとして決定される。このため第1の実施形態によれば、アプリケーションの実行失敗による障害発生を減少させることができる。   As described above, in the first embodiment, when an abnormality occurs in the active node 10-1 on which the application 12-1 is operating, either the standby node 10-2 or 10-3 takes over. Before actually taking over the processing in the active node 10-1 as a node, evaluate whether the standby nodes 10-2 and 10-3 can operate the applications 12-2 and 12-3. A node evaluated as operable is determined as a takeover destination node. Therefore, according to the first embodiment, it is possible to reduce the occurrence of a failure due to an application execution failure.

第1の実施形態では、リソースを大量に消費する関数を、評価部135によって実行される関数、つまりアプリケーション12-iの動作に大きな影響のある関数として挙げている。しかし、使用頻度の高い関数も、アプリケーション12-iの動作に大きな影響のある関数として挙げることができる。このような使用頻度の高い関数は、例えばAPI情報記憶部14-iに格納されているAPI情報の示す関数の中から、予め定められた閾値を超える使用頻度の関数として選択することができる。   In the first embodiment, a function that consumes a large amount of resources is listed as a function that is executed by the evaluation unit 135, that is, a function that greatly affects the operation of the application 12-i. However, functions that are frequently used can also be cited as functions that have a large influence on the operation of the application 12-i. Such a function with high use frequency can be selected as a function with use frequency exceeding a predetermined threshold value from among the functions indicated by the API information stored in the API information storage unit 14-i, for example.

また第1の実施形態では、待機系ノードの評価結果が他の待機系ノードに通知され、これにより全待機系ノードは、それぞれの評価結果を共有する。しかし、ノード10-1〜10-3によって共有される共有ストレージ装置内に各待機系ノードの評価結果を格納するための特別の記憶領域が確保される構成とするならば、待機系ノード10-2及び10-3内の評価部135が当該記憶領域に自身の評価結果を格納するだけで、待機系ノード10-2及び10-3は、それぞれの評価結果を共有することができる。   In the first embodiment, the evaluation result of the standby node is notified to other standby nodes, and all the standby nodes thereby share the evaluation results. However, if a special storage area for storing the evaluation result of each standby node is secured in the shared storage device shared by the nodes 10-1 to 10-3, the standby node 10- The standby nodes 10-2 and 10-3 can share the respective evaluation results only by the evaluation unit 135 in 2 and 10-3 storing its own evaluation results in the storage area.

また第1の実施形態では、稼動系ノードがノード10-1の1台、待機系ノードがノード10-2及び10-3の2台であるクラスタシステムを想定している。しかし、N及びMを0より大きい整数であるとすると、N台の稼動系ノードとM台の待機系ノードで構成されるクラスタシステムであっても構わない。ここでMが1の場合、つまり待機系ノードが1台の場合、当該待機系ノードは前述したように、自身の評価結果(アプリケーションを稼動することが可能であるかの評価結果)のみで、引き継ぎ先ノードとして最適かを決定すればよい。   In the first embodiment, a cluster system is assumed in which the active node is one node 10-1 and the standby nodes are two nodes 10-2 and 10-3. However, if N and M are integers larger than 0, a cluster system including N active nodes and M standby nodes may be used. Here, when M is 1, that is, when there is one standby node, as described above, the standby node is based only on its own evaluation result (evaluation result as to whether the application can be operated). What is necessary is just to determine whether it is optimal as a takeover destination node.

[第2の実施形態]
次に本発明の第2の実施形態について、図1のブロック図を援用して説明する。
[Second Embodiment]
Next, a second embodiment of the present invention will be described with reference to the block diagram of FIG.

図6は、第2の実施形態で適用されるノード10-i(i=1,2,3)の構成を示すブロック図である。図6において、図2と等価な部分には同一参照符号が付されている。   FIG. 6 is a block diagram showing a configuration of the node 10-i (i = 1, 2, 3) applied in the second embodiment. In FIG. 6, the same reference numerals are given to the parts equivalent to those in FIG.

図6に示すノード10-iの構成は、当該ノード10-i内のクラスタ管理部13-iに情報収集部136が追加されている点と、当該ノード10-i内に収集情報記憶部15-iが追加されている点で、第1の実施形態におけるノード10-i(図2に示すノード10-iの構成)と相違する。したがって以下の説明では、図1において、ノード10-1〜10-3が、それぞれ収集情報記憶部15-1〜15-3を有しているものとする。また、図6に示すノード10-i内の評価部135の機能は、上記第1の実施形態と一部相違する。   The configuration of the node 10-i shown in FIG. 6 is that the information collection unit 136 is added to the cluster management unit 13-i in the node 10-i and the collected information storage unit 15 in the node 10-i. It differs from the node 10-i in the first embodiment (configuration of the node 10-i shown in FIG. 2) in that -i is added. Therefore, in the following description, in FIG. 1, it is assumed that the nodes 10-1 to 10-3 have the collection information storage units 15-1 to 15-3, respectively. Further, the function of the evaluation unit 135 in the node 10-i shown in FIG. 6 is partially different from that of the first embodiment.

ノード10-i内の情報収集部136は、引き継ぎ先ノードを決定する際に利用される情報を予め収集するように構成されている。この情報は、ノード10-iが稼動系ノードであって、且つ当該稼動系ノード10-iにおいてアプリケーション12-iが正常に動作している場合における、リソース消費量の時系列データである。情報収集部136は、収集したリソース消費量の時系列データに基づいて、当該リソース消費量の統計値を算出する。ここでは説明を簡単にするために、リソース消費量がメモリ消費量であるものとする。   The information collection unit 136 in the node 10-i is configured to collect in advance information used when determining the takeover destination node. This information is time-series data of resource consumption when the node 10-i is an active node and the application 12-i is operating normally in the active node 10-i. The information collection unit 136 calculates a statistical value of the resource consumption based on the collected time series data of the resource consumption. Here, to simplify the explanation, it is assumed that the resource consumption is the memory consumption.

ノード10-i内の収集情報記憶部15-iは、稼動系ノードの情報収集部136で収集された情報(リソース消費量の時系列データ及びリソース消費量の統計値)を格納するのに用いられる。   The collection information storage unit 15-i in the node 10-i is used for storing information (resource consumption time-series data and resource consumption statistics) collected by the information collection unit 136 of the active node. It is done.

第2の実施形態において、ノード10-i内の評価部135は、稼動系ノードの異常が検知され、且つ当該ノード10-iが待機系ノードの場合に、API情報記憶部14-iに格納されているAPI情報(つまり稼動系ノードのAPIフック部134によって取得されたAPI情報)の示す関数を実行することによって、収集情報記憶部15-i内に収集されているリソース消費量の統計値の示すリソース量が確保できるかを判定する。ノード10-i内の評価部135は、この判定結果に基づいて、当該ノード10-iを引き継ぎ先ノードとするかを決定する。   In the second embodiment, the evaluation unit 135 in the node 10-i is stored in the API information storage unit 14-i when an abnormality of the active node is detected and the node 10-i is a standby node. The statistical value of the resource consumption collected in the collected information storage unit 15-i by executing the function indicated by the API information (that is, the API information acquired by the API hook unit 134 of the active node) It is determined whether the resource amount indicated by can be secured. Based on this determination result, the evaluation unit 135 in the node 10-i determines whether the node 10-i is a takeover destination node.

次に第2の実施形態の動作について、上記第1の実施形態と同様に、ノード10-1が稼動系ノードとして動作し、ノード10-2及び10-3が待機系ノードとして動作している場合を例に説明する。   Next, regarding the operation of the second embodiment, as in the first embodiment, the node 10-1 operates as an active node, and the nodes 10-2 and 10-3 operate as standby nodes. A case will be described as an example.

<稼動系ノード内の情報収集部の動作>
まず、稼動系ノード10-1内の情報収集部136の動作について説明する。
稼動系ノード10-1内のAPIフック部134は、第1の実施形態と同様に、アプリケーション12-1が使用するAPI(関数)をフックする。稼動系ノード10-1内の情報収集部136は、アプリケーション12-1の起動時から、当該アプリケーション12-1が正常に稼動している限り、APIフック部134によってフックされた関数の実行によって消費されるリソース量を収集する。ここで、関数の実行によって消費されるリソース量は、アプリケーション12-1が関数を呼び出す際に明示的に示される。例えば、メモリ確保関数としてのmalloc関数は、確保されるべきサイズ(size)を指定する引数を用いて、「malloc(size)」の形式で表される。この引数sizeから、「malloc(size)」が実行された場合に、sizeバイトのメモリ量(リソース)が確保(確保)されることを認識できる。
<Operation of information collection unit in active node>
First, the operation of the information collection unit 136 in the active node 10-1 will be described.
The API hook unit 134 in the active node 10-1 hooks an API (function) used by the application 12-1 as in the first embodiment. The information collecting unit 136 in the active node 10-1 is consumed by executing the function hooked by the API hook unit 134 as long as the application 12-1 is operating normally after the application 12-1 is started. Collect the amount of resources that are used. Here, the resource amount consumed by the execution of the function is explicitly shown when the application 12-1 calls the function. For example, a malloc function as a memory allocation function is expressed in the form of “malloc (size)” using an argument that specifies a size (size) to be allocated. From this argument size, it can be recognized that when “malloc (size)” is executed, a memory amount (resource) of size bytes is secured (reserved).

情報収集部136は、例えばmalloc関数がAPIフック部134によってフックされた場合、当該APIフック部134から、このmalloc関数の引数size、つまりsizeバイトという確保されるべきメモリ量を示すデータを、消費されるメモリ量(リソース量)を示すデータとして取得する。情報収集部136は、APIフック部134によってフックされた関数の実行によって消費されるメモリ量(メモリ消費量)を示すデータを収集する都度、そのデータを時系列順に収集情報記憶部15-1に格納する。   For example, when the malloc function is hooked by the API hook unit 134, the information collection unit 136 consumes data indicating the memory size to be secured, that is, the argument size of the malloc function, that is, size bytes, from the API hook unit 134. It is acquired as data indicating the amount of memory (resource amount). Each time the information collection unit 136 collects data indicating the amount of memory (memory consumption) consumed by execution of the function hooked by the API hook unit 134, the information collection unit 136 collects the data in the collection information storage unit 15-1 in chronological order. Store.

情報収集部136は、収集情報記憶部15-1に収集されたメモリ消費量の時系列データに基づき、メモリ消費量の統計値を、例えば定期的に算出する。ここで、メモリ消費量の統計値は、例えば、メモリ消費量の最大値または平均値である。また、平均値の計算に、予め定められた閾値を超えるようなスパイク値を除くことも可能である。更に、平均値として、アプリケーション12-1の起動時からの全期間に亙る平均値、日平均値または週平均値を適用することも可能である。   The information collecting unit 136 calculates a statistical value of the memory consumption, for example, periodically based on the time series data of the memory consumption collected in the collected information storage unit 15-1. Here, the statistical value of the memory consumption is, for example, the maximum value or the average value of the memory consumption. It is also possible to exclude spike values that exceed a predetermined threshold in the calculation of the average value. Furthermore, as the average value, an average value, a daily average value, or a weekly average value over the entire period from when the application 12-1 is started can be applied.

情報収集部136は、メモリ消費量(リソース消費量)の統計値を算出すると、当該統計値を最新のメモリ消費量の統計値として収集情報記憶部15-1内の統計値領域に格納する。これにより統計値領域の内容が、最新のメモリ消費量の統計値に更新される。同時に情報収集部136は、この最新のメモリ消費量の統計値を、クラスタ制御部131によって、待機系ノード10-2及び10-3のクラスタ制御部131を介して当該待機系ノード10-2及び10-3の情報収集部136に転送させる。   When calculating the statistical value of the memory consumption (resource consumption), the information collection unit 136 stores the statistical value in the statistical value area in the collection information storage unit 15-1 as the latest statistical value of the memory consumption. As a result, the contents of the statistical value area are updated to the latest statistical value of memory consumption. At the same time, the information collection unit 136 uses the cluster control unit 131 to obtain the latest statistical value of memory consumption via the cluster control unit 131 of the standby node 10-2 and 10-3. The information is collected by the information collection unit 136 of 10-3.

転送された最新のメモリ消費量の統計値は、待機系ノード10-2及び10-3の情報収集部136によって当該待機系ノード10-2及び10-3の収集情報記憶部15-2(i=2)及び16-3(i=3)に格納される。これにより、稼動系ノード10-1内の情報収集部136によって取得されたメモリ消費量の統計値は、当該稼動系ノード10-1及び待機系ノード10-2及び10-3によって共有される。つまり、各ノード10-i(i=1,2,3)の収集情報記憶部15-iは、論理的に共有収集情報記憶部を構成する。なお、各ノード10-iが収集情報記憶部15-iを持つ代わりに、共有ストレージ装置(の記憶領域)内に、収集情報記憶部が確保される構成としてもよい。   The statistics value of the latest transferred memory consumption is collected by the information collection unit 136 of the standby nodes 10-2 and 10-3, and the collected information storage unit 15-2 (i of the standby nodes 10-2 and 10-3). = 2) and 16-3 (i = 3). Thus, the statistical value of the memory consumption acquired by the information collecting unit 136 in the active node 10-1 is shared by the active node 10-1 and the standby nodes 10-2 and 10-3. That is, the collection information storage unit 15-i of each node 10-i (i = 1, 2, 3) logically configures a shared collection information storage unit. Instead of each node 10-i having the collection information storage unit 15-i, a configuration may be adopted in which the collection information storage unit is secured in the shared storage device (storage area thereof).

<待機系ノード内の評価部の動作>
次に、第1の実施形態と同様に稼動系ノード10-1に障害が発生したものとする。この場合、待機系ノード10-2内の評価部135は、当該ノード10-2がアプリケーション12-2を稼動することが可能かを評価する。同様の評価は、待機系ノード10-3内の評価部135でも行われる。
<Operation of the evaluation unit in the standby node>
Next, it is assumed that a failure has occurred in the active node 10-1 as in the first embodiment. In this case, the evaluation unit 135 in the standby node 10-2 evaluates whether the node 10-2 can operate the application 12-2. Similar evaluation is also performed by the evaluation unit 135 in the standby node 10-3.

以下、評価部135による評価処理の手順について、待機系ノード10-2内の評価部135の動作を例に、図7のフローチャートを参照して説明する。
まず評価部135は、収集情報記憶部15-i(i=2)、つまり収集情報記憶部15-2から、メモリ消費量の統計値を読み込む(ステップS21)。次に評価部135は、API情報記憶部14-2から、実行されるべきAPI情報を選択する(ステップS22)。ここでは、実行されるべきAPI情報が、メモリ領域を確保するためのメモリ確保関数の関数名を含むAPI情報であるものとする。
Hereinafter, the procedure of the evaluation process performed by the evaluation unit 135 will be described with reference to the flowchart of FIG. 7 taking the operation of the evaluation unit 135 in the standby node 10-2 as an example.
First, the evaluation unit 135 reads a memory consumption statistic value from the collection information storage unit 15-i (i = 2), that is, the collection information storage unit 15-2 (step S21). Next, the evaluation unit 135 selects API information to be executed from the API information storage unit 14-2 (step S22). Here, it is assumed that API information to be executed is API information including a function name of a memory allocation function for allocating a memory area.

評価部135は、選択されたAPI情報中の関数名を用いると共に、当該関数名で指定される関数の引数として、収集情報記憶部15-2から読み出されたメモリ消費量の統計値を用いて、当該関数(メモリ確保関数)を実行する(ステップS23)。次に評価部135は、関数の実行の結果に基づき、メモリ消費量の統計値(引数)で示されるサイズのメモリ量が確保できたかを判定する(ステップS24)。   The evaluation unit 135 uses the function name in the selected API information and uses the statistical value of the memory consumption read from the collection information storage unit 15-2 as the argument of the function specified by the function name. Then, the function (memory allocation function) is executed (step S23). Next, the evaluation unit 135 determines whether or not the memory amount having the size indicated by the statistical value (argument) of the memory consumption amount has been secured based on the execution result of the function (step S24).

もし、統計値で示されるサイズのメモリ量が確保できなかったならば(ステップS24)、評価部135は第1の実施形態において返り値が正しくないと判定された場合と同様の処理(つまりステップS15,S16,S20と同様の処理)を実行する(ステップS25,S26,S30)。   If the memory amount of the size indicated by the statistical value cannot be secured (step S24), the evaluation unit 135 performs the same processing as that when the return value is determined to be incorrect in the first embodiment (that is, step Processes similar to S15, S16, and S20) are executed (steps S25, S26, and S30).

これに対し、統計値で示されるサイズのメモリ量が確保できたならば(ステップS24)、評価部135は第1の実施形態において返り値が正しいと判定された場合と同様の処理を実行する。即ち評価部135は、実行されるべきAPI情報を全て実行したかを判定し(ステップS27)、実行されるべきAPI情報(未選択のAPI情報)があるならば、当該未選択のAPI情報を選択して(ステップS22)、ステップS23以降の処理を行う。ここで、統計値で示されるサイズのメモリ量が確保できたということは、当該サイズを引数とした関数(API)の呼び出し及び実行に必要なメモリ量も確保できたことを意味する点に注意する、
一方、実行されるべき未選択のAPI情報がないならば(ステップS27)、評価部135は第1の実施形態において実行されるべき未選択のAPI情報がないと判定された場合と同様の処理(つまりステップS18〜S20と同様の処理)を実行する(ステップS28〜S30)。
On the other hand, if the memory size of the size indicated by the statistical value can be secured (step S24), the evaluation unit 135 executes the same process as when the return value is determined to be correct in the first embodiment. . That is, the evaluation unit 135 determines whether all API information to be executed has been executed (step S27). If there is API information to be executed (unselected API information), the unselected API information is displayed. After selecting (step S22), the processing after step S23 is performed. Note that the fact that the amount of memory of the size indicated by the statistical value can be secured means that the amount of memory necessary for calling and executing the function (API) using the size as an argument can also be secured. To
On the other hand, if there is no unselected API information to be executed (step S27), the evaluation unit 135 performs the same processing as when it is determined that there is no unselected API information to be executed in the first embodiment. (In other words, processing similar to steps S18 to S20) is executed (steps S28 to S30).

待機系ノード10-3内の評価部135においても、上述の待機系ノード10-2内の評価部135と同様の動作が行われる。   The evaluation unit 135 in the standby node 10-3 performs the same operation as the evaluation unit 135 in the standby node 10-2.

これにより、待機系ノード10-2及び10-3のいずれか一方においてのみ、上記統計値で示されるサイズのメモリ量が確保できたと判定された場合、つまり待機系ノード10-2及び10-3のいずれか一方においてのみアプリケーションを稼動可能であると判定された場合には、その一方のノードが引き継ぎ先ノードとして決定される。また、待機系ノード10-2及び10-3の双方で、上記統計値で示されるサイズのメモリ量が確保できたと判定された場合には、待機系ノード10-2及び10-3のうち、予め定められた優先度が高い方のノードが引き継ぎ先ノードとして決定される。   As a result, when it is determined that only one of the standby nodes 10-2 and 10-3 can secure the memory size of the size indicated by the statistical value, that is, the standby nodes 10-2 and 10-3. If it is determined that the application can be operated only in one of the nodes, that one node is determined as the takeover destination node. If it is determined that both of the standby nodes 10-2 and 10-3 have secured the memory amount of the size indicated by the statistical value, the standby nodes 10-2 and 10-3 are: The node having a higher priority is determined as the takeover destination node.

[第3の実施形態]
次に本発明の第3の実施形態について、図1のブロック図を援用して説明する。
図8は、第3の実施形態で適用されるノード10-i(i=1,2,3)の構成を示すブロック図である。図8において、図6と等価な部分には同一参照符号が付されている。
[Third Embodiment]
Next, a third embodiment of the present invention will be described with reference to the block diagram of FIG.
FIG. 8 is a block diagram showing the configuration of the node 10-i (i = 1, 2, 3) applied in the third embodiment. 8, parts equivalent to those in FIG. 6 are denoted by the same reference numerals.

図8に示すノード10-iの構成は、当該ノード10-i内のクラスタ管理部13-iにAPIフック部134及び情報収集部136が設けられていない点と、当該ノード10-i内に情報収集部136に相当する情報収集部16-iが設けられている点と、当該ノード10-i内にAPI情報記憶部14-iが設けられていない点で、第2の実施形態におけるノード10-i(図6に示すノード10-iの構成)と相違する。したがって以下の説明では、図1において、ノード10-1〜10-3が、それぞれ収集情報記憶部15-1〜15-3と情報収集部16-1〜16-3を有する一方、API情報記憶部14-1〜14-3を有していないものとする。また、図8に示すノード10-i内の評価部135の機能は、上記第2の実施形態と一部相違する。   The configuration of the node 10-i shown in FIG. 8 is that the cluster management unit 13-i in the node 10-i is not provided with the API hook unit 134 and the information collection unit 136, and the node 10-i The node in the second embodiment is that the information collecting unit 16-i corresponding to the information collecting unit 136 is provided and the API information storage unit 14-i is not provided in the node 10-i. 10-i (the configuration of the node 10-i shown in FIG. 6). Therefore, in the following description, in FIG. 1, while the nodes 10-1 to 10-3 have the collected information storage units 15-1 to 15-3 and the information collection units 16-1 to 16-3, respectively, The parts 14-1 to 14-3 are not included. Further, the function of the evaluation unit 135 in the node 10-i shown in FIG. 8 is partially different from that of the second embodiment.

第3の実施形態において、ノード10-i内の情報収集部16-iは、当該ノード10-iが稼動系ノードである場合に、アプリケーション12-iが消費するリソース量の時系列データを、引き継ぎ先を決定する際に利用される情報として収集するように構成されている。情報収集部16-iは、収集した、アプリケーション12-iが消費するリソース量(リソース消費量)の時系列データに基づいて、当該リソース消費量の統計値を算出する。   In the third embodiment, the information collection unit 16-i in the node 10-i receives time-series data of the resource amount consumed by the application 12-i when the node 10-i is an active node. The information is collected as information used when determining the takeover destination. The information collection unit 16-i calculates a statistical value of the resource consumption amount based on the collected time series data of the resource amount (resource consumption amount) consumed by the application 12-i.

ノード10-i内の収集情報記憶部15-iは、稼動系ノードの情報収集部で収集された情報(アプリケーション12-iが消費するリソース量の時系列データ及び当該リソース消費量の統計値)を格納するのに用いられる。   The collected information storage unit 15-i in the node 10-i is information collected by the information collecting unit of the active node (time series data of the resource amount consumed by the application 12-i and the statistical value of the resource consumption amount). Used to store

ノード10-i内の評価部135は、稼動系ノードの異常が検知され、且つ当該ノード10-iが待機系ノードの場合に、収集情報記憶部15-i内に収集されているリソース消費量の統計値の示すリソース量と、当該ノード10-iの現在の空きリソース量とに基づき、当該統計値の示すリソース量が確保できるかを評価する。ノード10-i内の評価部135は、この評価結果に基づいて、当該ノード10-iを引き継ぎ先ノードとするかを決定する。   The evaluation unit 135 in the node 10-i detects the resource consumption collected in the collection information storage unit 15-i when an abnormality of the active node is detected and the node 10-i is a standby node. Based on the resource amount indicated by the statistical value and the current free resource amount of the node 10-i, it is evaluated whether the resource amount indicated by the statistical value can be secured. The evaluation unit 135 in the node 10-i determines whether the node 10-i is a takeover destination node based on the evaluation result.

次に第3の実施形態の動作について、上記第2の実施形態と同様に、ノード10-1が稼動系ノードとして動作し、ノード10-2及び10-3が待機系ノードとして動作している場合を例に説明する。   Next, regarding the operation of the third embodiment, as in the second embodiment, the node 10-1 operates as an active node, and the nodes 10-2 and 10-3 operate as standby nodes. A case will be described as an example.

<稼動系ノード内の情報収集部の動作>
まず、稼動系ノード10-1内の情報収集部16-i(i=1)の動作、つまり情報収集部16-1の動作について説明する。
情報収集部16-1は、アプリケーション12-1が消費するリソース量の時系列データを、当該アプリケーション12-iの外部から観測(監視)することによって収集する。このような、アプリケーション12-iが消費するリソース量を観測する仕組みは従来から知られており、専用のコマンド或いはツールを用いることにより実現される。
<Operation of information collection unit in active node>
First, the operation of the information collection unit 16-i (i = 1) in the active node 10-1, that is, the operation of the information collection unit 16-1 will be described.
The information collecting unit 16-1 collects time series data of the amount of resources consumed by the application 12-1 by observing (monitoring) from outside the application 12-i. Such a mechanism for observing the amount of resources consumed by the application 12-i has been conventionally known, and is realized by using a dedicated command or tool.

アプリケーション12-1が消費するリソース量(第1のリソース量)は、当該アプリケーション12-1によるAPI(例えばメモリ確保関数)の呼び出し及び実行に必要なリソース量(第2のリソース量)と、当該API(関数)の実行によって確保されるリソース量(第3のリソース量)との和である。   The resource amount (first resource amount) consumed by the application 12-1 includes the resource amount (second resource amount) necessary for calling and executing an API (for example, a memory allocation function) by the application 12-1, This is the sum of the resource amount (third resource amount) secured by executing the API (function).

このように、第2の実施形態では、第3のリソース量を示すデータだけが収集されるのに対し、第3の実施形態では、第3のリソース量を示すデータに加えて第2のリソース量を示すデータも収集される。第2のリソース量は、関数の引数を保持するためのスタックやAPIの内部処理で消費するリソース量などである。   As described above, in the second embodiment, only data indicating the third resource amount is collected, whereas in the third embodiment, the second resource is added to the data indicating the third resource amount. Data indicating the quantity is also collected. The second resource amount is a stack for holding function arguments, a resource amount consumed by API internal processing, or the like.

情報収集部16-1は、第1のリソース量を示すデータを収集する都度、そのデータを時系列順に収集情報記憶部15-1に格納する。情報収集部16-1は、第2の実施形態における情報収集部136と同様に、収集情報記憶部15-1に収集された第1のリソース量の時系列データに基づき、当該第1のリソース量(アプリケーション12-1で消費されるリソース量)の統計値を、例えば定期的に算出する。   Each time the information collection unit 16-1 collects data indicating the first resource amount, the information collection unit 16-1 stores the data in the collection information storage unit 15-1 in chronological order. Similar to the information collection unit 136 in the second embodiment, the information collection unit 16-1 uses the first resource amount based on the time-series data of the first resource amount collected in the collection information storage unit 15-1. A statistical value of the amount (resource amount consumed by the application 12-1) is calculated periodically, for example.

情報収集部16-1は、第1のリソース量の統計値を算出すると、当該統計値を最新の第1のリソース量(リソース消費量)の統計値として収集情報記憶部15-1内の統計値領域に格納する。これにより統計値領域の内容が、最新の第1のリソース量の統計値に更新される。同時に情報収集部16-1は、この最新の第1のリソース量の統計値を、クラスタ制御部131によって、待機系ノード10-2及び10-3のクラスタ制御部131を介して当該待機系ノード10-2及び10-3の情報収集部16-2(i=2)及び16-3(i=3)に転送させる。転送された最新の第1のリソース量の統計値は、待機系ノード10-2及び10-3の情報収集部16-2及び16-3によって、当該待機系ノード10-2及び10-3の収集情報記憶部15-2(i=2)及び16-3(i=3)に格納される。以下では、リソース量がメモリ量であるものとして説明する。   When the information collection unit 16-1 calculates the statistical value of the first resource amount, the statistical value in the collection information storage unit 15-1 is used as the latest statistical value of the first resource amount (resource consumption amount). Store in the value area. As a result, the contents of the statistical value area are updated to the latest statistical value of the first resource amount. At the same time, the information collecting unit 16-1 uses the cluster control unit 131 to obtain the latest statistical value of the first resource amount via the cluster control unit 131 of the standby node 10-2 and 10-3. The information collection units 16-2 (i = 2) and 16-3 (i = 3) of 10-2 and 10-3 are transferred. The latest statistics value of the first resource amount transferred is stored in the standby nodes 10-2 and 10-3 by the information collecting units 16-2 and 16-3 of the standby nodes 10-2 and 10-3. The collected information storage units 15-2 (i = 2) and 16-3 (i = 3) are stored. In the following description, it is assumed that the resource amount is the memory amount.

<待機系ノード内の評価部の動作>
次に、第2の実施形態と同様に稼動系ノード10-1に障害が発生したものとする。この場合、待機系ノード10-2内の評価部135は、当該ノード10-2がアプリケーション12-2を稼動することが可能かを評価する。同様の評価は、待機系ノード10-3内の評価部135でも行われる。
<Operation of the evaluation unit in the standby node>
Next, it is assumed that a failure has occurred in the active node 10-1 as in the second embodiment. In this case, the evaluation unit 135 in the standby node 10-2 evaluates whether the node 10-2 can operate the application 12-2. Similar evaluation is also performed by the evaluation unit 135 in the standby node 10-3.

以下、評価部135による評価処理の手順について、待機系ノード10-2内の評価部135の動作を例に、図9のフローチャートを参照して説明する。
まず、評価部135は、収集情報記憶部15-2(i=2)から、第1のメモリ量(第1のリソース量)の統計値(つまりアプリケーションが消費するメモリ量の統計値)を読み込む(ステップS31)。次に評価部135は、読み込まれた統計値で示されるメモリ量(リソース量)を、待機系ノード10-2の現在の空きメモリ量(リソース量)と比較する(ステップS32)。ここで、待機系ノード10-2の現在の空きメモリ量を示すデータは、周知のように、OS11-2(i=2)に問い合わせることによって当該OS11-2から取得することができる。
Hereinafter, the procedure of the evaluation process by the evaluation unit 135 will be described with reference to the flowchart of FIG. 9 taking the operation of the evaluation unit 135 in the standby node 10-2 as an example.
First, the evaluation unit 135 reads the statistical value of the first memory amount (first resource amount) (that is, the statistical value of the memory amount consumed by the application) from the collected information storage unit 15-2 (i = 2). (Step S31). Next, the evaluation unit 135 compares the memory amount (resource amount) indicated by the read statistical value with the current free memory amount (resource amount) of the standby node 10-2 (step S32). Here, as is well known, data indicating the current free memory amount of the standby node 10-2 can be acquired from the OS 11-2 by inquiring of the OS 11-2 (i = 2).

評価部135は、上記の比較の結果に基づき、上記読み込まれた統計値で示されるメモリ量が待機系ノード10-2において確保で可能であるかを判定する(ステップS33)。   Based on the result of the comparison, the evaluation unit 135 determines whether the memory amount indicated by the read statistical value can be secured in the standby node 10-2 (step S33).

さて、収集情報記憶部15-2(i=2)に収集されている第1のメモリ量の統計値は最新の統計値である。したがって、この統計値の示すメモリ量は、現時点(つまり稼動系ノード10-1で障害が発生した時点)において待機系ノード10-2が引き継ぎ先ノードとして動作してアプリケーション12-2を実行するのに必要となるメモリ量であると見なすことができる。このため、待機系ノード10-2内の評価部135が、上述の比較の結果に基づいて、当該ノード10-2において上記統計値の示すメモリ量を確保可能であると判定できるならば、当該ノード10-2でアプリケーション12-2を稼動することができると判定できる。   The statistical value of the first memory amount collected in the collected information storage unit 15-2 (i = 2) is the latest statistical value. Therefore, the amount of memory indicated by the statistical value is that the standby node 10-2 operates as the takeover destination node and executes the application 12-2 at the present time (that is, when a failure occurs in the active node 10-1). It can be considered that this is the amount of memory required. Therefore, if the evaluation unit 135 in the standby node 10-2 can determine that the amount of memory indicated by the statistical value can be secured in the node 10-2 based on the result of the comparison, It can be determined that the application 12-2 can be operated on the node 10-2.

そこで、上記統計値で示されるメモリ量が待機系ノード10-2において確保できないと判定されたならば(ステップS33)、評価部135は第2の実施形態において引数で示されるメモリ量が確保できなかった場合と同様の処理(つまりステップS25,S26,S30と同様の処理)を実行する(ステップS34,S35,S38)。   Therefore, if it is determined that the memory amount indicated by the statistical value cannot be secured in the standby node 10-2 (step S33), the evaluation unit 135 can secure the memory amount indicated by the argument in the second embodiment. The same processing as that in the case where there is not (that is, processing similar to steps S25, S26, S30) is executed (steps S34, S35, S38).

これに対し、上記統計値で示されるメモリ量が待機系ノード10-2において確保できると判定されたならば(ステップS33)、評価部135は第2の実施形態おいて引数で示されるメモリ量が確保でき、且つ実行されるべき未選択のAPI情報がないと判定された場合と同様の処理(つまりステップS28〜S30と同様の処理)を実行する(ステップS36〜S38)。   On the other hand, if it is determined that the memory amount indicated by the statistical value can be secured in the standby node 10-2 (step S33), the evaluation unit 135 determines the memory amount indicated by the argument in the second embodiment. Can be secured, and the same processing as when it is determined that there is no unselected API information to be executed (that is, processing similar to steps S28 to S30) is executed (steps S36 to S38).

待機系ノード10-3内の評価部135においても、上述の待機系ノード10-2内の評価部135と同様の動作が行われる。   The evaluation unit 135 in the standby node 10-3 performs the same operation as the evaluation unit 135 in the standby node 10-2.

これにより、待機系ノード10-2及び10-3のいずれか一方においてのみ、上記統計値で示されるサイズのメモリ量が確保可能であると判定された場合、つまり待機系ノード10-2及び10-3のいずれか一方においてのみアプリケーションを稼動可能であると判定された場合には、その一方のノードが引き継ぎ先ノードとして決定される。また、待機系ノード10-2及び10-3の双方で、上記統計値で示されるサイズのメモリ量が確保可能であると判定された場合には、待機系ノード10-2及び10-3のうち、予め定められた優先度が高い方のノードが引き継ぎ先ノードとして決定される。第3の実施形態では、アプリケーションからのAPIの呼び出しをフックすることなく、待機系ノードの中から最適な引き継ぎ先ノードを決定することができる。   As a result, when it is determined that only one of the standby nodes 10-2 and 10-3 can secure a memory amount of the size indicated by the statistical value, that is, the standby nodes 10-2 and 10-3. When it is determined that the application can be operated only in any one of -3, that one node is determined as the takeover destination node. If it is determined that both of the standby nodes 10-2 and 10-3 can secure the memory size indicated by the statistical value, the standby nodes 10-2 and 10-3 Of these, the node with the higher priority is determined as the takeover destination node. In the third embodiment, the optimum takeover destination node can be determined from the standby nodes without hooking the API call from the application.

[第4の実施形態]
次に本発明の第4の実施形態について、図1のブロック図を援用して説明する。
図10は、第4の実施形態で適用されるノード10-i(i=1,2,3)の構成を示すブロック図である。図10において、図2と等価な部分には同一参照符号が付されている。
[Fourth Embodiment]
Next, a fourth embodiment of the present invention will be described with reference to the block diagram of FIG.
FIG. 10 is a block diagram showing the configuration of the node 10-i (i = 1, 2, 3) applied in the fourth embodiment. 10, parts equivalent to those in FIG. 2 are denoted by the same reference numerals.

図10に示すノード10-iの構成は、当該ノード10-i内のクラスタ管理部13-iにAPIフック部134に代えてAPIフック・I/O隔離部137が設けられている点で、第1の実施形態におけるノード10-i(図2に示すノード10-iの構成)と相違する。また、図10に示すノード10-i内の評価部135の機能は、上記第1の実施形態と一部相違する。   The configuration of the node 10-i shown in FIG. 10 is that the cluster management unit 13-i in the node 10-i is provided with an API hook / I / O isolation unit 137 instead of the API hook unit 134. This is different from the node 10-i (configuration of the node 10-i shown in FIG. 2) in the first embodiment. Further, the function of the evaluation unit 135 in the node 10-i shown in FIG. 10 is partially different from that of the first embodiment.

第4の実施形態において、ノード10-i内のクラスタ管理部13-iに設けられたAPIフック・I/O隔離部137は、図2に示されるAPIフック部134と同様の機能(APIフック機能)に加えて、評価部135による評価のためにアプリケーション12-iから呼び出される関数(API)を当該評価部135に代わって仮想的に実行することにより、通常であれば当該アプリケーション12-iとOS11-iとの間で授受される入出力(I/O)を当該OS11-iから隔離する機能(I/O隔離機能)を有する。APIフック・I/O隔離部137は、アプリケーション12-iから呼び出された関数と返り値とを評価部135に渡す。   In the fourth embodiment, the API hook / I / O isolation unit 137 provided in the cluster management unit 13-i in the node 10-i has the same function (API hook) as the API hook unit 134 shown in FIG. In addition to the function), a function (API) called from the application 12-i for evaluation by the evaluation unit 135 is virtually executed on behalf of the evaluation unit 135, so that the application 12-i is normally used. And an input / output (I / O) exchanged between the OS 11-i and the OS 11-i (I / O isolation function). The API hook / I / O isolation unit 137 passes the function called from the application 12-i and the return value to the evaluation unit 135.

第4の実施形態において、評価部135はAPI情報記憶部14-iに格納されている関数の呼び出し(実行)を自身が行う代わりに、アプリケーション12-iを動作させることにより、当該関数の呼び出し(実行)を当該アプリケーション12-i自身に行わせる。つまり評価部135は、API情報記憶部14-iに格納されている関数の呼び出し(実行)を、アプリケーション12-iを動作させることによって実現する。   In the fourth embodiment, the evaluation unit 135 calls the function by operating the application 12-i instead of calling (executing) the function stored in the API information storage unit 14-i. (Execute) is executed by the application 12-i itself. That is, the evaluation unit 135 implements calling (execution) of a function stored in the API information storage unit 14-i by operating the application 12-i.

評価部135は、アプリケーション12-1による関数の呼び出し(実行)に応じてAPIフック・I/O隔離部137によって取得された返り値が正しいかを、当該関数の関数名に対応付けてAPI情報記憶部14-iに格納されている返り値に基づいて判定することにより、ノード10-iでのアプリケーション12-iの稼動が可能であるかを評価する。   The evaluation unit 135 associates whether the return value acquired by the API hook / I / O isolation unit 137 in accordance with the function call (execution) by the application 12-1 is correct with the function name of the function. By determining based on the return value stored in the storage unit 14-i, it is evaluated whether the application 12-i can be operated on the node 10-i.

次に、第4の実施形態の動作について、図1の例のように、ノード10-1が稼動系ノードとして動作し、ノード10-2及び10-3が待機系ノードとして動作している場合を例に説明する。   Next, regarding the operation of the fourth embodiment, as in the example of FIG. 1, the node 10-1 operates as an active node and the nodes 10-2 and 10-3 operate as standby nodes. Will be described as an example.

<稼動系ノード内のAPIフック・I/O隔離部の動作>
稼動系ノード10-1内のAPIフック・I/O隔離部137は、上記第1の実施形態におけるAPIフック部134と同様に、図3のフローチャートの示す手順で動作する。即ちAPIフック・I/O隔離部137は、アプリケーション12-1によってコールされたAPI(関数)をフックする。但し、第4の実施形態では、待機系ノード10-2及び10-3内の評価部135は、APIフック・I/O隔離部137によってフックされたAPIを直接実行しない。このため、APIフック・I/O隔離部137が引数を取得する必要はない。つまり、第4の実施形態においてAPIフック・I/O隔離部137は、アプリケーション12-1によってコールされた関数の関数名と返り値とを取得する。取得された、関数名及び返り値を含むAPI情報は、ノード10-1〜10-3のAPI情報記憶部14-1〜14-3(つまり共有API情報記憶部)に時系列順に格納される。
<Operation of API hook / I / O isolation unit in active node>
The API hook / I / O isolation unit 137 in the active node 10-1 operates according to the procedure shown in the flowchart of FIG. 3 in the same manner as the API hook unit 134 in the first embodiment. That is, the API hook / I / O isolation unit 137 hooks an API (function) called by the application 12-1. However, in the fourth embodiment, the evaluation unit 135 in the standby nodes 10-2 and 10-3 does not directly execute the API hooked by the API hook / I / O isolation unit 137. Therefore, the API hook / I / O isolation unit 137 does not need to acquire an argument. In other words, in the fourth embodiment, the API hook / I / O isolation unit 137 acquires the function name and return value of the function called by the application 12-1. The acquired API information including the function name and the return value is stored in chronological order in the API information storage units 14-1 to 14-3 (that is, the shared API information storage unit) of the nodes 10-1 to 10-3. .

<待機系ノード内の評価部及びAPIフック・I/O隔離部の動作>
次に、稼動系ノード10-1に障害が発生した結果、待機系ノード10-2及び10-3内の評価部135が起動されたものとする。これにより待機系ノード10-2及び10-3内の評価部135は、それぞれ当該ノード10-2及び10-3においてアプリケーション12-2及び12-3を稼動することが可能であるかを評価する。
<Operation of Evaluation Unit and API Hook / I / O Isolation Unit in Standby Node>
Next, it is assumed that the evaluation unit 135 in the standby nodes 10-2 and 10-3 is activated as a result of the failure in the active node 10-1. Thus, the evaluation unit 135 in the standby nodes 10-2 and 10-3 evaluates whether the applications 12-2 and 12-3 can be operated in the nodes 10-2 and 10-3, respectively. .

以下、評価部135及びAPIフック・I/O隔離部137の動作について、待機系ノード10-2内の評価部135及びAPIフック・I/O隔離部137の動作を例に、図11の動作説明図を参照して説明する。   The operations of the evaluation unit 135 and the API hook / I / O isolation unit 137 will be described below with reference to the operations of the evaluation unit 135 and the API hook / I / O isolation unit 137 in the standby node 10-2 as an example. This will be described with reference to an explanatory diagram.

待機系ノード10-2内の評価部135は、図11において矢印111で示されるように、APIフック・I/O隔離部137に対して評価モードを通知すると共に、矢印112で示されるように、アプリケーション12-2を実際に起動する。するとアプリケーション12-2は、稼動系ノードにおけるのと同様に動作して、必要に応じてAPI(関数)を呼び出す。   The evaluation unit 135 in the standby node 10-2 notifies the API hook / I / O isolation unit 137 of the evaluation mode as indicated by an arrow 111 in FIG. The application 12-2 is actually activated. Then, the application 12-2 operates in the same manner as in the active node, and calls an API (function) as necessary.

APIフック・I/O隔離部137は、第1の実施形態において稼動系ノードで動作するけるAPIフック部134と同様に、アプリケーション12-2によって呼び出される(コールされる)APIを、図11において矢印113で示されるようにフックする。評価モードにおいて、APIフック・I/O隔離部137は、フックしたAPI(関数)を、アプリケーション12-2とOS11-2との間で授受されるI/Oが隔離されるように、以下に述べるように仮想的に実行する。そしてAPIフック・I/O隔離部137は、関数の実行結果としての返り値を、図11において矢印114で示されるようにアプリケーション12-2に返す。   The API hook / I / O isolation unit 137 displays an API called (called) by the application 12-2 in the same manner as the API hook unit 134 operating in the active node in the first embodiment in FIG. Hook as shown by arrow 113. In the evaluation mode, the API hook / I / O isolation unit 137 sets the hooked API (function) as follows so that the I / O exchanged between the application 12-2 and the OS 11-2 is isolated. Run virtually as described. Then, the API hook / I / O isolation unit 137 returns a return value as a function execution result to the application 12-2 as indicated by an arrow 114 in FIG.

APIフック・I/O隔離部137(待機系ノード10-2内のAPIフック・I/O隔離部137)によってフックされたAPIに関するAPI情報は、当該APIが稼動系ノード10-1内のAPIフック・I/O隔離部137によってフックされた際に、API情報記憶部14-1〜14-3に格納されている。したがって、評価部135から評価モードの通知を受けた待機系ノード10-2内のAPIフック・I/O隔離部137が、フックしたAPIを実行することは、API情報記憶部14-2に格納されているAPI情報の示すAPIを、評価部135がAPIフック・I/O隔離部137を用いて実行することと等価である。   The API information related to the API hooked by the API hook / I / O isolation unit 137 (the API hook / I / O isolation unit 137 in the standby node 10-2) is the API in the active node 10-1. When hooked by the hook / I / O isolation unit 137, it is stored in the API information storage units 14-1 to 14-3. Accordingly, the API information storage unit 14-2 stores that the API hook / I / O isolation unit 137 in the standby node 10-2 receiving the notification of the evaluation mode from the evaluation unit 135 executes the hooked API. This is equivalent to the evaluation unit 135 executing the API indicated by the API information being executed using the API hook / I / O isolation unit 137.

さて、待機系ノード10-2内のAPIフック・I/O隔離部137によってフックされた関数が、当該ディスクライトやネットワークへのデータ送出を伴う特別の関数である場合があり得る。そこでAPIフック・I/O隔離部137は、少なくとも、自身がフックした関数が上記のような特別な関数の場合には、当該関数をOS11-2を用いて実際に実行しないように構成されている。これにより、通常であればアプリケーション12-2とOS11-2との間で授受されるI/Oが隔離され、上記のような特別な関数の実行に起因してディスクライトやネットワークへのデータ送出が発生するのを防止できる。   The function hooked by the API hook / I / O isolation unit 137 in the standby node 10-2 may be a special function that involves data transmission to the disk write or network. Therefore, the API hook / I / O isolation unit 137 is configured not to actually execute the function using the OS 11-2 when the function hooked by itself is a special function as described above. Yes. As a result, I / O that is normally exchanged between the application 12-2 and the OS 11-2 is isolated, and data is transmitted to a disk write or network due to execution of the special function as described above. Can be prevented.

そこでAPIフック・I/O隔離部137は、自身がフックした関数を仮想的に実行することにより当該関数の実行結果としての返り値を生成する。APIフック・I/O隔離部137は、生成された返り値を上述のようにアプリケーション12-2に返す。これによりAPIフック・I/O隔離部137は、アプリケーション12-2から呼び出された関数(API)が実行されたかのように見せかけて、当該アプリケーション12-2に次の処理を行わせることができる。なお、APIフック・I/O隔離部137がフックした関数が上記特別な関数でない場合、OS11-2を用いて当該関数を実行しても構わない。   Therefore, the API hook / I / O isolation unit 137 virtually executes a function hooked by itself, and generates a return value as an execution result of the function. The API hook / I / O isolation unit 137 returns the generated return value to the application 12-2 as described above. As a result, the API hook / I / O isolation unit 137 can make the application 12-2 perform the following process by making it appear as if the function (API) called from the application 12-2 has been executed. If the function hooked by the API hook / I / O isolation unit 137 is not the special function, the function may be executed using the OS 11-2.

APIフック・I/O隔離部137は、アプリケーション12-2に返り値を返す際に、その返り値と実行された関数の関数名とを、図11において矢印115で示されるように、評価部135に渡す。ここでアプリケーション12-2の動作が正常であるならば、当該アプリケーション12-2が起動されてから少なくとも当該アプリケーション12-2の起動が完了するまでの間は、APIフック・I/O隔離部137によってフックされる関数の順番は、API情報記憶部14-2に時系列順に格納されているAPI情報の示す関数の順番に一致する。したがって評価部135は、アプリケーション12-2の動作が正常であるならば、APIフック・I/O隔離部137から渡された関数名の関数が、APIフック・I/O隔離部137によって何番目にフックされたかに基づいて、図11において矢印116で示されるようにAPI情報記憶部14-1を参照することで、当該関数名を含むAPI情報に含まれている返り値を取得することができる。   When returning a return value to the application 12-2, the API hook / I / O isolation unit 137 indicates the return value and the function name of the executed function as shown by an arrow 115 in FIG. Pass to 135. If the operation of the application 12-2 is normal, the API hook / I / O isolation unit 137 is at least from the start of the application 12-2 until the start of the application 12-2 is completed. The order of the functions hooked by is coincident with the order of the functions indicated by the API information stored in the API information storage unit 14-2 in chronological order. Therefore, if the operation of the application 12-2 is normal, the evaluation unit 135 determines the function number of the function name passed from the API hook / I / O isolation unit 137 by the API hook / I / O isolation unit 137. The return value included in the API information including the function name can be acquired by referring to the API information storage unit 14-1 as indicated by the arrow 116 in FIG. it can.

なお、ノード10-i(i=1,2,3)が、APIフック・I/O隔離部137に代えて、稼動系ノードの場合にだけ動作する、第1の実施形態におけるAPIフック部134に相当するAPIフック部と、待機系ノードの場合にだけ動作するAPIフック・I/O隔離部とを有していても構わない。   Note that the API hook unit 134 in the first embodiment operates only when the node 10-i (i = 1, 2, 3) is an active node instead of the API hook / I / O isolation unit 137. And an API hook / I / O isolation unit that operates only in the case of a standby node.

評価部135は、APIフック・I/O隔離部137から渡された返り値が正しいかを、API情報記憶部14-1から取得された返り値と比較することによって判定する。   The evaluation unit 135 determines whether the return value passed from the API hook / I / O isolation unit 137 is correct by comparing it with the return value acquired from the API information storage unit 14-1.

評価部135は、アプリケーション12-2の起動から予め定められたタイミングが到来するまで評価モードを継続する。このタイミングは、例えばアプリケーション12-2の起動が完了するタイミングである。評価部135は、このタイミングが到来すると、評価モードを解除する。これによりAPIフック・I/O隔離部137は、フック動作とフックされた関数の実行とを停止する。   The evaluation unit 135 continues the evaluation mode until a predetermined timing comes from the activation of the application 12-2. This timing is, for example, the timing when the activation of the application 12-2 is completed. When this timing arrives, the evaluation unit 135 cancels the evaluation mode. As a result, the API hook / I / O isolation unit 137 stops the hook operation and the execution of the hooked function.

評価部135は、評価モードの期間に、APIフック・I/O隔離部137によってフックされた関数の実行の結果である返り値が全て正しかったならば、第1の実施形態におけるステップS18と同様に、待機系ノード10-2でのアプリケーション12-2の稼動が可能であることを示す評価結果を、当該ノード10-2内のクラスタ制御部131に通知する。この評価結果は、ノード10-2内のクラスタ制御部131によって他の待機系ノード10-3に通知される。また、この待機系ノード10-3内の評価部135の評価結果は待機系ノード10-2にも通知される。   If all the return values as a result of the execution of the function hooked by the API hook / I / O isolation unit 137 are correct during the evaluation mode, the evaluation unit 135 is the same as step S18 in the first embodiment. Then, the evaluation result indicating that the operation of the application 12-2 on the standby node 10-2 is possible is notified to the cluster control unit 131 in the node 10-2. The evaluation result is notified to the other standby node 10-3 by the cluster control unit 131 in the node 10-2. The evaluation result of the evaluation unit 135 in the standby node 10-3 is also notified to the standby node 10-2.

待機系ノード10-2内の評価部135は、上記第1の実施形態と同様に、当該ノード10-2を含む各待機系ノード(ここでは待機系ノード10-2及び10-3)の評価結果に基づき、当該ノード10-2が引き継ぎ先ノードとして最適かを決定する。
待機系ノード10-3においても、待機系ノード10-2と同様の処理が行われ、当該ノード10-3を含む各待機系ノード(ここでは待機系ノード10-2及び10-3)の評価結果に基づき、当該ノード10-3が引き継ぎ先ノードとして最適かが決定される。
The evaluation unit 135 in the standby node 10-2 evaluates each standby node including the node 10-2 (here, the standby nodes 10-2 and 10-3), as in the first embodiment. Based on the result, it is determined whether the node 10-2 is optimal as the takeover destination node.
In the standby node 10-3, the same processing as that of the standby node 10-2 is performed, and the standby nodes including the node 10-3 (in this case, the standby nodes 10-2 and 10-3) are evaluated. Based on the result, it is determined whether the node 10-3 is optimal as the takeover destination node.

このように第4の実施形態では、待機系ノード10-2及び10-3において、それぞれアプリケーション12-2及び12-3を実際に動作させることにより、当該アプリケーション12-2及び12-3を正常に稼動可能かを判定することができるため、第1の実施形態に比べてより正確に引き継ぎ先ノードを決定することが可能となる。   As described above, in the fourth embodiment, in the standby nodes 10-2 and 10-3, the applications 12-2 and 12-3 are made to operate normally by actually operating the applications 12-2 and 12-3, respectively. Therefore, it is possible to determine the takeover destination node more accurately than in the first embodiment.

なお、本発明は、上記第1乃至第4の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、第1乃至第4の実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、第1乃至第4の実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。   Note that the present invention is not limited to the first to fourth embodiments as they are, and can be embodied by modifying the components without departing from the scope of the invention in the implementation stage. Various inventions can be formed by appropriately combining a plurality of constituent elements disclosed in the first to fourth embodiments. For example, some components may be deleted from all the components shown in the first to fourth embodiments.

本発明の第1の実施形態に係るクラスタシステムの構成を示すブロック図。1 is a block diagram showing a configuration of a cluster system according to a first embodiment of the present invention. 図1に示されるノードの構成を示す示すブロック図。The block diagram which shows the structure of the node shown by FIG. 同第1の実施形態における稼動系ノード内のAPIフック部の動作手順を示すフローチャート。The flowchart which shows the operation | movement procedure of the API hook part in the active system node in the said 1st Embodiment. 同第1の実施形態における稼動系ノード内のAPIフック部の動作を説明するための図。The figure for demonstrating operation | movement of the API hook part in the active node in the said 1st Embodiment. 同第1の実施形態における待機系ノード内の評価部の動作手順を示すフローチャート。The flowchart which shows the operation | movement procedure of the evaluation part in the standby node in the said 1st Embodiment. 本発明の第2の実施形態で適用されるノードの構成を示すブロック図。The block diagram which shows the structure of the node applied in the 2nd Embodiment of this invention. 同第2の実施形態における待機系ノード内の評価部の動作手順を示すフローチャート。The flowchart which shows the operation | movement procedure of the evaluation part in the standby node in the said 2nd Embodiment. 本発明の第3の実施形態で適用されるノードの構成を示すブロック図。The block diagram which shows the structure of the node applied in the 3rd Embodiment of this invention. 同第3の実施形態における待機系ノード内の評価部の動作手順を示すフローチャート。The flowchart which shows the operation | movement procedure of the evaluation part in the standby node in the said 3rd Embodiment. 本発明の第4の実施形態で適用されるノードの構成を示すブロック図。The block diagram which shows the structure of the node applied in the 4th Embodiment of this invention. 同第4の実施形態における待機系ノード内の評価部及びAPIフック部の動作を説明するための図。The figure for demonstrating operation | movement of the evaluation part and API hook part in the standby node in the said 4th Embodiment.

符号の説明Explanation of symbols

10-1〜10-3,10-i…ノード(サーバ計算機)、11-1〜11-3,11-i…OS(オペレーティングシステム)、12-1〜12-3,12-i…アプリケーション、13-1〜13-3,13-i…クラスタ管理部、14-1〜14-3,14-i…API(アプリケーションプログラムインタフェース)情報記憶部(記憶手段)、15-i…収集情報記憶部(記憶手段)、16-i,136…情報収集部、131…クラスタ制御部、134…APIフック部、135…評価部、137…APIフック・I/O隔離部。   10-1 to 10-3, 10-i ... nodes (server computers), 11-1 to 11-3, 11-i ... OS (operating system), 12-1 to 12-3, 12-i ... applications, 13-1 to 13-3, 13-i ... cluster management unit, 14-1 to 14-3, 14-i ... API (application program interface) information storage unit (storage means), 15-i ... collection information storage unit (Storage means), 16-i, 136 ... information collection unit, 131 ... cluster control unit, 134 ... API hook unit, 135 ... evaluation unit, 137 ... API hook / I / O isolation unit.

Claims (7)

稼動系ノードとして動作する場合に所定のアプリケーションを稼動させることによりクライアントに対してサービスを提供する、通信路によって相互接続された複数のサーバ計算機と、前記複数のサーバ計算機によって共有される記憶手段とを備えたクラスタシステムにおいて、
前記複数のサーバ計算機はそれぞれ、前記通信路を介して連携することにより当該複数のサーバ計算機のクラスタ構成を管理するクラスタ管理手段を有し、
前記クラスタ管理手段は、
前記アプリケーションとオペレーティングシステムとの間に位置するフック手段であって、当該クラスタ管理手段を有するサーバ計算機が稼動系ノードとして動作している場合、当該稼動系ノードで稼動している前記アプリケーションが使用するアプリケーションプログラムインタフェースをフックして、そのフックされたアプリケーションプログラムインタフェースの実行結果を含む当該アプリケーションプログラムインタフェースに関するアプリケーションプログラムインタフェース情報を取得し、当該取得されたアプリケーションプログラムインタフェース情報を前記記憶手段に格納するフック手段と、
当該クラスタ管理手段を有するサーバ計算機が待機系ノードとして動作している状態で前記稼動系ノードで障害が発生した場合、前記記憶手段に格納されているアプリケーションプログラムインタフェース情報で示されるアプリケーションプログラムインタフェースを実行し、その実行結果が正しいかを、当該アプリケーションプログラムインタフェース情報に含まれている実行結果に基づいて判定することにより、当該クラスタ管理手段を有するサーバ計算機で前記アプリケーションを稼動することが可能であるかを評価して、その評価結果に基づき、当該クラスタ管理手段を有するサーバ計算機を、前記障害を発生した稼動系ノードの引き継ぎノードとするかを決定する評価手段とを含む
ことを特徴とするクラスタシステム。
A plurality of server computers interconnected by a communication path for providing a service to a client by operating a predetermined application when operating as an active node, and storage means shared by the plurality of server computers; In a cluster system with
Each of the plurality of server computers has cluster management means for managing the cluster configuration of the plurality of server computers by cooperating via the communication path,
The cluster management means includes
A hook means located between the application and the operating system, and when the server computer having the cluster management means is operating as an active node, the application operating on the active node is used. Hook means for hooking an application program interface, obtaining application program interface information related to the application program interface including an execution result of the hooked application program interface, and storing the obtained application program interface information in the storage means When,
When a failure occurs in the active node while the server computer having the cluster management unit is operating as a standby node, the application program interface indicated by the application program interface information stored in the storage unit is executed. Whether the application can be run on the server computer having the cluster management unit by determining whether the execution result is correct based on the execution result included in the application program interface information. A cluster system comprising: evaluation means for evaluating whether a server computer having the cluster management means is to be a takeover node of the failed active node based on the evaluation result .
前記評価手段は、当該クラスタ管理手段を有するサーバ計算機で前記アプリケーションを稼動することが可能である場合に、当該クラスタ管理手段を有するサーバ計算機を、前記障害を発生した稼動系ノードの引き継ぎノードとするThe evaluation means sets the server computer having the cluster management means as a takeover node of the active node in which the failure has occurred when the application can be operated on the server computer having the cluster management means.
ことを特徴とする請求項1記載のクラスタシステム。The cluster system according to claim 1.
前記評価手段は、前記記憶手段に格納されているアプリケーションプログラムインタフェース情報で示されるアプリケーションプログラムインタフェースの実行のために前記アプリケーションを稼動し、
前記フック手段は、前記評価手段によって稼動された前記アプリケーションが使用するアプリケーションプログラムインタフェースをフックして当該アプリケーションプログラムインタフェースを実行することによって、前記アプリケーションと前記オペレーティングシステムとの間で授受される入出力を隔離し、当該アプリケーションプログラムインタフェースの実行結果を前記アプリケーションに返すと共に、前記フックされたアプリケーションプログラムインタフェースの実行結果を含む当該アプリケーションプログラムインタフェースに関する第1のアプリケーションプログラムインタフェース情報を前記評価手段に渡し、
前記評価手段は前記フック手段から渡された前記第1のアプリケーションプログラムインタフェース情報に含まれている実行結果を当該評価手段の実行結果として、その実行結果が正しいかを、前記記憶手段に格納されているアプリケーションプログラムインタフェース情報のうち前記第1のアプリケーションプログラムインタフェース情報に対応する第2のアプリケーションプログラムインタフェース情報に含まれている実行結果に基づいて判定する
ことを特徴とする請求項1記載のクラスタシステム。
The evaluation unit operates the application for execution of the application program interface indicated by the application program interface information stored in the storage unit,
The hook means hooks an application program interface used by the application operated by the evaluation means and executes the application program interface, thereby performing input / output exchanged between the application and the operating system. Isolating and returning the execution result of the application program interface to the application and passing first application program interface information related to the application program interface including the execution result of the hooked application program interface to the evaluation unit;
The evaluation means stores in the storage means whether the execution result included in the first application program interface information passed from the hook means is the execution result of the evaluation means, and whether the execution result is correct. 2. The cluster system according to claim 1, wherein the determination is based on an execution result included in second application program interface information corresponding to the first application program interface information among the existing application program interface information.
前記クラスタ管理手段は、当該クラスタ管理手段を有するサーバ計算機が稼動系ノードとして動作している場合、前記フック手段によってフックされたアプリケーションプログラムインタフェースの実行によって消費されるリソース量を示すデータを収集して、当該収集されたリソース量を示すデータを前記記憶手段に格納する収集手段を更に有し、
前記評価手段は、前記記憶手段に格納されているアプリケーションプログラムインタフェース情報で示されるアプリケーションプログラムインタフェースの実行結果が正しいかを、当該アプリケーションプログラムインタフェース情報に含まれている実行結果に対応する、前記記憶手段に格納されている前記収集されたデータの示すリソース量が確保可能であるかによって判定する
ことを特徴とする請求項1記載のクラスタシステム。
The cluster management means collects data indicating the amount of resources consumed by the execution of the application program interface hooked by the hook means when the server computer having the cluster management means is operating as an active node. , Further comprising collection means for storing data indicating the collected resource amount in the storage means,
The evaluation means determines whether the execution result of the application program interface indicated by the application program interface information stored in the storage means is correct, corresponding to the execution result included in the application program interface information. The cluster system according to claim 1, wherein the determination is based on whether or not the resource amount indicated by the collected data stored in the network can be secured.
前記待機系ノードの数は1を超えており、
前記評価手段は、当該評価手段自身の評価結果及び、当該評価手段を有するサーバ計算機である第1のサーバ計算機とは別のサーバ計算機のうち前記待機系ノードとして動作している別の計算機である第2のサーバ計算機が有する評価手段の評価結果に基づいて、前記第1のサーバ計算機を、前記障害を発生した稼動系ノードの引き継ぎノードとするかを決定する
ことを特徴とする請求項1または4に記載のクラスタシステム。
The number of standby nodes exceeds 1,
The evaluation means is another computer operating as the standby node among server computers different from the evaluation result of the evaluation means itself and the first server computer that is the server computer having the evaluation means. 2. The method according to claim 1 , wherein the first server computer is determined to be a takeover node of the active node in which the failure has occurred , based on an evaluation result of an evaluation unit included in the second server computer . The cluster system according to 3 or 4 .
前記評価手段は、予め定められた優先度に基づき、当該クラスタ管理手段を有するサーバ計算機を、前記障害を発生した稼動系ノードの引き継ぎノードとするかを決定する評価手段とを含む
ことを特徴とする請求項4記載のクラスタシステム
The evaluation unit includes an evaluation unit that determines, based on a predetermined priority, whether the server computer having the cluster management unit is a takeover node of the active node in which the failure has occurred.
The cluster system according to claim 4 .
稼動系ノードとして動作する場合に所定のアプリケーションを稼動させることによりクライアントに対してサービスを提供する、通信路によって相互接続された複数のサーバ計算機と、前記複数のサーバ計算機によって共有される記憶手段とを備えたクラスタシステムにおいて、前記稼動系ノードで障害が発生した場合に引き継ぎ先ノードを決定するための引き継ぎ先ノード決定方法であって、
前記複数のサーバ計算機のうちの稼動系ノードが、当該稼動系ノードで稼動している前記アプリケーションが使用するアプリケーションプログラムインタフェースをフックするステップと、
前記フックされたアプリケーションプログラムインタフェースの実行結果を含む当該アプリケーションプログラムインタフェースに関するアプリケーションプログラムインタフェース情報を取得して、当該取得されたアプリケーションプログラムインタフェース情報を、前記稼動系ノードが前記記憶手段に格納するステップと、
前記稼動系ノードで障害が発生した場合に、前記複数のサーバ計算機のうちの待機系ノードが、前記記憶手段に格納されているアプリケーションプログラムインタフェース情報で示されるアプリケーションプログラムインタフェースを実行するステップと、
前記待機系ノードが、前記アプリケーションプログラムインタフェース情報で示されるアプリケーションプログラムインタフェースの実行結果が正しいかを、当該アプリケーションプログラムインタフェース情報に含まれている実行結果に基づいて判定することにより、当該待機系ノードで前記アプリケーションを稼動することが可能であるかを評価して、その評価結果に基づき、当該待機系ノード自身を、前記障害を発生した稼動系ノードの引き継ぎノードとするかを決定するステップと
を具備することを特徴とする引き継ぎノード決定方法。
A plurality of server computers interconnected by a communication path for providing a service to a client by operating a predetermined application when operating as an active node, and storage means shared by the plurality of server computers; A takeover node determination method for determining a takeover destination node when a failure occurs in the active node,
An active node of the plurality of server computers hooks an application program interface used by the application operating on the active node;
Obtaining application program interface information related to the application program interface including the execution result of the hooked application program interface, and storing the obtained application program interface information in the storage unit by the active node;
When a failure occurs in the active node, the standby node of the plurality of server computers executes an application program interface indicated by the application program interface information stored in the storage unit;
The standby node determines whether the execution result of the application program interface indicated by the application program interface information is correct based on the execution result included in the application program interface information. Evaluating whether it is possible to operate the application, and determining, based on the evaluation result, whether the standby node itself is a takeover node of the active node that has failed. A method for determining a takeover node, characterized in that:
JP2008110570A 2008-04-21 2008-04-21 Cluster system and takeover node determination method Active JP4703681B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008110570A JP4703681B2 (en) 2008-04-21 2008-04-21 Cluster system and takeover node determination method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008110570A JP4703681B2 (en) 2008-04-21 2008-04-21 Cluster system and takeover node determination method

Publications (2)

Publication Number Publication Date
JP2009265689A JP2009265689A (en) 2009-11-12
JP4703681B2 true JP4703681B2 (en) 2011-06-15

Family

ID=41391510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008110570A Active JP4703681B2 (en) 2008-04-21 2008-04-21 Cluster system and takeover node determination method

Country Status (1)

Country Link
JP (1) JP4703681B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6024138B2 (en) * 2012-03-21 2016-11-09 日本電気株式会社 Cluster system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004133764A (en) * 2002-10-11 2004-04-30 Toshiba Corp Cluster system and service control method in the system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004133764A (en) * 2002-10-11 2004-04-30 Toshiba Corp Cluster system and service control method in the system

Also Published As

Publication number Publication date
JP2009265689A (en) 2009-11-12

Similar Documents

Publication Publication Date Title
US10248404B2 (en) Managing update deployment
US8826290B2 (en) Method of monitoring performance of virtual computer and apparatus using the method
US7992032B2 (en) Cluster system and failover method for cluster system
JP4462969B2 (en) Failover cluster system and failover method
US20180351793A1 (en) System and method for providing secure and redundant communications and processing for a collection of internet of things (iot) devices
CA3168286A1 (en) Data flow processing method and system
US20180351792A1 (en) System and method for providing secure and redundant communications and processing for a collection of internet of things (iot) devices
WO2012056596A1 (en) Computer system and processing control method
CN110071821A (en) Standby node is specified
US8656012B2 (en) Management computer, storage system management method, and storage system
US20080288812A1 (en) Cluster system and an error recovery method thereof
CN114064414A (en) High-availability cluster state monitoring method and system
JP2017502414A (en) System and method for supporting asynchronous calls in a distributed data grid
JP2010231502A (en) Job processing method, computer-readable recording medium having stored job processing program, and job processing system
CN112860386A (en) Method for switching nodes in distributed master-slave system
US11934665B2 (en) Systems and methods for ephemeral storage snapshotting
US20070174836A1 (en) System for controlling computer and method therefor
JP5408620B2 (en) Data distribution management system and data distribution management method
CN106843890B (en) Sensor network, node and operation method thereof based on intelligent decision
JP4703681B2 (en) Cluster system and takeover node determination method
CN112698929A (en) Information acquisition method and device
US20230385159A1 (en) Systems and methods for preventing data loss
JP5617586B2 (en) Information processing program, relay device, and relay management device
CN113672665A (en) Data processing method, data acquisition system, electronic device and storage medium
JP2010182017A (en) Distributed computer system, manager succession method and manager succession program

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110308

R150 Certificate of patent or registration of utility model

Ref document number: 4703681

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350