Heartbeat mechanism for cluster systems
17 claims: 2 independent, 15 dependent
- 1A heartbeat system for a clustered computer system (800) including a plurality of nodes (805,810) including database instances (830,945) that operate as a database cluster, the system comprising:a quorum file (840) for receiving heartbeat messages from the plurality of nodes (805,810) based on IEEE 1394 protocol, the quorum file being implemented as a separate file for each node and being stored on a shared storage device accessible by each of the plurality of nodes;a heartbeat logic (835,950) associated with each of the plurality of nodes (805,810) that communicates the heartbeat messages from the associated node (805,810) to the quorum file based on the IEEE 1394 protocol, each heartbeat message including a node identifier that identifies the node sending the message and a time stamp indicating the time of the message;and a network controller (825) configured to provide communication access between the quorum file and the heartbeat logic (835,950) associated with the plurality of nodes (805,810), wherein the network controller provides communication with the quorum file in accordance with the IEEE 1394 protocol.
- 11A method of monitoring nodes in a cluster where the nodes include database instances (830,945) that operate as a database cluster, the method comprising the steps of:allocating a quorum file (840) for storing status messages received from nodes in the cluster where the nodes communicate with the quorum file using IEEE 1394 communication protocol, the quorum file being implemented as a separate file for each node and being stored on a shared storage device accessible by each of the plurality of nodes;generating and transmitting status messages from the nodes (805,810) to the quorum file based on the IEEE 1394 communication protocol, the status messages comprising a node identifier that identifies the node sending the message and a time stamp indicating the time of the message;and periodically receiving a status message from a node in the cluster indicating that the node is active, the status message being received based on the IEEE 1394 communication protocol.
Independent claims2
76 paragraphs, as filed
Field Of The Invention
0001The invention relates to the clustering arts. It finds particular application to a clustering system having a heartbeat system and method.
Background Of The Invention
0002A cluster is a group of independent servers that collaborate as a single system. The primary cluster components are processor nodes, a cluster interconnect (private network), and a disk subsystem. The clusters share disk access and resources that manage the data, but each distinct hardware cluster nodes do not share memory. Each node has its own dedicated system memory as well as its own operating system, database instance, and application software. Clusters can provide improved fault resilience and modular incremental system growth over single symmetric multiprocessors systems. In the event of subsystem failures, clustering ensures high availability. Redundant hardware components, such as additional nodes, interconnects, and shared disks, provide higher availability. Such redundant hardware architectures avoid single points-of-failure and provide fault resilience.
0003In a database cluster, CPU and memory requirements for each node may vary depending on the database application. Performance and cost requirements also vary between database applications. One factor that contributes to performance is that each node in a cluster needs to keep other nodes in that cluster informed of its health and configuration. This has been done by periodically broadcasting a network message, called a heartbeat, across a network. The heartbeat signal is usually sent over a private network, a cluster interconnect, which is used for internode communications. However, lost or delayed heartbeat messages may cause false reports that a node is not functioning.
0004In prior systems, the cluster interconnect has been built by installing network cards in each node and connecting them by an appropriate network cable and configuring a software protocol to run across the wire. The interconnect was typically alow-cost/slow-speed Ethernet card running TCP/IP or UDP, or a high-cost/high- speed proprietary interconnect like Compaq's Memory Channel running Reliable DataGram (RDG) or Hewlett-Packard's Hyperfabric/2 with Hyper Messaging Protocol (HMP). Alow-cost/high-speed interconnect would reduce clustering costs for users and reduce latency during run-time.
0005<nplcit id="ncit0001" npl-type="b"><text>Gregory F Pfister: "In Search of Clusters", 1998, Prentice Hall, New Jersey 013899</text></nplcit>, describes using a variety of I/O interconnects such as SCSI, SSA and Fibre Channel.
0006<nplcit id="ncit0002" npl-type="s"><text>Yamagiwa S et al: "Meastro-Link: A High Performance Interconnect for PC Cluster", Journal Article, 1998, pages 421-425</text></nplcit>, describes the use of a network interface NI connected to a switch box using IEEE 1394.
0007"<nplcit id="ncit0003" npl-type="s"><text>Oracle 8i Parallel Server", Oracle, [Online] December 1999 (1999-12</text></nplcit>), describes clustered computer networks.
0008The present invention provides a new and useful method and system of clustering that addresses the above problems.
0009In accordance with a first aspect of the present invention, a heartbeat system for a clustered computer system including a plurality of nodes including database instances that operate as a database cluster, the system comprising: <ul id="ul0001" list-style="none" compact="compact"><li>a quorum file for receiving heartbeat messages from the plurality of nodes based on IEEE 1394 protocol, the quorum file being implemented as a separate file for each node and being stored on a shared storage device accessible by each of the plurality of nodes;</li><li>a heartbeat logic associated with each of the plurality of nodes that communicates the heartbeat messages from the associated node to the quorum file based on the IEEE 1394 protocol, each heartbeat message including a node identifier that identifies the node sending the message and a time stamp indicating the time of the message; and</li><li>a network controller configured to provide communication access between the quorum file and the heartbeat logic associated with the plurality of nodes, wherein the network controller provides communication with the quorum file in accordance with the IEEE 1394 protocol.</li></ul>
0010In accordance with a second aspect of the present invention, a method of monitoring nodes in a cluster where the nodes include database instances that operate as a database cluster, the method comprising the steps of: <ul id="ul0002" list-style="none" compact="compact"><li>allocating a quorum file for storing status messages received from nodes in the cluster where the nodes communicate with the quorum file using IEEE 1394 communication protocol, the quorum file being implemented as a separate file for each node and being stored on a shared storage device accessible by each of the plurality of nodes;</li><li>generating and transmitting status messages from the nodes to the quorum file based on the IEEE 1394 communication protocol, the status messages comprising a node identifier that identifies the node sending the message and a time stamp indicating the time of the message; and</li><li>periodically receiving a status message from a node in the cluster indicating that the node is active, the status message being received based on the IEEE 1394 communication protocol.</li></ul>
Brief Description Of The Drawings
0011In the accompanying drawings which are incorporated in and constitute a part of the specification, embodiments of a system and method are illustrated, which, together with the detailed description given below, serve to describe the example embodiments of the system and method. It will be appreciated that the illustrated boundaries of elements (e. g. boxes or groups of boxes) in the figures represent one example of the boundaries. One of ordinary skill in the art will appreciate that one element may be designed as multiple elements or that multiple elements may be designed as one element. An element shown as an internal component of another element may be implemented as an external component and vise versa.
0012<figref idref="f0001">Figure 1</figref> is an example system diagram of one embodiment of a cluster node in accordance with the present invention;
0013<figref idref="f0002">Figure 2</figref> is an example diagram of the interconnect bus controller of <figref idref="f0001">Figure 1</figref>;
0014<figref idref="f0003">Figure 3</figref> is an example of a shared disk cluster architecture;
0015<figref idref="f0003">Figure 4</figref> is an example of an share-nothing cluster architecture;
0016<figref idref="f0004">Figure 5</figref> is an example methodology of communicating data using the interconnect bus;
0017<figref idref="f0005">Figure 6</figref> is an example methodology of detecting a topology change;
0018<figref idref="f0005">Figure 7</figref> is another example methodology of detecting a topology change;
0019<figref idref="f0006">Figure 8</figref> is another embodiment of a cluster including a heartbeat system;
0020<figref idref="f0007">Figure 9</figref> is another embodiment of a heartbeat system;
0021<figref idref="f0008">Figure 10</figref> is an example methodology of maintaining a quorum file; and
0022<figref idref="f0008">Figure 11</figref> is an example methodology of determining the status of a node using the quorum file.
Detailed Description Of Illustrated Embodiments
0023The following includes definitions of selected terms used throughout the disclosure. Both singular and plural forms of all terms fall within each meaning:
0024"Computer-readable medium" as used herein refers to any medium that participates in directly or indirectly providing signals, instructions and/or data to a processor for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media may include, for example, optical or magnetic disks. Volatile media may include dynamic memory. Transmission media may include coaxial cables, copper wire, and fiber optic cables. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave/pulse, or any other medium from which a computer can read.
0025"Logic", as used herein, includes but is not limited to hardware, firmware, software and/or combinations of each to perform a function(s) or an action(s), and/or to cause a function or action from another component. For example, based on a desired application or needs, logic may include a software controlled microprocessor, discrete logic such as an application specific integrated circuit (ASIC), or other programmed logic device. Logic may also be fully embodied as software.
0026"Signal", as used herein, includes but is not limited to one or more electrical signals, analog or digital signals, a change in a signal's state (e.g. a voltage increase/drop), one or more computer instructions, messages, a bit or bit stream, or other means that can be received, transmitted, and/or detected.
0027"Software", as used herein, includes but is not limited to one or more computer readable and/or executable instructions that cause a computer or other electronic device to perform functions, actions, and/or behave in a desired manner. The instructions may be embodied in various forms such as routines, algorithms, modules or programs including separate applications or code from dynamically linked libraries. Software may also be implemented in various forms such as a stand-alone program, a function call, a servlet, an applet, instructions stored in a memory, part of an operating system or other type of executable instructions. It will be appreciated by one of ordinary skill in the art that the form of software is dependent on, for example, requirements of a desired application, the environment it runs on, and/or the desires of a designer/programmer.
0028Illustrated in <figref idref="f0001"><b>Figure 1</b></figref> is one embodiment of a simplified clustered database system <b>100</b> in accordance with one embodiment of the present invention. Although two nodes are shown in the example, node <b>105</b> and node <b>110,</b> different numbers of nodes may be used and clustered in different configurations. Although a database cluster is used as an example, the system can also be applied to other types of clustered systems. Each node is a computer system that executes software and processes information. The computer system may be a personal computer, a server, or other computing device. Each node may include a variety of components and devices such as one or more processors <b>115,</b> an operating system <b>120,</b> memories, data storage devices, data communication buses, and network communication devices. Each node may have a different configuration from other nodes. An example of one type of clustering system is described in <patcit id="pcit0001" dnum="US6353836B"><text>U.S. Patent Number 6,353,836</text></patcit>, entitled "METHOD AND APPARATUS FOR TRANSFERRING DATA FROM THE CACHE OF ONE NODE TO THE CACHE OF ANOTHER NODE," assigned to the present assignee.
0029With further reference to <figref idref="f0001"><b>Figure 1</b></figref><b>,</b> node 105 will be used to describe an example configuration of a node in the clustered database system <b>100.</b> In this embodiment, nodes are networked in a data sharing arrangement where each node has access to one or more data storage devices <b>125.</b> The data storage devices <b>125</b> can maintain a variety of files such as database files that may be shared by the nodes connected in the cluster. A network controller <b>130</b> connects the node <b>105</b> to a network <b>135.</b> The operating system <b>120</b> includes a communication interface between software applications running on the node <b>105</b> and the network controller <b>130.</b> For example, the interface may be a network device driver <b>140</b> that is programmed in accordance with the selected communications protocol of the network <b>135.</b>
0030Examples of communication protocols that may be used for network controller <b>130</b> and network <b>135</b> include the Fibre Channel ANSI Standard X3.230 and/or the SCSI-3 ANSI Standard X3.270. The Fibre Channel architecture provides high speed interface links to both serial communications and storage I/O. Other embodiments of the network controller <b>130</b> may support other methods of connecting the storage device <b>125</b> and nodes <b>105, 110</b> such as embodiments utilizing Fast-40 (Ultra-SCSI), Serial Storage Architecture (SSA), IEEE Standard 1394, Asynchronous Transfer Mode (ATM), Scalable Coherent Interface (SCI) IEEE Standard 1596-1992, or some combination of the above, among other possibilities
0031The node <b>105</b> further includes a database instance <b>145</b> that manages and controls access to data maintained in the one or more storage devices <b>125.</b> Since each node in the clustered database system <b>100</b> executes a database instance that allows that particular node to access and manipulate data on the shared database in the storage device <b>125,</b> a lock manager <b>150</b> is provided. The lock manager <b>150</b> is an entity that is responsible for granting, queuing, and keeping track of locks on one or more resources, such as the shared database stored on the storage device <b>125.</b> Before a process can perform an operation on the shared database, the process is required to obtain a lock that grants to the process a right to perform a desired operation on the database. To obtain a lock, a process transmits a request for the lock to a lock manager. To manage the use of resources in a network system, lock managers are executed on one or more nodes in the network.
0032A lock is a data structure that indicates that a particular process has been granted certain rights with respect to the resource. There are many types of locks. Some types of locks may be shared by many processes while other types of locks prevent any other locks to be granted on the same resource. A more detailed description of one example of a lock management system is found in <patcit id="pcit0002" dnum="US6405274B1"><text>U.S. Patent Number 6,405,274 B1</text></patcit> entitled "ANTICIPATORY LOCK MODE CONVERSIONS IN A LOCK MANAGEMENT SYSTEM," assigned to the present assignee.
0033To keep track of and manage the nodes on the network that may have access to the storage device <b>125,</b> a cluster configuration file <b>155</b> is maintained. The cluster configuration file <b>155</b> contains a current list of active nodes in the cluster including identification information such as node address, node ID, and connectivity structure (e.g. neighbor nodes, parent-child nodes). Of course, other types of information may be included in such a configuration file and may vary based on the type of network system. When a topology change occurs in the cluster, the node is identified and the cluster configuration file <b>155</b> is updated to reflect the current state of the cluster node. Examples of topology changes include when a node is added, removed, or stops operating.
0034With further reference to <figref idref="f0001"><b>Figure 1</b></figref><b>,</b> the database cluster system <b>100</b> further includes an interconnect network <b>160</b> that provides node-to-node communication between the nodes 105 and <b>110.</b> The interconnect network <b>160</b> provides a bus that allows all nodes on the network to have two-way communication with each other. The interconnect <b>160</b> provides an active communication protocol for sending messages and data to and from each node over the same bus. To be connected to the interconnect network <b>160,</b> each node includes an interconnect bus controller <b>165</b> which may be a peripheral card plugged into a PCI slot of the node. The controller <b>165</b> includes one or more connection ports <b>170</b> for connecting cables between nodes. Three connection ports are illustrated in port <b>170</b> although different numbers of ports may be used.
0035In one embodiment, the interconnect bus controller <b>165</b> operates in accordance with IEEE 1394 protocol, also known as firewire or i.LINK. In order for the database instance <b>145,</b> or other application running on node <b>105,</b> to communicate with the interconnect bus <b>160,</b> a bus device driver <b>175</b> is provided. The bus device driver <b>175</b> works with the operating system <b>120</b> to interface applications with the interconnect bus controller 165. For example, database commands from the database instance <b>145</b> are translated by the bus device driver <b>165</b> to IEEE 1394 commands or open host controller interface (OHCI) commands. The IEEE 1394 OHCI specification defines standard hardware and software for connections to the IEEE 1394 bus. OHCI defines standard register addresses and functions, data structures, and direct memory access (DMA) models.
0036IEEE 1394 is a bus protocol that provides easy to use, low cost, high speed communications. The protocol is very scaleable, provides for both asynchronous and isochronous applications, allows for access to large amounts of memory mapped address space, and allows peer-to-peer communication. It will be appreciated by one of ordinary skill in the art that the interconnect bus controller <b>165</b> may be modified to accommodate other versions of the IEEE 1394 protocol such as IEEE 1394a, 1394b, or other future modifications and enhancements.
0037The IEEE 1394 protocol is a peer-to-peer network with a point-to-point signaling environment. Nodes on the bus 160 may have several ports on them, for example ports <b>170.</b> Each of these ports acts as a repeater, retransmitting any data packets received by other ports within the node. Each node maintains a node map <b>180</b> that keeps track of the current state of the network topology/configuration. In its current form, the IEEE 1394 protocol supports up to 63 devices on a single bus, and connecting to a device is as easy as plugging in a telephone jack. Nodes, and other devices, can be instantly connected without first powering down the node and re-booting the network. Management of the database cluster topology will be described in greater detail below.
0038With the interconnect network <b>160,</b> the database <b>145</b> in node <b>105</b> may directly request data, transmit/receive data, or send messages to a running database application on node <b>110</b> or other node in the cluster. This avoids having to send messages or data packets to the storage device <b>125</b> which would involve one or more intermediate steps, additional disk I/O, and would increase latency.
0039Illustrated in <figref idref="f0002"><b>Figure 2</b></figref> is an example of the interconnect bus controller <b>165</b> based on the IEEE 1394 standard. It includes three ISO protocol layers: a transaction layer <b>200,</b> a link layer <b>205</b> and a physical layer <b>210.</b> The layers may be implemented in logic as defined above including hardware, software, or both. The transaction layer <b>200</b> defines a complete request-response protocol to perform bus transactions with three basic operations: read, write, and lock. The link layer <b>205</b> is the midlevel layer and it interacts with both the transaction layer <b>200</b> and the physical layer <b>210,</b> providing asynchronous and isochronous delivery service for data packets. Components to control data delivery include a data packet transmitter, data packet receiver, and a clock cycle controller.
0040The physical layer <b>210</b> provides the electrical and mechanical interface between the controller <b>165</b> and a cable(s) that forms part the interconnect bus <b>160.</b> This includes the physical ports <b>170.</b> The physical layer <b>210</b> also ensures that all nodes have fair access to the bus using an arbitration mechanism. For example, when a node needs to access the bus, it sends a request to its parent node(s), which forwards the request to a root node. The first request received by the root is accepted; all others are rejected and withdrawn. The closer the node is to the root, the better its chance of acceptance. To solve consequent arbitration unfairness, periods of bus activity are split into intervals. During an interval, each node gets to transmit once and then it waits until the next interval. Of course, other schemes may be used for arbitration.
0041Other functions of the physical layer <b>210</b> include data resynchronization, encoding and decoding, bus initialization, and controlling signal levels. As mentioned previously, the physical layer of each node also acts as a repeater, translating the point-to-point connections into a virtual broadcast bus. A standard IEEE 1394 cable provides up to 1.5 amps of DC power to keep remote devices "aware," even when they are powered down. Based on IEEE 1394, the physical layer also allows nodes to transmit data at different speeds on a single medium. Nodes, or other devices, with different data rate capabilities communicate at the slower device rate.
0042The interconnect bus controller <b>165,</b> operating based on IEEE 1394 protocol, is an active port and provides for a self-monitoring/self-configuring serial bus. This is known as hot plug-and-play that allows users to add or remove devices even if the bus is active. Thus, nodes and other devices may be connected and disconnected without interrupting network operation. A self monitoring/self configuring logic <b>215</b> automatically detects topology changes in the cluster system based on changes in the interconnect bus signal. The bus controller <b>165</b> of a node places a bias signal on the interconnect bus <b>160</b> once the node is connected to the bus. Neighboring nodes, through the self-monitoring logic <b>215,</b> automatically detect the bias signal which may appear as a change in voltage. Thus, the detected bias signal indicates that a node has been added and/or that the node is still active. Conversely, the absence of the bias signal indicates that a node has been removed or has stopped functioning. In this manner, topology changes can be detected without using polling messages that are transmitted between nodes. The self-configuring aspect of the logic <b>215</b> will be described in greater detail with reference to <figref idref="f0005"><b>Figures 6</b> and <b>7</b></figref>.
0043An application program interface (API) layer <b>220</b> may be included in the bus controller <b>165</b> as an interface to the bus device driver <b>175.</b> It generally includes higher level system guidelines/interfaces that bring the data, the end system design, and the application together. The API layer <b>220</b> may be programmed with desired features to customize communication between the database instance <b>145</b> (and other applications) and the interconnect bus controller <b>165.</b> Optionally, the functions of the API layer <b>220</b> may be embodied in whole or in part within the transaction layer <b>200</b> or the bus device driver <b>175.</b>
0044With reference to <figref idref="f0003"><b>Figure 3</b></figref><b>,</b> one embodiment of a database cluster architecture <b>300</b> is shown in which the present system and method may be implemented. The architecture <b>300</b> is generally known as a shared disk architecture and is similar to <figref idref="f0001"><b>Figure 1</b></figref> except that additional nodes are shown. Generally in a shared disk database architecture, files and/or data are logically shared among the nodes with each database instance having access to all data. The shared disk access is accomplished, for example, by direct hardware connectivity to one or more storage devices <b>305</b> that maintain the files. Optionally, the connections may be performed by using an operating system abstraction layer that provides a single view of all the storage devices <b>305</b> on all the nodes. The nodes A-D are also connected via the node interconnect 160 to provide node-to-node communication. In the shared disk architecture, transactions running on any database instance within a node can directly read or modify any part of the database on storage device <b>305.</b> Access is controlled by one or more lock managers as described previously.
0045With reference to <figref idref="f0003"><b>Figure 4</b></figref><b>,</b> another embodiment of a cluster architecture is shown that may incorporate the present system and method. Cluster architecture <b>400</b> is typically referred to as a shared-nothing architecture. An example of a shared-nothing architecture is described in <patcit id="pcit0003" dnum="US6321218B"><text>U.S. Patent Number 6,321,218</text></patcit>, entitled "HYBRID SHARED NOTHING/SHARED DISK DATABASE SYSTEM," assigned to the present assignee. In a pure shared-nothing architecture, database files, for example, are partitioned among the database instances running on nodes <b>A-D</b>. Each database instance or node has ownership of a distinct subset of the data and all access to this data is performed exclusively by this "owning" instance. The nodes are also connected with the interconnect <b>160.</b>
0046For example, if data files stored on storage devices A-D contained employee files, the data files may be partitioned such that node <b>A</b> controls employee files for employee names beginning with the letters A-G, node <b>B</b> controls employee files on storage device <b>B</b> for employee names H-N, node <b>C</b> controls employee files for names "O-U" on storage device C and node <b>D</b> controls employee file names "V-Z" on storage device <b>D.</b> To access data from other nodes, a message would be sent requesting such data. For example, if node <b>D</b> desired an employee file which was controlled by node <b>A,</b> a message would be sent to node <b>A</b> requesting the data file. Node A would then retrieve the data file from storage device <b>A</b> and transmit the data to node <b>D.</b> It will be appreciated that the present system and method may be implemented on other cluster architectures and configurations such as tree structures and with other data access rights and/or restrictions as desired for a particular application.
0047Illustrated in <figref idref="f0004"><b>Figure 5</b></figref> is one embodiment of a methodology associated with the cluster system of <figref idref="f0003"><b>Figure 3</b> or <b>4</b></figref><b>.</b> The embodiment describes directly transmitting and receiving data between nodes using the interconnect bus <b>160.</b> The illustrated elements denote "processing blocks" and represent computer software instructions or groups of instructions that cause a computer to perform an action(s) and/or to make decisions. Alternatively, the processing blocks may represent functions and/or actions performed by functionally equivalent circuits such as a digital signal processor circuit or an application specific integrated circuit (ASIC). The diagram, as well as the other illustrated diagrams, does not depict syntax of any particular programming language. Rather, the diagram illustrates functional information one skilled in the art could use to fabricate circuits, to generate computer software, or a combination of hardware and software to perform the illustrated processing. It will be appreciated that electronic and software applications may involve dynamic and flexible processes such that the illustrated blocks can be performed in other sequences different than the one shown and/or blocks may be combined or, separated into additional components. They may also be implemented using various programming approaches such as machine language, procedural, object oriented and/or artificial intelligence techniques. The foregoing applies to all methodologies described herein.
0048With reference to <figref idref="f0004"><b>Figure 5</b></figref><b>,</b> diagram <b>500</b> is one example of communicating data between nodes using the node-to-node interconnect network <b>160.</b> When a node (a requesting node) desires data from another node, a data request message is transmitted (block <b>505)</b> to a destination node via the interconnect bus <b>160.</b> The data request may be sent directly to one or more selected destination nodes by attaching the node name and/or address to the request. If the location of the requested data is unknown, the data request may be broadcasted to each node in the interconnect network.
0049When the data request is received by the appropriate node, the database instance determines whether the data is available on that node (block <b>510).</b> If the data is not available, a message is transmitted to the requesting node that the data is not available (block <b>515).</b> If the data is available, the data is retrieved from local memory (block <b>520)</b> by direct memory access, and it is transmitted to the requesting node over the interconnect bus (block <b>525).</b> Remote direct memory access can also be implemented to perform a direct memory to memory transfer. In this manner, messages and data may be transmitted directly between nodes without having to transmit the messages or data to a shared storage device. The node-to-node communication reduces latency and reduces the number of disk inputs/outputs.
0050Illustrated in <figref idref="f0005"><b>Figure 6</b></figref> in an example methodology of reconfiguring the cluster architecture based on the IEEE 1394 bus protocol. When a node in the database cluster is added, removed, or stops functioning, the database cluster needs to detect the change, identify the node, and the cluster needs to be reconfigured appropriately. As described previously, the interconnect bus controller <b>165 (</b><figref idref="f0001"><b>Figure 1</b></figref><b>),</b> operating based on IEEE 1394 protocol, is an active port and provides for a self-configuring serial bus. Thus, nodes and other devices may be connected and disconnected without interrupting network operation.
0051For example, when a node is added to the bus, the bus is reset (block <b>605).</b> The interconnect controller <b>165</b> of the added node automatically sends a bias signal on the bus and neighboring nodes can detect its bias signal (block <b>610).</b> Similarly, the absence of a node's bias signal can be detected when a node is removed. In other words, the interconnect controller <b>165</b> of neighboring nodes can detect signal changes on the interconnect bus <b>160</b> such as a change in the bus signal strength caused by adding or removing a node. The topology change is then transmitted to all other nodes in the database cluster. The bus node map is rebuilt with the changes (block <b>615).</b> In one embodiment, the node map can be updated with the changes. The database instance is notified and it updates the cluster configuration file (block <b>620)</b> to keep track of the active nodes for the lock managers. Of course, the order of the illustrated sequence may be implemented in other ways.
0052Using the IEEE 1394 protocol, the interconnect controller <b>165</b> is an active port that includes a self-monitoring/self-configuration mechanism as described above. With this mechanism, the database cluster system can be reconfigured without the added latency involved with polling mechanisms since nodes can virtually instantly detect a change in the topology. The active port also allows reconfiguration of the cluster without having to power-down the network.
0053Illustrated in <figref idref="f0005"><b>Figure 7</b></figref> is another embodiment of detecting and reconfiguring the cluster. Each node monitors the interconnect bus (block <b>705)</b> to detect a change in the bus signal such as the presence or absence of a bias signal. When a node detects a topology change (block <b>710),</b> it sends a bus reset signal on the bus, starting a self-configuring mechanism. This mechanism, managed by the physical layer <b>210,</b> may include three phases: bus initialization, tree identification, and self identification. During bus initialization, active nodes are identified and a treelike logical topology is built (block <b>715).</b> Each active node is assigned an address, a root node is dynamically assigned, and the node map is rebuilt or updated with the new topology (block <b>720).</b> Once the bus is configured itself, the nodes can then access the bus. The database instances on each node are notified of the topology change (block <b>725)</b> and the database lock manager(s) are reconfigured with the changes so that the shared database can be managed properly throughout the cluster (block <b>730).</b>
0054It will be appreciated that the network connections, such as network <b>135</b> may be implemented in other ways. For example, it may include communications or networking software such as the software available from Novell, Microsoft, Artisoft, and other vendors, and may operate using TCP/IP, SPX, IPX, and other protocols over twisted pair, coaxial, or optical fiber cables, telephone lines, satellites, microwave relays, radio frequency signals, modulated AC power lines, and/or other data transmission wires known to those of skill in the art. The network <b>135</b> can be connectable to other networks through a gateway or similar mechanism. It will also be appreciated that the protocol of the interconnect bus <b>160</b> may include a wireless version.
0055With reference to <figref idref="f0006"><b>Figure 8</b></figref><b>,</b> one embodiment of a heartbeat system is shown for a database cluster <b>800.</b> A heartbeat system is a mechanism where nodes periodically generate signals or messages indicating that they are active and functioning. The mechanism also allows nodes to determine the health or status of other nodes in the cluster based on the generated signals. As shown, the cluster <b>800</b> includes nodes <b>805</b> and <b>810</b> although any number of nodes may be connected to the cluster. The illustrated nodes may have a similar configuration as the nodes shown in <figref idref="f0001"><b>Figure 1</b></figref><b>.</b> However, a simplified configuration is shown for illustrative purposes.
0056The nodes <b>805, 810</b> share access to a storage device <b>815</b> that maintains files such as database files. The nodes are connected to the storage device <b>815</b> by a shared storage network <b>820.</b> In one embodiment, the network <b>820</b> is based on IEEE 1394 communication protocol. To communicate with each other, nodes <b>805, 810</b> and the storage device <b>815</b> include an IEEE 1394 network controller <b>825.</b> The network controller <b>825</b> is similar to the interconnect bus controller <b>165</b> and in one embodiment, is a network card that is plugged into each device. Alternatively, the controller may be fixed within the node. The network controller <b>825</b> includes one or more ports so that cables can be connected between each device. Additionally, other types of network connections may be utilized, for example wireless connections, that are based on the IEEE 1394 protocol, or other similar protocol standards.
0057With further reference to <figref idref="f0006"><b>Figure 8</b></figref><b>,</b> each node includes a database instance <b>830</b> that controls access to the files on the storage device <b>815.</b> Since resources are shared between nodes in the database cluster <b>800,</b> each node includes logic to inform other nodes of their health and includes logic to determine the health of other nodes on the network. For example, a heartbeat logic <b>835</b> is programmed to generate and transmit a heartbeat message within a predetermined time interval. A heartbeat message is also referred to as a status signal. The predetermined time interval may be any selected interval but is typically on the order of milliseconds to seconds, for example, 300 milliseconds to 5 seconds. So if the interval is one second, each node would transmit a heartbeat message every one second.
0058In one embodiment, the network load is used as a factor in determining the heartbeat time interval. For example, if heartbeat messages are transmitted on the same network as data, then a high frequency of heartbeat messages on the network may cause delays in data transmission processees. <figref idref="f0006"><b>Figure 8</b></figref> shows a network that may be impacted by this situation while <figref idref="f0007"><b>Figure 9</b></figref> shows a network that reduces the amount of network traffic by implementing the heartbeat system on a different network. It will be further appreciated that the networks of <figref idref="f0006"><b>Figures 8</b></figref> and <figref idref="f0007">9</figref> may also be configured as a shared-nothing architecture.
0059With reference again to <figref idref="f0006"><b>Figure 8</b></figref><b>,</b> heartbeat messages from each node are collected and stored in a quorum file <b>840.</b> In this embodiment, the quorum file <b>840</b> is one or more files or areas defined within the storage device <b>815</b> which also maintains the shared files. Each node in the cluster <b>800</b> is allocated address space within the quorum file <b>840</b> to which its heartbeat messages are stored. The space of the quorum file <b>840</b> is typically equally divided and allocated to each node although other configurations may be possible. Thus, the quorum file <b>840</b> can be implemented as a separate file for each node rather than one file for the entire cluster even though the file may be logically defined as one data structure. The quorum file may be implemented as a stack, an array, a table, a linked list, a text file or other type of data structure, stored in one or more memory locations, registers, or other type of storage area. Once a node's quorum space is full, the oldest messages in the space are pushed out or overwritten as new messages are received.
0060Illustrated in <figref idref="f0007"><b>Figure 9</b></figref> is another embodiment of a database cluster <b>900</b> and a heartbeat system. In this embodiment, nodes <b>905</b> and <b>910</b> communicate with a quorum device <b>915</b> over a quorum network <b>920.</b> The quorum network <b>920</b> is a separate network than a shared storage network <b>925.</b> Thus, the nodes access shared files on storage device <b>930</b> using a different network bus than the quorum network. The quorum network <b>920</b> may be part of a node-to-node interconnect network as previously described. The quorum device <b>915</b> includes data storage configured to maintain a quorum file for storing heartbeat messages received from the nodes in the cluster.
0061With further reference to <figref idref="f0007"><b>Figure 9</b></figref><b>,</b> the nodes <b>905, 910</b> are connected to the quorum device <b>915</b> and communicate to each other in accordance with the IEEE 1394 communication protocol. Each node and the quorum device <b>915</b> includes an IEEE 1394 controller <b>935</b> similar to the controllers described previously. Since a separate network is configured for data communication to the files, each node includes a separate shared network controller <b>940</b> that communicates to the storage device <b>930.</b> The shared network controller <b>940</b> may be an IEEE 1394 controller or other network protocol such as fibre channel protocol. A database instance <b>945</b> within each node processes data requests over the shared network controller <b>940.</b>
0062A heartbeat logic <b>950</b> controls the heartbeat mechanism and uses the IEEE 1394 controller <b>935</b> to communicate with the quorum device <b>915.</b> With this architecture, adding or replacing a quorum devices <b>915</b> within an existing database cluster <b>900</b> can be easily performed with minimal impact on the existing network. Also, since the heartbeat mechanism is processed over a separate network, traffic on the shared storage network <b>925</b> is reduced allowing quicker responses for data processing requests. It will also be appreciated that the clusters of <figref idref="f0006"><b>Figures 8</b></figref> and <figref idref="f0007">9</figref> may include a node-to-node interconnect network.
0063Illustrated in <figref idref="f0008"><b>Figure 10</b></figref> is an example methodology <b>1000</b> of a heartbeat system performed with the quorum file <b>840</b> or quorum device <b>915,</b> both of which will be referred to below as a quorum file. Once a quorum file is configured and activated within a database cluster, memory within the quorum file is allocated to each of the nodes in the cluster (block <b>1005).</b> The quorum file may be equally divided and allocated to each node or other allocations may be defined. Once the quorum file is active, it receives heartbeat messages from each node in accordance with the IEEE 1394 protocol (block <b>1010</b>). Each heartbeat message includes a node identifier that identifies the node sending the message and a time stamp indicating the time of the message. Each message received by the quorum file is then stored in its node's allocated location (block <b>1015)</b> and the process repeats for each received heartbeat message.
0064For each node, heartbeat messages are stored in the quorum file in the order they are received. Thus, by comparing the most recently received time stamps to the current time, the system can determine which nodes are actively sending their heartbeat messages. This information can indicate whether a node is active or not. For example, if a node has missed a predetermined number of consecutive time stamps, a potential problem may be assumed. Any number of messages can be stored for each node including one message. As mentioned previously, the heartbeat logic of each node is programmed to generate and transmit a heartbeat message at a predetermined interval. Thus, by reading the data from the quorum file, the logic can determine if a number of missed intervals has occurred. This type of status check logic may be part of the heartbeat logic <b>835</b> or <b>950</b> and will be described in greater detail with reference to <figref idref="f0008"><b>Figure 11</b></figref><b>.</b>
0065<figref idref="f0008"><b>Figure 11</b></figref> illustrates an example methodology for determining the health or status of a node. As described previously, the heartbeat logic includes logic for generating each heartbeat message at the predetermined time interval and transmitting the message to the quorum file. At any desired time, the heartbeat logic of a node may update its cluster configuration file to determine the current set of active nodes and to determine if any nodes have stopped functioning or otherwise have been removed from the network. This determination may also be synchronized throughout the cluster. A status check logic (not illustrated) may be programmed as part of the heartbeat logic to perform this task as follows.
0066To begin a status check, the quorum file is read to review the time stamped information for each of the nodes (block <b>1105).</b> Based on the time stamped data stored for each node, the logic can determine if a particular node is still functioning based on the time of the last messages written to the quorum file (block <b>1110).</b> A threshold may be set to allow a predetermined number of time stamps to be missed before the determination indicates that a problem may exist. For example, a node may be allowed to miss two consecutive time stamps but if a third is missed, then the node may not be functioning properly. The threshold may also be set to other values, for example a value of 1.
0067If a node misses the designated amount of time stamp messages (block <b>1120),</b> it may not necessarily mean that the node has stopped functioning. Since the nodes are connected to the quorum file in accordance with the IEEE 1394 standard, an additional status check can be performed. As explained previously, the IEEE 1394 bus is active and each device connected to the bus can detect if a neighboring node stops functioning or is removed from the network. This additional information may help to better determine the health of a node. The status logic can compare the time stamp information from the quorum file and the node map data maintained by the IEEE 1394 controller.
0068For example, if a node misses its time stamp (block <b>1120)</b> and the node is not an active node in the node map (block <b>1125),</b> then it is determined that the node is presumed down or has been removed from the network (block <b>1130).</b> However, if a node misses its time stamp but the node is still active in the node map, then the node is possibly hung-up or some other delay may exist in the cluster (block <b>1135).</b> If this is the case, the process may optionally re-check the quorum file for that node to determine if a new time stamp has been received, a message can be generated to indicated a possible delay, and/or the node can be removed from the active node list.
0069Referring to decision block <b>1120</b> again, if a node does not miss its time stamp, the node is presumably functioning properly. However, an additional determination may be made by checking if the node is active in the node map (block <b>1140).</b> If the node is active (block <b>1145),</b> then the node is functioning properly. If the node is not active (block <b>1150),</b> then a possible network bus error may exist. Thus, with information from both the quorum file and the node map of the IEEE 1394 bus, a more detailed analysis of node health may be determined. Furthermore, in the cluster configuration shown in <figref idref="f0007"><b>Figure 9</b></figref> in the embodiment where the shared storage network <b>925</b> is also a IEEE 1394 bus, two separate network node maps are maintained. The additional node map may also be included in the above comparison process and status check.
0070With reference again to <figref idref="f0008"><b>Figure 11</b></figref><b>,</b> a simplified embodiment may be implemented. At the decision block <b>1120,</b> if a node fails to write its time stamps, the logic can declare that node as non-functioning and remove it from the cluster configuration file of the database instances. In this process, the node maps are not reviewed.
0071It will be appreciated that the various storage devices described herein, including the quorum device for allocating a quorum file, may be implemented in numerous ways. For example, a storage device may include one or more dedicated storage devices such as magnetic or optical disk drives, tape drives, or electronic memories. A storage device may also include one or more processing devices such as a computer, a server, a hand-held processing device, or similar device that contains storage, memories, or combinations of these for maintaining data. The storage device may also be any computer-readable medium.
0072Suitable software for implementing the various components of the present system and method are readily provided by those of skill in the art using the teachings presented here and programming languages and tools such as Java, Pascal, C++, C, CGI, Perl, SQL, APIs, SDKs, assembly, firmware, microcode, and/or other languages and tools. The components embodied as software include computer readable/executable instructions that cause a computer to behave in a prescribed manner. The software may be as an article of manufacture and/or stored in a computer readable medium as defined previously.
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| CN114143175A | Cited by | China | Search report |
| US6393485B1 | Cites | United States of America | – |
| GREGORY F. PFISTER: "In Search of Clusters" 1998, PRENTICE HALL , NEW JERSEY 013899 , XP002294683 page 401, paragraph 4 page 402, paragraph 1-3 page 419, paragraph 3-5 page 420, paragraphs 4,8-10 page 421, paragraph 1 page 431, paragraph 3 page 432, paragraphs 1,2 figure 109 | Non-patent | – | – |
| YAMAGIWA S ET AL: "MEASTRO-LINK: A HIGH PERFORMANCE INTERCONNECT FOR PC CLUSTER" JOURNAL ARTICLE, 1998, pages 421-425, XP000905433 | Non-patent | – | – |
| "Oracle 8i Parallel Server" ORACLE, [Online] December 1999 (1999-12), XP002275984 Retrieved from the Internet: URL:http://www.lle.rochester.edu/pub/suppo rt/Oracle_817/paraserv.817/a76968.pdf> [retrieved on 2004-03-30] | Non-patent | – | – |
| "VERITAS Cluster Server 3.5" VERITAS, [Online] July 2002 (2002-07), XP002275985 Retrieved from the Internet: URL:http://ftp.support.veritas.com/pub/sup port/products/ClusterServer_UNIX/249745.pd f> [retrieved on 2004-04-02] | Non-patent | – | – |
| "SunCluster3.0 12/01 Concepts Guide" SUN MICROSYSTEMS, [Online] December 2001 (2001-12), XP002275987 Retrieved from the Internet: URL:http://docs-pdf.sun.com/816-2027/816-2 027.pdf> [retrieved on 2004-03-30] | Non-patent | – | – |
13 members in 9 offices
Priority claims3
| Document | Office | Kind | Date |
|---|---|---|---|
| 305483 | United States of America | – | |
| 30548302 | United States of America | A | |
| 0337172 | United States of America | W |
Members13
| Document | Office | Kind | |
|---|---|---|---|
| CA2505155A1 | Canada | A1 | |
| WO2004051479A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU2003294409A1 | Australia | A1 | |
| WO2004051479A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1565823A2 | European Patent Office (EPO) | A2 | |
| CN1717658A | China | A | |
| JP2006508470A | Japan | A | |
| HK1080559A1 | Hong Kong, China | A1 | |
| US7451359B1 | United States of America | B1 | |
| US2009043887A1 | United States of America | A1 | |
| EP1565823B1This record | European Patent Office (EPO) | B1 | |
| DE60328515D1 | Germany | D1 | |
| US7590898B2 | United States of America | B2 |
30 legal events, as 5 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Patent expired after termination of 20 yearsExpiredPE20 | PE20 | GB | |
| Expiry of rightR071 | R071 | DE | |
| Opt-out of the competence of the unified patent court (upc) registeredP01 | P01 | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Notification of lapseLapsedST | ST | FR | |
| No opposition filedOpposition26N | 26N | EP | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Nl: lapsed or annulled due to failure to fulfill the requirements of art. 29p and 29m of the patents actLapsedNLV1 | NLV1 | EP | |
| Standard patents granted in hong kongGrantedGR | GR | HK | |
| Corresponds to:REF | REF | EP | |
| Designated contracting statesAK | AK | EP | |
| European patent grantedGrantedFG4D | FG4D | GB | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| First examination report despatched17Q | 17Q | EP | |
| Requests to designate patent in hong kongDE | DE | HK | |
| Request for extension of the european patent (deleted)DAX | DAX | EP | |
| Designated contracting states (corrected)RBV | RBV | EP | |
| Request for examination filed17P | 17P | EP | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAX | AX | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 1565823
- Application
- 37898921
Titles3
- German
- HEARTBEATMECHANISMUS FÜR EIN CLUSTERSYSTEM
- English
- HEARTBEAT MECHANISM FOR CLUSTER SYSTEMS
- French
- MECANISME DE BATTEMENT DE COEUR POUR SYSTEMES DE GRAPPES
Classification
- CPC, 7
- G06F11/0709
- G06F11/0751
- G06F11/3006
- G06F11/3055
- G06F11/3072
- H04L43/0817
- H04L43/10
- IPC, 5
- G06F11 14
- G06F11 07
- G06F11 16
- G06F11 30
- G06F15 16
Designated states4
- Contracting states, 4
- Germany
- France
- United Kingdom
- Netherlands (Kingdom of the)
