WO2003102772A2 - Business continuation policy for server consolidation environment - Google Patents

Business continuation policy for server consolidation environment Download PDF

Info

Publication number
WO2003102772A2
WO2003102772A2 PCT/US2003/017189 US0317189W WO03102772A2 WO 2003102772 A2 WO2003102772 A2 WO 2003102772A2 US 0317189 W US0317189 W US 0317189W WO 03102772 A2 WO03102772 A2 WO 03102772A2
Authority
WO
WIPO (PCT)
Prior art keywords
application
systems
load
server
cluster
Prior art date
Application number
PCT/US2003/017189
Other languages
French (fr)
Other versions
WO2003102772A3 (en
Inventor
Darshan B. Joshi
Kaushal R. Dalal
James A. Senicka
Original Assignee
Veritas Operating Corporation
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 Veritas Operating Corporation filed Critical Veritas Operating Corporation
Priority to CN038165287A priority Critical patent/CN1669001B/en
Priority to JP2004509790A priority patent/JP4620455B2/en
Priority to AU2003249673A priority patent/AU2003249673A1/en
Priority to DE60325055T priority patent/DE60325055D1/en
Priority to CA2486998A priority patent/CA2486998C/en
Priority to EP03756324A priority patent/EP1516252B1/en
Publication of WO2003102772A2 publication Critical patent/WO2003102772A2/en
Publication of WO2003102772A3 publication Critical patent/WO2003102772A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold

Definitions

  • N+l clustering where one enterprise-class server provides redundancy for multiple active servers N+l clustering reduces the cost of redundancy for a given set of applications and simplifies the choice of a server for failover, as an application running on a failed server is moved to the one backup server
  • N+l clustering is not a complete answer to the need for increased application availability, particularly in a true server consolidation environment Enterprises require the ability to withstand multiple cascading failures, as well as the ability to take some serveis offline for maintenance while maintaining adequate redundancy in the server cluster
  • Typical cluster management applications provide only limited flexibility in choosing the propei hosts for potentially tens or hundreds of application groups Examples of commercially available cluster management applications include VERITAS ® Global Cluster ManagerTM, VERITAS ® Cluster Server, Hewlett-Packard ® MC / Service Guard, and Microsoft ® Cluster Server (MSCS)
  • N-to-N clustering refers to multiple application groups running on multiple servers, with each application group being capable of failing over to different servers in the cluster
  • a four- node cluster of servers could support three critical database instances Upon failure of any of the four nodes, each of the three instances can run on a respective server of the thiee remaining servers, without overloading one of the three remaining servers N-to-N clustenng expands the concept of N+l cluste ⁇ ng from a "backup system" to a requirement for "backup capacity" within the servers forming the clustei
  • the present invention relates to a method, system and computer program product that establish and maintain a business continuity policy in a server consolidation environment
  • Business continuity is ensured by enabling high availability of applications
  • a system is selected best fulfilling the requirements for running the application
  • These requirements can include application requirements, such as an amount of available capacity to handle the load that will be placed on the system by the application
  • These requirements can further include system requirements, such as honoring a system limit of a number of applications that can be run on a particular system
  • Respective priorities of applications can be used to determine whether a lower-priority application can be moved oi stopped to free resources for running a higher-priority application
  • a method includes identifying a set of systems in a cluster, wherein each system in the set of systems meets a requirement for hosting an application Identifying the set of systems can involve including a selected system in the set when the selected system meets a prerequisite for the first application Identifying the set of systems can involve including a selected system in the set when the application does not exceed a limit for the selected system
  • the method further includes using a respective priority for each of the applications for identifying a resource to free, wherein the resource is one of a plurality of resources, and each resource is associated with at least one of the systems Identifying the resource to free may further include using a respective capacity for each of the systems
  • the method can further include freeing the lesource such that one of the systems associated with the resource meets the requirement for hosting the application
  • the method may include starting the application on the associated system Freeing the resource can include stopping another application that is using the resource, wherein the other application has a lower priority than the pnority of the first application Freeing the resource can include moving another application that is using the resource to another system when the other application has a lower respective priority than a respective priority of the first application
  • the method can further include determining that the application is to be started This determination can be made when detecting that the application failed Another way to make this determination is to compare the priority of the application with each priority for applications currently running on the systems The application is to be started when the respective prio ⁇ ty of the application is higher than one of the priorities for the applications running on the systems
  • an apparatus in another feature of the invention, includes an identifying module to identify a set of systems m a cluster, wherein each system in the set of systems meets a requirement for hosting an application
  • the apparatus further includes a priority module to use a respective priority for each of the applications for identifying a resource to free when the set of systems is empty
  • Each resource is associated with at least one of the systems
  • the apparatus can further include modules to implement the features of the method described above
  • Fig 1 provides an example of an environment in which the management system and framework of the present invention operates
  • Fig 2 shows an example of a cluster configuration in a high-availabihty storage area network
  • Fig 3 is a flowchart of a method for implementing a business continuity policy in a server consolidation environment
  • Fig 4 is a flowchart of the Determine Set of Eligible Systems to Host Application Group X step of the flowchart of Fig 3
  • Fig 5 is a flowchart of the Can Sufficient Capacity and Resources be Freed to Accommodate Application Group X decision point of the flowchart of Fig 3
  • Figs 6 through 16 show example configurations and failure scenarios handled by the method and system of the present invention
  • Fig 6 shows the calculation of available capacity for a cluster of servers in a server consolidation environment
  • Fig 7 shows the movement of an application upon failure of one of the servers of Fig 6 and the resulting available capacity in the cluster
  • Fig 8 shows the movement of another application in the failure scenario of Fig 7
  • Fig 9 shows an example configuration of database applications in the cluster of Fig 6
  • Fig 10 shows movement of database applications in a failure scenario in the configuration of Fig 9
  • Fig 1 1 shows an example of managing application groups using limits and prerequisites
  • Fig 12 shows a failure scenario in which an application group cannot be failed over
  • Fig 13 shows stopping a lower-priority application group to free sufficient lesources to enable a higher-p ⁇ o ⁇ ty application to remain available
  • Fig 14 shows another failure scenario for the configuration of Figs 12 and 13
  • Fig 15 shows movement of a lower-priority application group to free sufficient resources to enable a higher-priority application group to remain available
  • Fig 16 shows movement of the higher-priority application group to use the resources freed as a result of the action shown in Fig 15
  • Fig 17 is a block diagram illustrating a computer system suitable for implementing embodiments of the present invention
  • references in the specification to "one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention
  • the appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments
  • va ⁇ ous features are desc ⁇ bed which may be exhibited by some embodiments and not by others
  • various requirements are described which may be requirements for some embodiments but not other embodiments
  • the present invention provides a business continuity policy that proactively determines the best possible system, typically a server in a cluster of servers, to host an application during startup, upon an overload condition, or following an application or server fault
  • server and system are used interchangeably herein, as one of skill in the art will recognize that the present invention also applies to systems operating outside a client/server environment
  • Fig 1 provides an example of an environment in which the management system and framework of the present invention operates Nodes 1 10A and 1 1 OB at Mountain View (MV) site 130A and nodes 1 IOC and 1 10D at United Kingdom (UK) site 130B are shown for purposes of illustration
  • the invention is not limited to minimum or maximum numbers of nodes and/or sites While typically the term "site" describes a collection of nodes concentrated at a data center or on a campus such that cables can interconnect the nodes and storage devices, geographic concentration is not a requirement for a site
  • a site can include one or moie clusters of nodes and can be viewed as a virtual collection of one or more clusters
  • MV site 130A and UK site 130B are shown as connected via network 102, which typically corresponds to a private wide area network or a public disti lbution network such as the Internet
  • Common management console 104 is shown to be used for managing nodes and clusters of nodes, although a common management console is not necessary for operation of the invention
  • Cluster 120A includes nodes 1 10A and HOB at MV site 130A, which are connected via redundant cluster connections 1 15AB-1 and 1 15AB-2 Although only one cluster is shown at MV site 130A, any number of clusters may be included at a site Node 1 10A shares common storage 140A with node 1 10B Node 1 10A is interconnected with storage 140A via interconnection 112A, and node 1 1 OB is interconnected with storage 140A via interconnection 1 12B
  • cluster 120B includes nodes 1 IOC and 110D at UK site 130B, which are connected via redundant cluster connections 115CD-1 and 1 15CD-2 Node 1 IOC shares common storage 140B with node 1 10D Node 1 IOC is interconnected with storage 140B via interconnection 112C and node 1 10D is interconnected with storage 140B via interconnection 1 12D
  • Fig 2 shows an example of a cluster configured for high availability in a storage area network
  • Cluster servers 210A and 21 OB are configured as servers for the same application program and serve as fail over targets for each other Redundant interconnections 216A and 216B can be redundant heartbeat private network connections via crossover cables between redundant network interface cards (NICs) when two nodes form the cluster When more than two nodes form the cluster, the private network connection can use a hub The private network enables fail over software to recognize when a system oi process has failed
  • Each of clusters 210A and 21 OB has redundant public network connections, such as public network connections 242 A and 244A for cluster server 21 OA and public network connections 242B and 244B for cluster server 210B, to communicate via a public network 240 such as the Internet
  • a public network 240 such as the Internet
  • Cluster server 210A has redundant connections to a fibre channel storage area network via fibre channel connection 212A to fibre switch 220A and via fibre channel connection 214A to fibre switch 220B Similarly, cluster server 210B is connected to the fibre channel storage area network via fibre channel connection 212B to fibre switch 220B and via fibre channel connection 214B to fibre switch 220A
  • the fibre channel storage area network provides access by cluster servers 210A and 210B to each of shared storage arrays 230A and 230B
  • Storage arrays 230A and 230B may correspond, for example, to fibre channel RAID arrays
  • Fibre switch 220A is connected to stoiage array 230A via fibre channel connection 222A and to storage array 230B via fibre channel connection 224A
  • fibre switch 220B is connected to storage array 230B via fibre channel connection 222B and to storage array 230A via fibre channel connection 224B
  • Redundant connections from the cluster server to the switch and from the switch to the storage array ensure that each of cluster servers 210A and 210B has a connection to a collection of storage devices on the fibre channel network Redundant power sources (not shown) also can be included to provide a backup power source in the event of a power failure Management
  • Cluster management applications enable administrators to manage multiple, discrete clusters from a single application By coordinating events and actions across clusters, cluster management applications provide a useful tool for managing disaster recovery For example, a second cluster may take over an application running on a primary cluster when no node within the primary cluster can run the application Examples of commercially available clustei management applications include
  • a process called the site master at each site may connect to one or more site slave processes within the site
  • the site master collects all information about all of the clusters and nodes in that site
  • each site master may connect to all other site masters in the distributed system to share mformation so all site masters have information about the entire distributed system
  • a master must have detailed information, sometimes at the software process level, about the state of hardware and software resources at the site
  • master refers to a site master and is also referred to heiein as a master process
  • a cluster management application constantly monitors the state of software applications in multiple clusters and can determine if an entire site becomes unavailable, such that no node in the clusters at the site is available to run the software application
  • the cluster management application may start the software application at a secondary site unaffected by the circumstances that made the primary site unavailable
  • a cluster management application may be controlled by a user via a user interface, or the clustei management application may be configured to act automatically
  • VVR volume ReplicatorTM
  • SRDF Symmet ⁇ x Remote Data Facility
  • HAC Hitachi ® Asynchronous Remote Copy
  • SAB Sybase ® Replication
  • Continuous Access by Hewlett-Packard ® Factors included in the determination of the "best" server to initially start or to re-start an application include server capacity and finite resource availability
  • the business continuity policy is implemented as a component of a cluster management application
  • FailOver Policy One component of a business continuity policy is a FailOver Policy Several different FailOver Policies are possible, including Priority, Round Robin, and a Load FailOver policy included with the piesent invention
  • a Priority FailOver Policy is the most basic strategy The server system with the lowest priority in a running state is chosen as the failover target
  • the Priority FailOver Policy strategy works well for a simple two-node cluster, or for a small cluster with a small number of application groups
  • a Round Robin FailOver Policy chooses the server system running the smallest number of application groups as a failover target Round Robin FailOver Policy is often used for larger clusters running a large number of application groups having essentially the same server load characteristics (for example, servers running similar databases or applications)
  • Load FailOver Policy described herein enables a framework for server consolidation at the data center
  • Load FailOver Policy takes into account System Capacity, Application Group Load, System Limits and Application Group Prerequisites
  • a system Capacity variable also referred to herein as Capacity
  • Capacity for a system is set to a fixed value representing the system's load handling capacity
  • An application group Load variable also referred to herein as Load, for an application is set to a fixed demand (Load) placed on a processor by the application group
  • Load fixed demand
  • each application group running on a system has a predefined Load value
  • the application group's Load is subtracted from the available capacity of the system
  • a cluster management application keeps track of the available capacity of all systems in the cluster using an AvailableCapacity variable for each system AvailableCapacity is determined by subtracting Load of all applications groups online (an application group is considered online if the application group is fully or partially online) on a system from the system's Capacity
  • the cluster management application determines the system with the highest AvailableCapacity and starts the application group on that system Du ⁇ ng a failover scenario involving multiple application groups, failover decisions can be made se ⁇ ally to facilitate the proper load-based choice, however, online operations to bring applications online on alternate systems can be performed in parallel
  • Capacity is a soft restriction, indicating that the value of AvailableCapacity can fall below zero Du ⁇ ng a cascading failure scenario, AvailableCapacity can be negative
  • An alternative strategy for determining dynamic load is provided by some cluster management applications, including early versions of VERITAS Cluster Server (VCS) prior to VCS 2 0
  • VCS VERITAS Cluster Server
  • the administrator must set up and maintain a load estimation package in addition to the cluster management application
  • the system with the lowest value in the DynamicLoad variable is chosen for a failover target
  • available capacity of all systems to host application groups can be calculated using the following formula
  • System Limits and application group Prerequisites can also be used in a business continuity policy
  • An administrator can provide the finite resources available on each system (Limits), such as shared memory segments, semaphores and other system resources
  • a particular server may be capable of hosting no more than two database applications
  • a set of Prerequisites each of which corresponds to available system resources and/or capacity, can be established for each application group
  • a particular database application may need, and have a Prerequisite indicating, five shared memory segments and twenty semaphores
  • Limits cannot be overridden, such that a system cannot be not chosen as a failover target if the system has already reached it's allowed Limits
  • the least loaded system can be selected as a failover target A system that does not meet all the Prerequisites of an application group cannot be selected as a failover target When a decision is made to bring an application group online on a particular system, the values of the set of Prerequisite variables for the system resources required for the application group are subtracted from the Current Limits of the system to indicate that these system resources are already allocated
  • administrators first define application group Prerequisites and then define corresponding Limits for each system
  • each system can have different Limits, and only the Prerequisites and Limits applicable to each application group and system are required to be defined. If a system has no defined Limits for a given system resource, then a default value of 0 can be assumed. Similarly, when Prerequisites are not defined for a given system resource, a default value of 0 can be assumed
  • each system can have only one application group online at a time
  • the GroupWeight value can be consideied to represent the number of application groups that can be brought online When the GroupWeight value is zero, no more application groups can come online on that particular system For example consider a system having two systems, SI and S2.
  • S 1 goes online at S 1
  • Prerequisites and Limits can be used to determine a set of eligible systems on which an application group can be started during failover or upon startup Once a set of eligible systems meeting the Prerequisites and Limits is identified, the established FailOver Policy dictates which of the set of eligible systems is selected as the failover target
  • Table 1 below provides an example of one embodiment including system att ⁇ butes that can be used to implement the business continuity policy of the present invention
  • Table 2 provides examples of application group attributes
  • main cf illustrates a system definition and an application group definition include "types cf ' cluster SGWM-demo ( ) system LargeSvrl (
  • the system meeting the Prerequisites for a given application group and having the highest AvailableCapacity is selected If multiple systems satisfy the Prerequisites for the given application gioup and have the same AvailableCapacity, the first system in the SystemList can be chosen Note that a system meeting the Prerequisites for an application group may not be eligible to host the application group if the system's Limits are already met The system's Limits are already met when the Current Limits for the system allow sufficient resources to meet the Prerequisites for the given application group
  • Capacity is a soft limit
  • the system with the highest AvailableCapacity value can be selected, even if a negative AvailableCapacity value is produced when the application group is started on the system
  • an overload warning is provided as part of the Load FailOver Policy
  • a server sustains a pre-detei mined load level set by a LoadWarningLevel variable (statically or dynamically determined) for a predetermined time, set by a LoadTimeThreshold va ⁇ able
  • an overload warning is initiated
  • the overload warning can be provided by a usei -defined script or application designed to implement the FailOver Load Policy of a given enterprise
  • the user-defined script may provide a message on a console for the operator, or the user-defined script may move 01 shut down application groups based on usei-defined priority values For example, if Load on a server running a business critical database reaches and stays above a user-defined threshold, operators can be immediately notified
  • the user-defined script could then scan the system foi any application groups with a lower priority than the database, such as an internal Human Resources application, and shut down or move the lower-p ⁇ o ⁇ ty application to a system with a smaller current
  • SystemZones are used to designate a preferred subset of systems from which to select in an initial failover decision
  • a cluster management application implementing a business continuity policy tries to re-start an application group within the application group's zone before choosing a system in another zone
  • a cluster management application implementing a business continuity policy tries to re-start an application group within the application group's zone before choosing a system in another zone
  • a cluster management application implementing a business continuity policy tries to re-start an application group within the application group's zone before choosing a system in another zone
  • a cluster management application implementing a business continuity policy tries to re-start an application group within the application group's zone before choosing a system in another zone
  • a cluster management application implementing a business continuity policy tries to re-start an application group within the application group's zone before choosing a system in another zone
  • a cluster management application implementing a business continuity policy tries to re-start an application group within the application group's zone before choosing a system in another zone
  • the concepts of the Load FailOver Policy can also be used to determine where an application group should come up when the cluster initially starts Administrators can set an AutoStartPohcy variable to Load and allow the cluster management application to determine the best system on which to start the application group Application groups can be placed in an AutoStart queue for load-based staitup when the cluster management application determines the available systems As with failover, a subset of systems is first created that meet the Prerequisites and Limits, then of those systems, the system with the highest AvailableCapacity can be chosen
  • Application group Priorities allow the administrator to specify the relative importance of an application group over other application groups During any failure event, the cluster management application can determine a suitable failover system based on application group Priorities, Load and Limits For most single application group or single server failures, most clusters will have adequate spare capacity However, in a situation involving multiple failures, or reduced cluster capacity following a Disaster Recovery event, more difficult decisions may be required
  • the following priorities can be assigned to an application group
  • Prio ⁇ ty 1 application groups must remain online and be restarted immediately upon failure
  • the cluster management application can be configured to avoid stopping or moving Prio ⁇ ty 1 application groups, unless the application group specifically faults or the operator intervenes Priority 1 application groups can sustain only the downtime necessary to restart the application group
  • Priority 2 application groups are only slightly less important than P ⁇ oi lty 1 application groups
  • the cluster management application must keep these application groups online, but may perform a switchover, moving the Priority 2 application group to another servei to maintain cluster Load characteristics
  • Pi loi lty 3 application groups may be moved at will to maintain cluster loading
  • Priority 3 application groups also may be stopped to maintain adequate Load handling capability in the cluster, but only if a move is not possible
  • Pi loi lty 4 Application gioups are non-essential applications such as test applications or various internal support programs These application groups may be stopped at will to maintain cluster loading During any cluster reconfiguration, the cluster management application can remove all Priority 4 application groups from the calculation and make its best recommendation for reconfiguration Priority 4 applications may only be brought online m the cluster if the cluster management application determines that there is adequate load capacity remaining in the cluster
  • Fig 3 is a flowchart of a method for implementing a business continuity policy in a server consolidation environment
  • the method begins upon startup or failure of a given application group, here called application group X, in Startup or Failure of Application Group X step 310
  • a set of systems eligible to host application group X is identified in Determine Set of Eligible Systems to Host Application Group X step 320 At Size of Set > 0 decision point 322, a determination is made whether any eligible systems were identified If so, control proceeds to Select Host System 324 to select a host system (either an initial system upon startup or a failover target) for running application group X
  • the host system can be selected as the eligible system having the highest Available Capacity
  • Other policies can also be used to select a host system according to the needs of the business implementing a business continuity policy Control then proceeds to Start Application Group X on Host System step 350 to start application group X on the selected host system
  • a respective prio ⁇ ty for application group X among all application groups running on the cluster is determined
  • the priority of a given application group is configurable and can be assigned by an administratoi of the server consolidation environment For example, to determine the respective priority for application group X, the p ⁇ o ⁇ ty can be retneved from data stored for a cluster management application managing the cluster in the server consolidation environment
  • control proceeds to Lower Priority Application Groups in Cluster decision point 332 If no lower priority applications are running, control proceeds to Notify Administrator that Application Group X Cannot be Started step 336 Because no eligible systems exist for application group X, application group X cannot be started without pre- empting another application of the same or higher priority An administrator can determine whether
  • Application Group X should be pie-empted
  • the process for handling the situation where an application group cannot be restarted is configurable within a cluster management application and can be provided as a user-defined script If at Lower Prio ⁇ ty Application Groups in Cluster decision point 332, lower priority application groups are running, control proceeds to Can Sufficient Capacity and Resources be Freed to Accommodate Application Group X decision point 338 In Can Sufficient Capacity and Resources be Freed to Accommodate Application Group X decision point 338, an evaluation of the available resources in the systems of the cluster is made This evaluation is discussed in further detail with reference to Fig 5
  • control proceeds to Notify Administrator that Application Group X Cannot be Started step 336 If sufficient capacity and resources can be freed, control proceeds to Free Sufficient Capacity and Resources on Host System step 340
  • Fig 4 is a flowchart of the Determine Set of Eligible Systems to Host Application Group X step 320 of Fig 3
  • Select System from Cluster step 410 a system within the cluster of systems not previously evaluated is selected to determine whether the system is eligible Control then proceeds to Selected System Meets Application Requirements decision point 412 If the selected system does not meet the requirements for application group X, such as a prerequisite for application group X, control proceeds to Systems Not Considered Remam decision point 422 to determine whether another system is available for evaluation
  • control proceeds to Add Selected System to Set of Eligible Systems step 420
  • Control then proceeds to Systems Not Considered Remain decision point 422 to determine whethei another system is available for evaluation
  • Fig 5 is a flowchart of the Can Sufficient Capacity and Resources be Freed to Accommodate Application Group X decision point 338 of Fig 3
  • the initial decision is made at Can Sufficient Prio ⁇ ty 4 Resources be Stopped decision point 510 If sufficient Priority 4 resources can be stopped, control proceeds to Select Host System and Priority 4 Resources to Free step 520 In this step, a system with sufficient Prio ⁇ ty 4 resources is selected as the system to host application group X Control proceeds to Indicate Sufficient Resources can be Freed step 565
  • the flowchart of Fig 5 is completed and an indication that sufficient resources can be freed is made
  • FIG. 6 shows the calculation of available capacity for a cluster of servers in a server consolidation environment
  • Servers 610A, 61 OB, 6 IOC and 610D form a cluster Servers 610A, 61 OB and 6 IOC each have a capacity of 300
  • server 610D has a capacity of 1 0
  • Server 610A is running Microsoft Exchange (XCH) version 5 5, which places a Load of 100 on server 610A
  • Server 610A is also running a database application group, Oracle 8 ⁇ , which places a Load of 150 on server 610A, for a total Load of 250
  • Server 610B is running SQL 2000 server, which places a Load of 125 on server 610B
  • Server 610C is running a file sharing application group FileSharel , which places a Load of 75 on Server 610C
  • Server 610D is running two file sharing application groups, F ⁇ leshare2 and F ⁇ leshare3, placing a load of
  • Fig 7 shows the movement of an application upon failure of one of the servers of Fig 6 and the resulting available capacity in the cluster Server 610D fails, leaving file sharing applications Filesharel and F ⁇ leshare2 to be redistributed if possible to other servers in the cluster
  • Fig 7 shows the movement of F ⁇ leshare2 to server 610C, which is selected because server 610C offers the highest available capacity
  • the Load on server 610C increases to 150
  • the available capacity of server 6 IOC reduces to 150 Server 610B, with an available capacity of 175, now has the highest available capacity in the cluster
  • Fig 8 shows the movement of another application in the failure scenario of Fig 7 F ⁇ leshare3 is moved from server 610D to the server having the highest available capacity, server 610B As a result of this move, the Load placed on server 610B is increased to 200 and the available capacity of server 610B is reduced to 100
  • Fig 9 shows an example configuration of database applications in the cluster of Fig 6, with each of servers 610A thiough 610D configured with a capacity of 300 Server 610A is running two SQL 2000 database application groups, SQL 2000 Database A and SQL 2000 Database B Each of SQL 2000 Database A and SQL 2000 Database B places a load of 100 on server 610A Server 610A is configured with an SQL limit of 2, indicating that server 610A can run no more than two SQL databases at one time
  • Server 610B similarly has a SQL limit of 2 and is running SQL 2000 Database C, placing a load of 100 on server 610B Server 610B has an available capacity of 200 Server 610C is running SQL 2000 Database E, placing a load of 100 on server 610C Server 610C also has an available capacity of 200 Server 610D has a SQL limit of 3 and is running SQL 2000 Database D, which places a Load of 150 on server 610D Server 610D has an available capacity of 150 Fig 10 shows movement of database applications in a failure scenario m the configuration of Fig 9 Seiver ⁇ lOC fails, leaving SQL 2000 Database E to be lestarted on another server SQL 2000 Database E places a Load of 100 on a seiver Server 610A cannot host SQL 2000 Database E because sever 610A has already reached its limit of 2 server SQL applications Neither server 610B or server 610D has reached its limit of the number of SQL applications that it can host, and both server 610B and server 610D have sufficient available capacity to run SQL 2000 Database E In the example
  • Fig 11 shows an example of managing application groups using limits and prerequisites
  • application group Gl a file sharing application, application group G2, a test application, application group G3, a Microsoft Exchange application, and application group G4, a SQL server application group
  • Application group Gl, a pno ⁇ ty three application group requires that a GroupWeight va ⁇ able for the server have a value of 1 before application group Gl can be run on that server
  • Application group G2 a priority four application group, requires that a GroupWeight va ⁇ able for the server have a value of 2 before application group G2 can be run on that server
  • Application group G3, a prio ⁇ ty one application group requires that a GroupWeight variable for the server have a value of 2 before application group G3 can be run on that server
  • application group G4, a p ⁇ o ⁇ ty two application group requires that a GroupWeight variable for the server have a value of 2 before application group G4 can be run on that server
  • Servers 610A through 610D run applications Gl through G4, respectively With these running application groups, servers 610A through 610D have Limits of 2, 3, 2 and 3, respectively Servei s 610A through 610D have CurrentLimits values of 1, 1, 0, and 1, respectively
  • Fig 12 shows a failure scenario in which an application group cannot be failed over Server
  • Fig 13 shows stopping a lowei -prio ⁇ ty application group to free sufficient resources to enable a higher-pi lo ⁇ ty application group to remain available
  • application group G2 was determined to provide sufficient resources to allow application group G3 to run
  • Application group G2 is stopped, and application group G3 is moved to servei 61 OB
  • the CurrentLimits value for server 61 OB is recalculated, now having a value of 1
  • Fig 14 shows another failure scenario for the configuration of Figs 12 and 13 Assume that now server 610D fails, leaving application G4 to be restarted Application group G4 requires a GroupWeight value of 2 to be started on another server Neither of the remaining servers 610A or 61 OB provides a GroupWeight value of 2 A determination is then made whether sufficient resources can be freed to enable application group G4 to remain available Lower priority resources are examined to make this determination
  • Fig 15 shows movement of a lower-priority application group to free sufficient resources to enable a higher-priority application group to remain available
  • Application group Gl a priority three application
  • a priority three application has a lower pno ⁇ ty than application group G4, with a prio ⁇ ty of two
  • the prerequisites for application group G 1 are a GroupWeight value of 1, which is provided by server 61 OB
  • Application group Gl is moved to server 61 OB to free resources on server 610A
  • the result of the movement is that server 610A has a GroupWeight value of 2
  • server 61 OB has a GroupWeight value of zero
  • Fig 16 shows movement of the higher-priority application group to use the resources freed as a result of the action shown in Fig 15
  • server 610A After the movement of application group Gl, server 610A has sufficient resources to host application group G4 The pierequisite for application group G4, that
  • xRM resource manager
  • Solans 9 supports the concept of a "Task-ID," which ties a specific process launched under the Task-ID to limits imposed in a "projects" database
  • a cluster management application provides an API layer to communicate with the various xRM packages
  • the Load FailOver policy can be used If the cluster management application is also running on an operating system platform capable of xRM integration, then full enforcement of Load and Limits is possible
  • administrators can configure resource utilization parameters once m the cluster definition, rather than on individual systems
  • the cluster management application, m conjunction with xRM-specific agents on each system controls resource allocation to specific application groups when the application groups are started on a system This allows a single point of administration as well as greater control of load dist ⁇ bution in the cluster
  • the administrator sets both the overall load an application group is expected to place on a system, as well as the share of a system the application group is expected to receive For example, if three application groups with a Load of 200 each were running on a server with a capacity of 800, each application group effectively receives 1/3 of the available resources In this scenario, raising the Load value for a specific application group to 400 accomplishes several things First, raising the load value increases the resource allocation for the modified application group This application group receives 50% of available CPU and memory, and the remaining two application groups receive 25% each Second, raising the Load Value places the server at a 100% load level, reducing AvailableCapacity to 0 This situation produces an overload warning Raising a Load value not only tells the cluster management application that a system is loaded more heavily, it also functions to increase the performance of the application
  • a modeling and simulation engine can provide the capability for the cluster management application to determine the best possible configuration for application groups based on a "what-if ' model Rather than choose a system based solely on current load and limits, the cluster management application determines how to reconfigure the cluster to provide application groups with the best possible performance Re-configuration takes into account the vanous application group p ⁇ oi ities to determine the application groups that can and cannot be moved Various parameters can also be supplied to the MSE, such as "maximum performance” and "minimum switches,” to allow the cluster management application to deteimine whether to perform a cluster reconfiguration to maximize performance or whether to minimize downtime for application groups
  • the MSE can also include simulation capabilities to allow administrators to run a complete what-if scenario for any cluster reconfiguration For example
  • the MSE can ngidly enforce the current concepts of Load and Limits, and also allows reconfiguration to better utilize the FailOver Policy For example, to add a large database (shared memory and semaphores X2) and no system has adequate capacity within the Limits, the proposed FailOver Policy provides an error
  • the MSE could determine that two systems piovide available adequate resources, but each is running a small database (shared memory and semaphores)
  • the cluster management application can recommend a consolidation of the two smaller databases to one server and free the second server for the large database
  • Clustei Reconfiguration refers to the capability piovided by the clustei management application to re-allocate application groups, and therefore loads across the cluster, to better balance system Load
  • This re-configuration can be in response to a failuie, server additions and deletions, or application group additions or removals
  • Cluster reconfiguration can be performed by an MSE component of the cluster management application to allocate fixed cluster resouices
  • the cluster reconfiguration module can be allowed to perform automatically if moving Pi lo ⁇ ty 3 and Priority 4 application gioups, and possibly automatically on Priority 2 application groups if specific parameteis are set and manual (operator-acknowledged) for Priority 1 groups
  • Clustei reconfiguration capabilities can intervene when a manual application group online or switchovei is requested If a user requests to move or bring an application group online, the MSE can inform the usei that it is acceptable or recommend a reconfiguration sequence to better allocate resources Additional Examples
  • the following example uses Limits and Preiequisites to control the total number of application groups that may run on a system
  • the cluster consists of four similar servers There are five application groups, which are roughly equivalent in requirements for processing power and in the amount of Load each application group requires of a system Each server can host two such application groups This example does not use application group Load and system Capacity Also, the application groups use a default AutoStartPohcy and FailOverPohcy
  • the cluster can tolerate the failure of an individual application group on Svrl or Svr3, but no further node failures
  • the cluster consists of four identical systems, each with the same capacity Eight application groups, G1-G8, with various loads run in the cluster
  • Example Configuration File include "types cf ' cluster SGWM-demo system Svrl (
  • application groups can be placed in a queue as soon as they are started on a system
  • application groups are placed into the queue in the same order that the application groups are described, Gl through G8
  • Gl is started on the system with the highest AvailableCapacity Since the systems are equal, Svrl is chosen smce it is canomcally first G2-G4 start on Svr2 through Svr4 At this time, with the first 4 group startup decisions made, the cluster looks as follows
  • Ava ⁇ lableCapac ⁇ ty 50 (Groups Gl and G6)
  • Ava ⁇ lableCapac ⁇ ty 50 (Groups G3 and G7)
  • Ava ⁇ lableCapac ⁇ ty 40 (Groups Gl, G6 and G4)
  • AvailableCapacity 0 (Groups G3, G7 and G5)
  • an overload warning is provided for Svr3 to notify an operator or administrator that Svr3 is overloaded
  • the opeiator can switch G7 to Svrl to balance loading across Gl and G3
  • Sv ⁇ 4 can then server as a failovei target for further failures
  • Ava ⁇ lableCapac ⁇ ty -10 (Groups G 1 , G6, G4, G3 and G7)
  • the following example shows a 4-system cluster using multiple system Capacities and various Limits
  • the cluster consists of two large Enterprise servers (LgSvrl and LgSvr2) and two Medium servers (MedSvrl and MedSvr2)
  • application groups Gl through G4
  • Gl through G4 are provided with various Loads and Prerequisites
  • Gl and G2 are database application groups, with specific shared memory and semaphore requirements
  • G3 and G4 are middle-tier application groups with no specific memory or semaphore requirements and simply add load to a given system
  • SystemList j LgSvi l, LgSvr2, MedSvrl , MedSvr2 j
  • All application groups are assigned to a system when the cluster starts
  • Application groups Gl and G2 have an AutoStartList of LgSvrl and LgSvr2 Gl and G2 are queued to go online on one of these seivers, based on highest AvailableCapacity Assuming Gl starts fust, Gl is started on LgSvrl because LgSvrl and LgSv ⁇ 2 both have an initial AvailableCapacity of 200, and LgSvrl is lexically first
  • system LgSvr2 fails The cluster management application scans available systems in G2's SystemList having the same SystemZones grouping as
  • LgSvr2 The cluster management application then creates a subset of systems meeting the application group's Prerequisites In this case, LgSvrl meets all necessary Limits G2 is brought online on LgSvrl, resulting in the following configuration
  • the following example shows a complex 8-node cluster running multiple applications and several large databases
  • the database servers are all large enterprise systems, LgSvrl, LgSvr2 and LgSvr3
  • the middle-tier servers running multiple applications are MedSvi 1 , MedSvr2, MedSvr3, MedSvr4 and MedSvr5
  • Example Configuration File include "types cf ' cluster Demo ( ) system LgSvrl (
  • SystemList ⁇ LgSvrl , LgSvr2, LgSvr3, MedSvrl, MedSvr2, MedSvr3,
  • SystemList ⁇ LgSvrl, LgSvr2, LgSv ⁇ 3, MedSvrl, MedSvr2, MedSvr3, MedSvr4, MedSv ⁇ 5 ⁇
  • SystemList ⁇ LgSvrl, LgSvr2, LgSvr3, MedSvrl . MedSvr2, MedSvr3,
  • SystemList ⁇ LgSvrl, LgSvr2, LgSvr3, MedSvrl , MedSvr2, MedSvr3, MedSvr4, MedSvr5 ⁇
  • SystemList ⁇ LgSvrl , LgSvr2, LgSvr3, MedSvrl , MedSvr2, MedSvr3, MedSvr4, MedSvr5 ⁇
  • SystemList ⁇ LgSvrl, LgSvr2, LgSvr3, MedSvrl , MedSvr2, MedSvr3, MedSvr4, MedSvr5 ⁇
  • SystemList ⁇ LgSvrl, LgSvr2, LgSvr3, MedSvrl, MedSvr2, MedSvr3, MedSvr4, MedSvr5 ⁇
  • SystemList ⁇ LgSvrl, LgSvr2, LgSvr3, MedSvrl , MedSvr2, MedSvr3,
  • vai lableCapac ⁇ ty 50
  • System Zone 0 System Zone 0
  • Each server has adequate Limits to support up to three database application groups (with an expected performance drop when all database application groups are running on one server)
  • the application zone has excess capacity built into each system
  • each of MedSvrl through MedSvr5 specifies Limits to support one database, even though the application groups G4 through G8 do not specify Prerequisites This configuration allows a database to fail across SystemZones if absolutely necessary and run on the least loaded application zone machine
  • the SystemZones policy has another helpful effect Failing a database group into the application zone has the effect of resetting its preferred zone
  • Database 1 has been moved to LgSvrl
  • the administrator could reconfigure the application zone to move two application groups to one system
  • the database application can be switched to the empty application server (MedSvrl -MedSvrS) This will place Databasel in Zonel (the application zone) If a failure occurs in Databasel , the least-loaded server in the Application zone meeting its Prerequisites is selected as the failover target
  • Fig 17 depicts a block diagram of a computer system 10 suitable for implementing the present invention
  • Computer system 10 includes a bus 12 which interconnects major subsystems of computer system 10 such as a central processor 14, a system memory 16 (typically RAM, but which may also include ROM, flash RAM, or the like), an input/output controller 18, an external audio device such as a speaker system 20 via an audio output interface 22, an external device such as a display screen 24 via display adapter 26, serial ports 28 and 30, a keyboard 32 (interfaced with a keyboard controller 33), a storage interface 34, a floppy disk drive 36 operative to receive a floppy disk 38, and a CD-ROM drive 40 operative to receive a CD-ROM 42
  • a mouse 46 or other point-and-chck device, coupled to bus 12 via serial port 28
  • modem 47 coupled to bus 12 via serial port 30
  • a network interface 48 coupled directly to bus 12
  • Bus 12 allows data communication between central processor 14 and system memory 16, which may include both read only memory (ROM) or flash memory (neither shown), and random access memory (RAM) (not shown), as pieviously noted
  • the RAM is generally the main memory into which the operating system and application programs are loaded and typically affords at least 16 megabytes of memory space
  • the ROM or flash memory may contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with peripheral components
  • BIOS Basic Input-Output system
  • Applications resident with computer system 10 are generally stored on and accessed via a computer readable medium, such as a hard disk drive (e g , fixed disk 44), an optical drive (e g , CD-ROM drive 40), floppy disk unit 36 or other storage medium
  • applications may be in the form of electronic signals modulated in accordance with the application and data communication technology when accessed via network modem 47 or interface 48
  • Storage interface 34 may connect to a standard computer readable medium for storage and or ret ⁇ eval of information, such as a fixed disk drive 44 Fixed disk drive 44 may be a part of computer system 10 or may be separate and accessed through other interface systems
  • Many other devices can be connected such as a mouse 46 connected to bus 12 via serial port 28, a modem 47 connected to bus 12 via serial port 30 and a network interface 48 connected directly to bus 12 Modem 47 may provide a direct connection to a remote server via a telephone link or to the Internet via an internet service provider (ISP)
  • ISP internet service provider
  • Network interface 48 may piovide a direct connection to a remote server via a direct network link to the Internet via a POP (point of presence)
  • Network interface 48 may provide such connection using wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like
  • CDPD Cellular Digital Packet Data
  • CDPD Cellular Digital Packet Data
  • a signal may be directly transmitted from a first block to a second block, or a signal may be modified (e g , amplified, attenuated, delayed, latched, buffered, inverted, filtered or otherwise modified) between the blocks
  • a signal input at a second block may be conceptualized as a second signal derived from a first signal output from a first block due to physical limitations of the circuitry involved (e g , there will inevitably be some attenuation and delay) Therefore, as used heiein, a second signal derived from a first signal mcludes the first signal or any modifications to the first signal, whether due to circuit limitations or due to passage through other circuit elements which
  • any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermediate components
  • any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality
  • signal bearing media include recordable media such as floppy disks and CD-ROM, transmission type media such as digital and analog communications links, as well as media storage and distribution systems developed in the future
  • the above-discussed embodiments may be implemented by software modules that perform certain tasks
  • the software modules discussed herein may include script, batch, or other executable files
  • the software modules may be stored on a machine-readable or computer-readable storage medium such as a disk drive
  • Storage devices used for storing software modules in accordance with an embodiment of the invention may be magnetic floppy disks, hard disks, or optical discs such as CD- ROMs oi CD-Rs, for example
  • a storage device used for storing firmware or hardwaie modules in accordance with an embodiment of the invention may also include a semiconductor-based memory, which may be permanently, removably or remotely coupled to a microprocessor/memory system
  • the modules may be stored within a computer system memory to configure the computer system to perform the functions of the module
  • Other new and various types of computer-readable storage media may be used to store the modules discussed herein

Abstract

A method, computer program product and system that establishes and maintains a business continuity policy in a server consolidation environment. Business continuity is ensured by enabling high availability of applications. When an application is started, restarted upon failure, or moved due to an overload situation, a system is selected best fulfilling the requirements for running the application. These requirements can include application requirements, such as an amount of available capacity to handle the load that will be placed on the system by the application. These requirements can further include system requirements, such as honoring a system limit of a number of applications that can be run on a particular system. Respective priorities of applications can be used to determine whether a lower-priority application can be moved to free resources for running a higher-priority application. -

Description

BUSINESS CONTINUATION POLICY FOR SERVER CONSOLIDATION ENVIRONMENT
Portions of this patent application contain materials that are subject to copyπght piotection The copyright owner has no objection to the facsimile reproduction by anyone of the patent document, or the patent disclosure, as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyπght rights whatsoever
BACKGROUND OF THE INVENTION
As the use of open systems grows, the complexity of managing hundreds or thousands of servers becomes an increasingly difficult task In addition, a demand for increased availability of the applications running on the servers presents a challenge Many information technology (IT) managers are working to move from large numbers of small open systems, many running well below their capacities, to a much smaller number of large-scale enterprise servers running at or near their capacities This trend in the IT industry is called "server consolidation "
One early answer to the demand for increased application availability was to provide one-to- one backups for each server running a critical apphcahon When the critical application failed at the primary server, the application was "failed over" (restarted) on the backup server However, this solution was very expensive and wasted resources, as the backup servers sat idle Furthermore, the solution could not handle cascading failure of both the primary and backup servers
Another possible solution is "N+l clustering," where one enterprise-class server provides redundancy for multiple active servers N+l clustering reduces the cost of redundancy for a given set of applications and simplifies the choice of a server for failover, as an application running on a failed server is moved to the one backup server
However, N+l clustering is not a complete answer to the need for increased application availability, particularly in a true server consolidation environment Enterprises require the ability to withstand multiple cascading failures, as well as the ability to take some serveis offline for maintenance while maintaining adequate redundancy in the server cluster Typical cluster management applications provide only limited flexibility in choosing the propei hosts for potentially tens or hundreds of application groups Examples of commercially available cluster management applications include VERITAS® Global Cluster Manager™, VERITAS® Cluster Server, Hewlett-Packard® MC / Service Guard, and Microsoft® Cluster Server (MSCS)
N-to-N clustering refers to multiple application groups running on multiple servers, with each application group being capable of failing over to different servers in the cluster For example, a four- node cluster of servers could support three critical database instances Upon failure of any of the four nodes, each of the three instances can run on a respective server of the thiee remaining servers, without overloading one of the three remaining servers N-to-N clustenng expands the concept of N+l clusteπng from a "backup system" to a requirement for "backup capacity" within the servers forming the clustei
What is needed is a business continuity policy that enables critical enterprise applications to survive multiple failures by determining suitable systems for starting applications initially, redistributing applications when systems reach an overloaded condition, and restarting failed applications
SUMMARY OF THE INVENTION
The present invention relates to a method, system and computer program product that establish and maintain a business continuity policy in a server consolidation environment Business continuity is ensured by enabling high availability of applications When an application is started, restarted upon failure, or moved due to an overload situation, a system is selected best fulfilling the requirements for running the application These requirements can include application requirements, such as an amount of available capacity to handle the load that will be placed on the system by the application These requirements can further include system requirements, such as honoring a system limit of a number of applications that can be run on a particular system Respective priorities of applications can be used to determine whether a lower-priority application can be moved oi stopped to free resources for running a higher-priority application
In one feature, a method includes identifying a set of systems in a cluster, wherein each system in the set of systems meets a requirement for hosting an application Identifying the set of systems can involve including a selected system in the set when the selected system meets a prerequisite for the first application Identifying the set of systems can involve including a selected system in the set when the application does not exceed a limit for the selected system
When the set of systems is empty, the method further includes using a respective priority for each of the applications for identifying a resource to free, wherein the resource is one of a plurality of resources, and each resource is associated with at least one of the systems Identifying the resource to free may further include using a respective capacity for each of the systems
The method can further include freeing the lesource such that one of the systems associated with the resource meets the requirement for hosting the application The method may include starting the application on the associated system Freeing the resource can include stopping another application that is using the resource, wherein the other application has a lower priority than the pnority of the first application Freeing the resource can include moving another application that is using the resource to another system when the other application has a lower respective priority than a respective priority of the first application The method can further include determining that the application is to be started This determination can be made when detecting that the application failed Another way to make this determination is to compare the priority of the application with each priority for applications currently running on the systems The application is to be started when the respective prioπty of the application is higher than one of the priorities for the applications running on the systems
In another feature of the invention, an apparatus includes an identifying module to identify a set of systems m a cluster, wherein each system in the set of systems meets a requirement for hosting an application The apparatus further includes a priority module to use a respective priority for each of the applications for identifying a resource to free when the set of systems is empty Each resource is associated with at least one of the systems The apparatus can further include modules to implement the features of the method described above
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail, consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non- hmiting detailed description set forth below
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention may be better understood, and its numerous objects, features and advantages made apparent to those skilled in the art by referencing the accompanying drawings
Fig 1 provides an example of an environment in which the management system and framework of the present invention operates
Fig 2 shows an example of a cluster configuration in a high-availabihty storage area network
Fig 3 is a flowchart of a method for implementing a business continuity policy in a server consolidation environment
Fig 4 is a flowchart of the Determine Set of Eligible Systems to Host Application Group X step of the flowchart of Fig 3
Fig 5 is a flowchart of the Can Sufficient Capacity and Resources be Freed to Accommodate Application Group X decision point of the flowchart of Fig 3
Figs 6 through 16 show example configurations and failure scenarios handled by the method and system of the present invention Fig 6 shows the calculation of available capacity for a cluster of servers in a server consolidation environment
Fig 7 shows the movement of an application upon failure of one of the servers of Fig 6 and the resulting available capacity in the cluster
Fig 8 shows the movement of another application in the failure scenario of Fig 7
Fig 9 shows an example configuration of database applications in the cluster of Fig 6
Fig 10 shows movement of database applications in a failure scenario in the configuration of Fig 9
Fig 1 1 shows an example of managing application groups using limits and prerequisites
Fig 12 shows a failure scenario in which an application group cannot be failed over
Fig 13 shows stopping a lower-priority application group to free sufficient lesources to enable a higher-pπoπty application to remain available
Fig 14 shows another failure scenario for the configuration of Figs 12 and 13
Fig 15 shows movement of a lower-priority application group to free sufficient resources to enable a higher-priority application group to remain available
Fig 16 shows movement of the higher-priority application group to use the resources freed as a result of the action shown in Fig 15
Fig 17 is a block diagram illustrating a computer system suitable for implementing embodiments of the present invention
The use of the same reference symbols in different drawings indicates similar or identical items While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the Drawings and are described herein in detail It should be understood, however, that the Drawings and Detailed Description are not intended to limit the invention to the particular form disclosed On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the scope of the present invention as defined by the appended Claims DETAILED DESCRIPTION
For a thorough understanding of the subject invention, refer to the following Detailed Description, including the appended Claims, in connection with the above-described Drawings Although the present invention is described in connection with several embodiments, the invention is not intended to be limited to the specific forms set forth herein On the contrary, it is intended to cover such alternatives, modifications, and equivalents as can be reasonably included within the scope of the invention as defined by the appended Claims
In the following descπption, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention It will be apparent, however, to one skilled in the art that the invention can be practiced without these specific details
References in the specification to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention The appearances of the phrase "in one embodiment" in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments Moreover, vaπous features are descπbed which may be exhibited by some embodiments and not by others Similarly, various requirements are described which may be requirements for some embodiments but not other embodiments
Introduction The present invention provides a business continuity policy that proactively determines the best possible system, typically a server in a cluster of servers, to host an application during startup, upon an overload condition, or following an application or server fault The terms server and system are used interchangeably herein, as one of skill in the art will recognize that the present invention also applies to systems operating outside a client/server environment
Fig 1 provides an example of an environment in which the management system and framework of the present invention operates Nodes 1 10A and 1 1 OB at Mountain View (MV) site 130A and nodes 1 IOC and 1 10D at United Kingdom (UK) site 130B are shown for purposes of illustration The invention is not limited to minimum or maximum numbers of nodes and/or sites While typically the term "site" describes a collection of nodes concentrated at a data center or on a campus such that cables can interconnect the nodes and storage devices, geographic concentration is not a requirement for a site A site can include one or moie clusters of nodes and can be viewed as a virtual collection of one or more clusters
MV site 130A and UK site 130B are shown as connected via network 102, which typically corresponds to a private wide area network or a public disti lbution network such as the Internet Common management console 104 is shown to be used for managing nodes and clusters of nodes, although a common management console is not necessary for operation of the invention
Cluster 120A includes nodes 1 10A and HOB at MV site 130A, which are connected via redundant cluster connections 1 15AB-1 and 1 15AB-2 Although only one cluster is shown at MV site 130A, any number of clusters may be included at a site Node 1 10A shares common storage 140A with node 1 10B Node 1 10A is interconnected with storage 140A via interconnection 112A, and node 1 1 OB is interconnected with storage 140A via interconnection 1 12B
Similarly, cluster 120B includes nodes 1 IOC and 110D at UK site 130B, which are connected via redundant cluster connections 115CD-1 and 1 15CD-2 Node 1 IOC shares common storage 140B with node 1 10D Node 1 IOC is interconnected with storage 140B via interconnection 112C and node 1 10D is interconnected with storage 140B via interconnection 1 12D
Fig 2 shows an example of a cluster configured for high availability in a storage area network Cluster servers 210A and 21 OB are configured as servers for the same application program and serve as fail over targets for each other Redundant interconnections 216A and 216B can be redundant heartbeat private network connections via crossover cables between redundant network interface cards (NICs) when two nodes form the cluster When more than two nodes form the cluster, the private network connection can use a hub The private network enables fail over software to recognize when a system oi process has failed Each of clusters 210A and 21 OB has redundant public network connections, such as public network connections 242 A and 244A for cluster server 21 OA and public network connections 242B and 244B for cluster server 210B, to communicate via a public network 240 such as the Internet
Cluster server 210A has redundant connections to a fibre channel storage area network via fibre channel connection 212A to fibre switch 220A and via fibre channel connection 214A to fibre switch 220B Similarly, cluster server 210B is connected to the fibre channel storage area network via fibre channel connection 212B to fibre switch 220B and via fibre channel connection 214B to fibre switch 220A
The fibre channel storage area network provides access by cluster servers 210A and 210B to each of shared storage arrays 230A and 230B Storage arrays 230A and 230B may correspond, for example, to fibre channel RAID arrays Fibre switch 220A is connected to stoiage array 230A via fibre channel connection 222A and to storage array 230B via fibre channel connection 224A Similarly, fibre switch 220B is connected to storage array 230B via fibre channel connection 222B and to storage array 230A via fibre channel connection 224B Redundant connections from the cluster server to the switch and from the switch to the storage array ensure that each of cluster servers 210A and 210B has a connection to a collection of storage devices on the fibre channel network Redundant power sources (not shown) also can be included to provide a backup power source in the event of a power failure Management
To ensure disaster recovery, data loss must be prevented and consistent data maintained even if hardware or software failures occur Data for a particular application should not be allowed to enter a state in which the failuie of the network or a node would leave that application and corresponding application data in an inconsistent or unusable state
Cluster management applications enable administrators to manage multiple, discrete clusters from a single application By coordinating events and actions across clusters, cluster management applications provide a useful tool for managing disaster recovery For example, a second cluster may take over an application running on a primary cluster when no node within the primary cluster can run the application Examples of commercially available clustei management applications include
VERITAS® Global Cluster Manager™, Hewlett-Packard® MC / Service Guard, and Microsoft® Cluster Server (MSCS)
In some cluster management applications, a process called the site master at each site may connect to one or more site slave processes within the site The site master collects all information about all of the clusters and nodes in that site In addition, each site master may connect to all other site masters in the distributed system to share mformation so all site masters have information about the entire distributed system While it is not a requirement that each site have its own master for operation of the invention, a master must have detailed information, sometimes at the software process level, about the state of hardware and software resources at the site The term master refers to a site master and is also referred to heiein as a master process
Typically, a cluster management application constantly monitors the state of software applications in multiple clusters and can determine if an entire site becomes unavailable, such that no node in the clusters at the site is available to run the software application The cluster management application may start the software application at a secondary site unaffected by the circumstances that made the primary site unavailable A cluster management application may be controlled by a user via a user interface, or the clustei management application may be configured to act automatically
In the event that the primary data center is destroyed, the application data must be immediately available at another site, and the application must be immediately started at the other site This level of availability requires lephcation of the data from the primary site to the other site Various data replication applications are available for replicating data across sites, including VERITAS® Volume Replicator™ ( VVR), Symmetπx Remote Data Facility (SRDF®) by EMC® Corporation, Hitachi® Asynchronous Remote Copy (HARC), Sybase® Replication, and Continuous Access by Hewlett-Packard® Factors included in the determination of the "best" server to initially start or to re-start an application include server capacity and finite resource availability In one embodiment described herein, the business continuity policy is implemented as a component of a cluster management application
FailOver Policy
One component of a business continuity policy is a FailOver Policy Several different FailOver Policies are possible, including Priority, Round Robin, and a Load FailOver policy included with the piesent invention
A Priority FailOver Policy is the most basic strategy The server system with the lowest priority in a running state is chosen as the failover target A "failover target" is a system selected to host the application groups that must be re-started For example, pπoπty can be set implicitly via ordering in a SystemList, such as SystemList = { server 1, server2} or explicitly by setting priority in the SystemList, such as SystemList = {systeml=0, system2=l } The Priority FailOver Policy strategy works well for a simple two-node cluster, or for a small cluster with a small number of application groups
A Round Robin FailOver Policy chooses the server system running the smallest number of application groups as a failover target Round Robin FailOver Policy is often used for larger clusters running a large number of application groups having essentially the same server load characteristics (for example, servers running similar databases or applications)
The Load FailOver Policy described herein enables a framework for server consolidation at the data center In a preferred embodiment, Load FailOver Policy takes into account System Capacity, Application Group Load, System Limits and Application Group Prerequisites
Load FailOver Policy Capacity and Load
In one embodiment, a system Capacity variable, also referred to herein as Capacity, for a system is set to a fixed value representing the system's load handling capacity An application group Load variable, also referred to herein as Load, for an application is set to a fixed demand (Load) placed on a processor by the application group For example, consider a 4-node cluster consisting of two 16- processoi servers and two 8-processor servers The administrator sets a Capacity value on the 16-CPU servers to 200 and the 8-CPU servers to 100 These Capacity values can be arbitrarily assigned but should reflect differences in capacity of the respective systems
Similarly, each application group running on a system has a predefined Load value When an application group is brought online, the application group's Load is subtracted from the available capacity of the system In one embodiment, a cluster management application keeps track of the available capacity of all systems in the cluster using an AvailableCapacity variable for each system AvailableCapacity is determined by subtracting Load of all applications groups online (an application group is considered online if the application group is fully or partially online) on a system from the system's Capacity When a failover occurs, the cluster management application determines the system with the highest AvailableCapacity and starts the application group on that system Duπng a failover scenario involving multiple application groups, failover decisions can be made seπally to facilitate the proper load-based choice, however, online operations to bring applications online on alternate systems can be performed in parallel
Capacity is a soft restriction, indicating that the value of AvailableCapacity can fall below zero Duπng a cascading failure scenario, AvailableCapacity can be negative
Load FailOver Policy Static Load vs Dynamic Load
The dynamic load of a server can be calculated using a formula AvailableCapacity = Capacity - (Sum of Load of all online application groups) An alternative strategy for determining dynamic load is provided by some cluster management applications, including early versions of VERITAS Cluster Server (VCS) prior to VCS 2 0 These cluster management applications allow an administrator to determine a dynamic load of a server with an outside monitoring program and set a DynamicLoad variable to reflect the value determined The administrator can run any monitoπng package desired, and then provide an estimated load to the cluster management application If DynamicLoad is so provided, this value can be used to override calculated Load values, for example, AvailableCapacity can be calculated using the formula AvailableCapacity = Capacity - DynamicLoad This calculation allows an administrator to control system load more accurately than using estimated application group loading
However, the administrator must set up and maintain a load estimation package in addition to the cluster management application In some cluster management applications using a Load FailOver Policy, the system with the lowest value in the DynamicLoad variable is chosen for a failover target
In summary, available capacity of all systems to host application groups can be calculated using the following formula
AvailableCapacity of a system = Capacity - Cuπent System Load where
Cuirent System Load = Dynamic system load if dynamic system load variable is specified
OR
Sum of Load of all application groups online on the system Load FailOver Policy Limits and Prerequisites
System Limits and application group Prerequisites can also be used in a business continuity policy An administrator can provide the finite resources available on each system (Limits), such as shared memory segments, semaphores and other system resources For example, a particular server may be capable of hosting no more than two database applications Furthermore, a set of Prerequisites, each of which corresponds to available system resources and/or capacity, can be established for each application group For example, a particular database application may need, and have a Prerequisite indicating, five shared memory segments and twenty semaphores
In one embodiment, all of the Prerequisites specified in an application group's set of Prerequisites must be met before the application group can be started In one embodiment, system
Limits cannot be overridden, such that a system cannot be not chosen as a failover target if the system has already reached it's allowed Limits
Under the business continuity policy of the present invention, a set of eligible systems that meet the failed application group's Prerequisites, which can be equivalent to the application group's Load, is identified This set can be limited to only those systems that also have sufficient
AvailableCapacity to accept the failed application group and remain within the system's Limits From this set of eligible systems, the least loaded system can be selected as a failover target A system that does not meet all the Prerequisites of an application group cannot be selected as a failover target When a decision is made to bring an application group online on a particular system, the values of the set of Prerequisite variables for the system resources required for the application group are subtracted from the Current Limits of the system to indicate that these system resources are already allocated
In one embodiment of the invention, administrators first define application group Prerequisites and then define corresponding Limits for each system In this embodiment, each system can have different Limits, and only the Prerequisites and Limits applicable to each application group and system are required to be defined. If a system has no defined Limits for a given system resource, then a default value of 0 can be assumed. Similarly, when Prerequisites are not defined for a given system resource, a default value of 0 can be assumed
As an example of definitions of the Prerequisites and Limits vanables, the following configuration can be established to allow only one group online on a system at a given point in time Prerequisites = { GroupWeight = 1 }
Limits = { GroupWeight = 1 }
By specifying a Prerequisite GroupWeight value of one, only one application group can be online at a given time In addition, by specifying a Limits GroupWeight value of one for each system, each system can have only one application group online at a time The GroupWeight value can be consideied to represent the number of application groups that can be brought online When the GroupWeight value is zero, no more application groups can come online on that particular system For example consider a system having two systems, SI and S2. each specifying a Limit of GroupWeight = 1 The system also has three application groups, G 1 , G2 and G3 Groups G 1 and G2 have Prerequisites of GroupWeight = 1, and group G3 has no Prerequisites A Prerequisite of GroupWeight = 1 for Gl and G2 indicates that each of Gl and G2 requires one "unit" of GroupWeight to be brought online When G 1 goes online at S 1 , S l 's CurrentLimits become GroupWeight = 0, thus preventing G2 from also going online on SI G3, having no Prerequisites, can go online on either SI or S2
Prerequisites and Limits can be used to determine a set of eligible systems on which an application group can be started during failover or upon startup Once a set of eligible systems meeting the Prerequisites and Limits is identified, the established FailOver Policy dictates which of the set of eligible systems is selected as the failover target
Example System and Application Group Attributes
Table 1 below provides an example of one embodiment including system attπbutes that can be used to implement the business continuity policy of the present invention Table 2 provides examples of application group attributes
Table 1: System attributes
Figure imgf000013_0001
Figure imgf000014_0001
Table 2: Application Gioup Attributes
Figure imgf000014_0002
Figure imgf000015_0001
Establishing Application Group and System Configurations
The following configuration file, main cf, illustrates a system definition and an application group definition include "types cf ' cluster SGWM-demo ( ) system LargeSvrl (
Capacity = 200
Limits = { ShrMemSeg=20, Semaphores=100, Processors=12}
LoadWarningLevel = 90
LoadTimeThreshold = 600
)
group Gl (
SystemList = { LgSvrl, LgSvr2, MedSvrl, MedSvr2 }
SystemZones = { LgSvrl=0, LgSvτ2=0, MedSvrl=l, MedSvr2=l ] AutoStartPohcy = Load
AutoStartList = { MedSvrl, MedSvr2 }
FailOverPohcy = Load
Load = 100
Prerequisites = { ShrMemSeg=10, Semaphores=50 Processors=6 } }
)
Using Capacity and Prerequisites
Using Capacity and Prerequisites together enables determination of a suitable failover system In one embodiment, the system meeting the Prerequisites for a given application group and having the highest AvailableCapacity is selected If multiple systems satisfy the Prerequisites for the given application gioup and have the same AvailableCapacity, the first system in the SystemList can be chosen Note that a system meeting the Prerequisites for an application group may not be eligible to host the application group if the system's Limits are already met The system's Limits are already met when the Current Limits for the system allow sufficient resources to meet the Prerequisites for the given application group
As mentioned earlier, in one embodiment, Capacity is a soft limit The system with the highest AvailableCapacity value can be selected, even if a negative AvailableCapacity value is produced when the application group is started on the system
Overload Warning
In one embodiment, an overload warning is provided as part of the Load FailOver Policy When a server sustains a pre-detei mined load level set by a LoadWarningLevel variable (statically or dynamically determined) for a predetermined time, set by a LoadTimeThreshold vaπable, an overload warning is initiated The overload warning can be provided by a usei -defined script or application designed to implement the FailOver Load Policy of a given enterprise For example, the user-defined script may provide a message on a console for the operator, or the user-defined script may move 01 shut down application groups based on usei-defined priority values For example, if Load on a server running a business critical database reaches and stays above a user-defined threshold, operators can be immediately notified The user-defined script could then scan the system foi any application groups with a lower priority than the database, such as an internal Human Resources application, and shut down or move the lower-pπoπty application to a system with a smaller current Load
System Zones
In one embodiment, SystemZones are used to designate a preferred subset of systems from which to select in an initial failover decision A cluster management application implementing a business continuity policy tries to re-start an application group within the application group's zone before choosing a system in another zone For example, consider a typical 3-tιer application infrastructure with web servers, application servers and database servers The application and database servers can be configured in a single cluster Using SystemZones enables the cluster management application for an application group to try to fail to another application zone server if another application zone server is available If another application zone server is not available, the cluster management application can try to failover to the database zone based on Load and Limits In this configuration, excess Capacity and Limits available in the database zone are reserved for the laiger load of a database failover, while application servers handle the Load of application groups in the application zone During a cascading failure, excess capacity in the cluster remains available to application groups The SystemZones feature allows fine tuning application failover decisions, yet retains the flexibility to failover anywhere in the cluster if necessary
Load-Based AutoStart
In one embodiment, the concepts of the Load FailOver Policy can also be used to determine where an application group should come up when the cluster initially starts Administrators can set an AutoStartPohcy variable to Load and allow the cluster management application to determine the best system on which to start the application group Application groups can be placed in an AutoStart queue for load-based staitup when the cluster management application determines the available systems As with failover, a subset of systems is first created that meet the Prerequisites and Limits, then of those systems, the system with the highest AvailableCapacity can be chosen
Using AutoStartPohcy = Load and SystemZones together allows the administrator to establish a list of preferred systems in a cluster to initially run an application gioup As mentioned above, in a 3- tiei architecture, the administrator can designate that application groups start first in the application zone and database groups start in the database zone Using Application Priorities in Conjunction with the Load FailOver Policy
By combining the Load FailOver Policy described above with application priorities, a truly automated business continuity policy for mission/business critical applications is provided This business continuity policy adds the necessary business intelligence to the cluster framework to make policy driven decisions at time of failure to best maintain critical applications and application performance
Application group Priorities allow the administrator to specify the relative importance of an application group over other application groups During any failure event, the cluster management application can determine a suitable failover system based on application group Priorities, Load and Limits For most single application group or single server failures, most clusters will have adequate spare capacity However, in a situation involving multiple failures, or reduced cluster capacity following a Disaster Recovery event, more difficult decisions may be required
Application group Priorities effectively provide a mechanism for the cluster to provide triage The most critical application groups remain functional, at adequate performance levels, at the possible expense of lower priority applications
In one embodiment, the following priorities can be assigned to an application group
Priority 1 - Mission Cntical
Prioπty 1 application groups must remain online and be restarted immediately upon failure The cluster management application can be configured to avoid stopping or moving Prioπty 1 application groups, unless the application group specifically faults or the operator intervenes Priority 1 application groups can sustain only the downtime necessary to restart the application group
Prioπty 2 - Business Critical
Priority 2 application groups are only slightly less important than Pπoi lty 1 application groups The cluster management application must keep these application groups online, but may perform a switchover, moving the Priority 2 application group to another servei to maintain cluster Load characteristics
Piioπty 3 - Task Critical
Pi loi lty 3 application groups may be moved at will to maintain cluster loading Priority 3 application groups also may be stopped to maintain adequate Load handling capability in the cluster, but only if a move is not possible Pπoπty 4 - Task Non-Critical
Pi loi lty 4 Application gioups are non-essential applications such as test applications or various internal support programs These application groups may be stopped at will to maintain cluster loading During any cluster reconfiguration, the cluster management application can remove all Priority 4 application groups from the calculation and make its best recommendation for reconfiguration Priority 4 applications may only be brought online m the cluster if the cluster management application determines that there is adequate load capacity remaining in the cluster
Fig 3 is a flowchart of a method for implementing a business continuity policy in a server consolidation environment The method begins upon startup or failure of a given application group, here called application group X, in Startup or Failure of Application Group X step 310 A set of systems eligible to host application group X is identified in Determine Set of Eligible Systems to Host Application Group X step 320 At Size of Set > 0 decision point 322, a determination is made whether any eligible systems were identified If so, control proceeds to Select Host System 324 to select a host system (either an initial system upon startup or a failover target) for running application group X For example, the host system can be selected as the eligible system having the highest Available Capacity Other policies can also be used to select a host system according to the needs of the business implementing a business continuity policy Control then proceeds to Start Application Group X on Host System step 350 to start application group X on the selected host system
If at Size of Set > 0 decision point 322, the set includes no eligible systems for hosting application group X, control proceeds to Determine Priority of Application Group X step 330 A respective prioπty for application group X among all application groups running on the cluster is determined The priority of a given application group is configurable and can be assigned by an administratoi of the server consolidation environment For example, to determine the respective priority for application group X, the pπoπty can be retneved from data stored for a cluster management application managing the cluster in the server consolidation environment
From Determine Priority of Application Group X step 330, control proceeds to Lower Priority Application Groups in Cluster decision point 332 If no lower priority applications are running, control proceeds to Notify Administrator that Application Group X Cannot be Started step 336 Because no eligible systems exist for application group X, application group X cannot be started without pre- empting another application of the same or higher priority An administrator can determine whether
Application Group X should be pie-empted In one embodiment, the process for handling the situation where an application group cannot be restarted is configurable within a cluster management application and can be provided as a user-defined script If at Lower Prioπty Application Groups in Cluster decision point 332, lower priority application groups are running, control proceeds to Can Sufficient Capacity and Resources be Freed to Accommodate Application Group X decision point 338 In Can Sufficient Capacity and Resources be Freed to Accommodate Application Group X decision point 338, an evaluation of the available resources in the systems of the cluster is made This evaluation is discussed in further detail with reference to Fig 5
If sufficient capacity and resources cannot be freed, control proceeds to Notify Administrator that Application Group X Cannot be Started step 336 If sufficient capacity and resources can be freed, control proceeds to Free Sufficient Capacity and Resources on Host System step 340
In Free Sufficient Capacity and Resources on Host System step 340, capacity and resources are freed on one or more systems to enable sufficient resources for application group X to run on a given host system From Free Sufficient Capacity and Resources on Host System step 340, control proceeds to Start Application Group X on Host System step 350
Fig 4 is a flowchart of the Determine Set of Eligible Systems to Host Application Group X step 320 of Fig 3 In Select System from Cluster step 410, a system within the cluster of systems not previously evaluated is selected to determine whether the system is eligible Control then proceeds to Selected System Meets Application Requirements decision point 412 If the selected system does not meet the requirements for application group X, such as a prerequisite for application group X, control proceeds to Systems Not Considered Remam decision point 422 to determine whether another system is available for evaluation
If the selected system meets the requirements for application group X, control proceeds to Selected System Meets System Requirements decision point 414 For example, a determination whethei the selected system is within its Limits can be made by adding the system's Current Limits to the Pierequisites for Application Group X The sum must be less than the Limits of the Selected System to meet the Limits criterion As another example, a system requirement may be that a particular CPU remains below a certain utilization percentage If the selected system does not meet the system requirements, control proceeds to Systems Not Consideied Remain decision point 422 to determine whether another system is available for evaluation
If the selected system meets the system requirements at Selected System Meets System Requirements decision point 414, control proceeds to Add Selected System to Set of Eligible Systems step 420 Control then proceeds to Systems Not Considered Remain decision point 422 to determine whethei another system is available for evaluation
In Systems Not Considered Remain decision point 422, a determination is made whether any systems not already considered remain in the cluster If so, control proceeds to Select System step 410 to select another system If not, the set of eligible systems is complete and control returns to Size of Set > 0 decision point 322 of Fig 3
Fig 5 is a flowchart of the Can Sufficient Capacity and Resources be Freed to Accommodate Application Group X decision point 338 of Fig 3 The initial decision is made at Can Sufficient Prioπty 4 Resources be Stopped decision point 510 If sufficient Priority 4 resources can be stopped, control proceeds to Select Host System and Priority 4 Resources to Free step 520 In this step, a system with sufficient Prioπty 4 resources is selected as the system to host application group X Control proceeds to Indicate Sufficient Resources can be Freed step 565 The flowchart of Fig 5 is completed and an indication that sufficient resources can be freed is made
If at Can Sufficient Pπoπty 4 Resources be Stopped decision point 510, sufficient Prioπty 4 resources cannot be freed, control proceeds to Can Sufficient Pπoπty 4 Resources be Stopped and Priority 3 Resources Moved decision point 530 If priority 4 applications can be stopped and sufficient resources for Application Group X freed on a system by moving priority 3 applications to other systems, then control proceeds to Determine Appropriate Prioπty 3 and 4 Resources to Free and Select Host System step 540 At Determine Appropriate Pπoπty 3 and 4 Resources to Free and Select Host System step 540, the decision of which priority 4 applications to stop and which prioπty 3 applications to move is made Preferably, when several different scenarios can free the necessary resources, a configuration can be selected such that a minimum number of resources are stopped and or moved to enable the largest number of high-priority applications to run Control then proceeds to Indicate Sufficient Resources can be Freed step 565 The flowchart of Fig 5 is completed and an indication that sufficient resources can be freed is made
If at Can Sufficient Priority 4 Resources be Stopped and Priority 3 Resources Moved decision point 530, sufficient resources are not available, control proceeds to Can Sufficient Priority 4 Resources be Stopped and Priority 2 and 3 Resources Moved decision point 550 If so, control proceeds to Determine Appropriate Priority 2, 3 and 4 Resources to Free and Select Host System step 560 Again, preferably minimal resources are stopped and moved to enable the largest number of high-pπoπty applications to run Control then proceeds to Indicate Sufficient Resources can be Freed step 565 The flowchart of Fig 5 is completed and indication that sufficient lesources can be freed is made
If at Determine Appropriate Pπoπty 2, 3 and 4 Resources to be Freed and Select Host System step 560, sufficient resources are not available in the cluster, control proceeds to Indicate Sufficient Resouices Cannot be Freed step 570 The flowchart of Fig 5 is completed and an indication that sufficient resources cannot be freed is made
Tigs 6 through 16 describe multiple scenarios that are within the scope of the business continuity policy of the present invention Fig 6 shows the calculation of available capacity for a cluster of servers in a server consolidation environment Servers 610A, 61 OB, 6 IOC and 610D form a cluster Servers 610A, 61 OB and 6 IOC each have a capacity of 300, and server 610D has a capacity of 1 0 Server 610A is running Microsoft Exchange (XCH) version 5 5, which places a Load of 100 on server 610A Server 610A is also running a database application group, Oracle 8ι, which places a Load of 150 on server 610A, for a total Load of 250 Server 610B is running SQL 2000 server, which places a Load of 125 on server 610B Server 610C is running a file sharing application group FileSharel , which places a Load of 75 on Server 610C Server 610D is running two file sharing application groups, Fιleshare2 and Fιleshare3, placing a load of 150 on server 610D By subtracting the respective Load for each application group running on a given server from the Capacity of the given server, Available Capacity is calculated as 50 for server 610A, 175 for server 610B, 225 for server 610C, and zero for server 610D With an available capacity of 225, server 610C has the highest available capacity in the cluster
Fig 7 shows the movement of an application upon failure of one of the servers of Fig 6 and the resulting available capacity in the cluster Server 610D fails, leaving file sharing applications Filesharel and Fιleshare2 to be redistributed if possible to other servers in the cluster Fig 7 shows the movement of Fιleshare2 to server 610C, which is selected because server 610C offers the highest available capacity As a lesult of the movement of Fιleshare2 to server 610C, the Load on server 610C increases to 150, and the available capacity of server 6 IOC reduces to 150 Server 610B, with an available capacity of 175, now has the highest available capacity in the cluster
Fig 8 shows the movement of another application in the failure scenario of Fig 7 Fιleshare3 is moved from server 610D to the server having the highest available capacity, server 610B As a result of this move, the Load placed on server 610B is increased to 200 and the available capacity of server 610B is reduced to 100
Fig 9 shows an example configuration of database applications in the cluster of Fig 6, with each of servers 610A thiough 610D configured with a capacity of 300 Server 610A is running two SQL 2000 database application groups, SQL 2000 Database A and SQL 2000 Database B Each of SQL 2000 Database A and SQL 2000 Database B places a load of 100 on server 610A Server 610A is configured with an SQL limit of 2, indicating that server 610A can run no more than two SQL databases at one time The available capacity on servei 610A is 300 - 200 = 100
Server 610B similarly has a SQL limit of 2 and is running SQL 2000 Database C, placing a load of 100 on server 610B Server 610B has an available capacity of 200 Server 610C is running SQL 2000 Database E, placing a load of 100 on server 610C Server 610C also has an available capacity of 200 Server 610D has a SQL limit of 3 and is running SQL 2000 Database D, which places a Load of 150 on server 610D Server 610D has an available capacity of 150 Fig 10 shows movement of database applications in a failure scenario m the configuration of Fig 9 Seiver όlOC fails, leaving SQL 2000 Database E to be lestarted on another server SQL 2000 Database E places a Load of 100 on a seiver Server 610A cannot host SQL 2000 Database E because sever 610A has already reached its limit of 2 server SQL applications Neither server 610B or server 610D has reached its limit of the number of SQL applications that it can host, and both server 610B and server 610D have sufficient available capacity to run SQL 2000 Database E In the example scenaπo shown, server 610B is selected because, of the two eligible systems, server 610B has the highest available capacity After SQL 2000 Database E is moved, the load placed on server 610B increases to 200 and the available capacity of server 610B reduces to 100
Fig 11 shows an example of managing application groups using limits and prerequisites
Four application groups are given in this example, including application group Gl, a file sharing application, application group G2, a test application, application group G3, a Microsoft Exchange application, and application group G4, a SQL server application group Application group Gl, a pnoπty three application group, requires that a GroupWeight vaπable for the server have a value of 1 before application group Gl can be run on that server Application group G2, a priority four application group, requires that a GroupWeight vaπable for the server have a value of 2 before application group G2 can be run on that server Application group G3, a prioπty one application group, requires that a GroupWeight variable for the server have a value of 2 before application group G3 can be run on that server Finally, application group G4, a pπoπty two application group, requires that a GroupWeight variable for the server have a value of 2 before application group G4 can be run on that server
Servers 610A through 610D run applications Gl through G4, respectively With these running application groups, servers 610A through 610D have Limits of 2, 3, 2 and 3, respectively Servei s 610A through 610D have CurrentLimits values of 1, 1, 0, and 1, respectively
Fig 12 shows a failure scenario in which an application group cannot be failed over Server
610C fails, and no server has a CurrentLimits value of 2, which is a prerequisite for application group G3 to be started on another server When an application group cannot be failed over, pπoπties of the running applications are examined to determine whether sufficient resources can be freed in the cluster to run the application group Application group G3 is a prioπty one application, and each of application groups G2 tlirough G4 is a lower prioπty application group Fust, a determination is made whether sufficient priority 4 resources exist to free sufficient resources for application group G3 Application group G2 is a priority 4 resouice, and it consumes two GroupWeight units If application group G2 is freed, the two GroupWeight units necessary to run application group G3 are freed, and application group G3 can be started on server 610B
Fig 13 shows stopping a lowei -prioπty application group to free sufficient resources to enable a higher-pi loπty application group to remain available In the scenario of Fig 12, application group G2 was determined to provide sufficient resources to allow application group G3 to run Application group G2 is stopped, and application group G3 is moved to servei 61 OB The CurrentLimits value for server 61 OB is recalculated, now having a value of 1
Fig 14 shows another failure scenario for the configuration of Figs 12 and 13 Assume that now server 610D fails, leaving application G4 to be restarted Application group G4 requires a GroupWeight value of 2 to be started on another server Neither of the remaining servers 610A or 61 OB provides a GroupWeight value of 2 A determination is then made whether sufficient resources can be freed to enable application group G4 to remain available Lower priority resources are examined to make this determination
Fig 15 shows movement of a lower-priority application group to free sufficient resources to enable a higher-priority application group to remain available Application group Gl, a priority three application, has a lower pnoπty than application group G4, with a prioπty of two Furthermore, by moving application group Gl, the value of GroupWeight for server 610A can be raised to two, which meets the prerequisite for application group G4 The prerequisites for application group G 1 are a GroupWeight value of 1, which is provided by server 61 OB Application group Gl is moved to server 61 OB to free resources on server 610A The result of the movement is that server 610A has a GroupWeight value of 2, and server 61 OB has a GroupWeight value of zero
Fig 16 shows movement of the higher-priority application group to use the resources freed as a result of the action shown in Fig 15 After the movement of application group Gl, server 610A has sufficient resources to host application group G4 The pierequisite for application group G4, that
GroupWeight have a value of 2, is true After the movement of application group G4, server 610A has a GroupWeight value of zero
The above scenarios are examples of multiple failure situations that can be handled by the business continuity policy described herein Many variations of these scenarios, and alternative variables for implementing the business continuity policy, are envisioned as part of the present invention and fall within its scope Further example scenarios are provided in the "Additional Examples" section of this document
Resource Manager Integration
Most major operating systems have a corresponding resource manager, such as Solans resource manager, HP Process Resource Manager and A1X Resource manager These resource manageis, collectively called xRM here, allow an administrator to control CPU and memory utilization However, typically xRM packages are only aware of the system on which the xRM package is running, and not of other systems within the cluster Preferably, a cluster management application supporting the business continuity policy of the present invention is integrated with
Figure imgf000025_0001
packages and controls lesource utilization, and therefore Load, on all systems in the cluster
Each operating system vendor provides a different interface and different capabilities in the platfoim's resource manager For example, Solans 9 supports the concept of a "Task-ID," which ties a specific process launched under the Task-ID to limits imposed in a "projects" database To maintain maximum flexibility and keep operations across the operating system platforms identical, a cluster management application provides an API layer to communicate with the various xRM packages At a minimum, the Load FailOver policy can be used If the cluster management application is also running on an operating system platform capable of xRM integration, then full enforcement of Load and Limits is possible
In one embodiment, administrators can configure resource utilization parameters once m the cluster definition, rather than on individual systems The cluster management application, m conjunction with xRM-specific agents on each system, controls resource allocation to specific application groups when the application groups are started on a system This allows a single point of administration as well as greater control of load distπbution in the cluster
By changing values for application group Load, the administrator sets both the overall load an application group is expected to place on a system, as well as the share of a system the application group is expected to receive For example, if three application groups with a Load of 200 each were running on a server with a capacity of 800, each application group effectively receives 1/3 of the available resources In this scenario, raising the Load value for a specific application group to 400 accomplishes several things First, raising the load value increases the resource allocation for the modified application group This application group receives 50% of available CPU and memory, and the remaining two application groups receive 25% each Second, raising the Load Value places the server at a 100% load level, reducing AvailableCapacity to 0 This situation produces an overload warning Raising a Load value not only tells the cluster management application that a system is loaded more heavily, it also functions to increase the performance of the application
Modeling and Simulation Engine
A modeling and simulation engine (MSE) can provide the capability for the cluster management application to determine the best possible configuration for application groups based on a "what-if ' model Rather than choose a system based solely on current load and limits, the cluster management application determines how to reconfigure the cluster to provide application groups with the best possible performance Re-configuration takes into account the vanous application group pπoi ities to determine the application groups that can and cannot be moved Various parameters can also be supplied to the MSE, such as "maximum performance" and "minimum switches," to allow the cluster management application to deteimine whether to perform a cluster reconfiguration to maximize performance or whether to minimize downtime for application groups
The MSE can also include simulation capabilities to allow administrators to run a complete what-if scenario for any cluster reconfiguration For example
What if I take 32 CPU server- 1 out of the cluster7 What is the best performance reconfiguration model9 What applications will be stopped due to the shutdown9 What applications will be stopped due to reconfiguration moves9 What if I allow Prioπty 1 moves during this evolution9
What if I add an additional four 16-CPU commodity servers to my cluster and storage area network ? What is the best performance configuration9 What applications will be stopped duπng the move9 How much spare capacity will this configuration provide9
I want to online a large database Where is the best location9 What reconfiguration would provide the best fit
The MSE can ngidly enforce the current concepts of Load and Limits, and also allows reconfiguration to better utilize the FailOver Policy For example, to add a large database (shared memory and semaphores X2) and no system has adequate capacity within the Limits, the proposed FailOver Policy provides an error The MSE could determine that two systems piovide available adequate resources, but each is running a small database (shared memory and semaphores The cluster management application can recommend a consolidation of the two smaller databases to one server and free the second server for the large database
Cluster Reconfiguration
Clustei Reconfiguration, either manual or automatic, refers to the capability piovided by the clustei management application to re-allocate application groups, and therefore loads across the cluster, to better balance system Load This re-configuration can be in response to a failuie, server additions and deletions, or application group additions or removals Cluster reconfiguration can be performed by an MSE component of the cluster management application to allocate fixed cluster resouices The cluster reconfiguration module can be allowed to perform automatically if moving Pi loπty 3 and Priority 4 application gioups, and possibly automatically on Priority 2 application groups if specific parameteis are set and manual (operator-acknowledged) for Priority 1 groups
Clustei reconfiguration capabilities can intervene when a manual application group online or switchovei is requested If a user requests to move or bring an application group online, the MSE can inform the usei that it is acceptable or recommend a reconfiguration sequence to better allocate resources Additional Examples
The following example uses Limits and Preiequisites to control the total number of application groups that may run on a system The cluster consists of four similar servers There are five application groups, which are roughly equivalent in requirements for processing power and in the amount of Load each application group requires of a system Each server can host two such application groups This example does not use application group Load and system Capacity Also, the application groups use a default AutoStartPohcy and FailOverPohcy
Example Configuration File with Limits
system Svrl (
Limits = {GroupWeight = 2} ) system Svr2 (
Limits = {GroupWeight = 2} ) system Svr3 (
Limits = {GroupWeight = 2}
) system Svr4 ( Limits = {Gioup Weight = 2}
) group G 1 (
SystemList = { Svrl, Svr2, Svr3, Srv4) AutoStartList = { Svrl, Svr2 } Prerequisites = { GroupWeight = 1 }
) group G2 (
SystemList = { Svrl, Svr2, Svr3, Svt4} AutoStartList = { Svr2, Svr3 } Prerequisites = { Gioup Weight = 1 }
) group G3 (
SystemList = { Svrl , Svr2, Svr3, Svr4} AutoStartList = {Svr3, Svr4 } Preiequisites = { GroupWeight = 1 }
) group G4 (
SystemList = { Svrl , Svr2, Svr3, Svr4} AutoStartList = { Svr4, Svrl J Prerequisites = { GroupWeight = 1 }
) group G5 (
SystemList = { Svrl, Svr2, Svr3, Svr4} AutoStartList = { Svr2, Svr3 } Prerequisites = { GroupWeight = 1 | )
AutoStai t Operation
This example uses the default AutoStartPohcy = Ordei Application groups are brought online on the first system available in the AutoStartList In this way, Gl will start on Svrl , G2 on Svr2, and so on G5 will start on Svr2
Normal Opei ation
An example cluster configuration (assuming all systems are running) is provided below
Svrl
CurrentLimits = { Group Weιght=l ] (Group Gl)
Svr2
CurrentLimits = {GroupWeight=0} (Groups G2 and G5)
Svr3
CurrentLimits = {GroupWeιght=l j (Group G3)
Svr4
CurrentLimits = {GroupWeιght=l } (Group G4)
Faύui e Scenaπo
In the first failure scenaπo, assume Svr2 tails With application groups G2 and G5 configured with an identical SystemList, both application groups can run on any system The cluster management application can serialize the choice of failovei nodes for the two groups G2, being canomcally first, is started on Svrl, the lowest priority in the SystemList, thereby exhausting the Limits for Svrl G5 is then started on the next system in the order of the SystemList for group G5 G5 goes online on Svr3 Following the first failure, the cluster now looks like the following
Svrl
CurrentLimits = { Group Weιght=0 (Groups Gl and G2) Svr3
CurrentLimits = {GroupWeight=0} (Groups G3 and G5)
Svr4 CurrentLimits = {Group Weιght=l }
(Gioup G4)
Cascading Failures
Assuming Svr2 cannot immediately repaired, the cluster can tolerate the failure of an individual application group on Svrl or Svr3, but no further node failures
Load-Based example
The following sample cluster shows the use of simple load based startup and failover SystemZones, Limits and Prerequisites are not used
The cluster consists of four identical systems, each with the same capacity Eight application groups, G1-G8, with various loads run in the cluster
Example Configuration File include "types cf ' cluster SGWM-demo system Svrl (
Capacity = 100 ) system Svr2 (
Capacity = 100 ) system Svr3 ( Capacity = 100
) system Svr4 (
Capacity = 100 ) group Gl (
SystemList = { Svrl, Svr2, Svr4, Svr4 } AutoStartPohcy = Load AutoStartList = { Svrl, Svr2, Svr3, Svr4 } FailOverPohcy = Load Load = 20
) group G2 (
SystemList = { Svrl , Svr2, Svι4. Svr4 | AutoStartPohcy = Load AutoStartList = { Svrl, Svr2, Svr3, Svr4 1 FailOverPohcy = Load
Load = 40 ) group G3 (
SystemList = { Svrl, Svr2, Svr4, Svr4 } AutoStartPohcy = Load
AutoStartList = { Svrl, Svr2, Svr3, Svr4 } FailOverPohcy = Load Load = 30 ) group G4 (
SystemList = { Svrl, Svr2, Svr4, Svr4 } AutoStartPohcy = Load AutoStartList = { Svrl, Svr2, Svr3, Svr4 } FailOverPohcy = Load Load = 10
) group G5 (
SystemList = { Svrl, Svr2, Svr4, Svr4 } AutoStartPohcy = Load AutoStartList = { Svrl, Svr2, Svr3, Svr4 }
FailOverPohcy = Load Load = 50 ) group G6 (
SystemList = { Svrl, Svr2, Svr4, Svr4 }
AutoStartPohcy = Load
AutoStartList = { Svrl, Svr2, Svr3, Svι4 }
FailOverPohcy = Load
Load = 30 ) group G7 (
SystemList = { Svrl, Svr2, Svr4, Svr4 } AutoStartPohcy = Load AutoStartList = { Svrl, Svr2, Svr3, Svr4 } FailOverPohcy = Load
Load = 20 ) group G8 (
SystemList = { Svrl, Svr2, Svr4, Svr4 } AutoStartPolicy = Load AutoStartList = { Svrl , Svr2, Svr3, Svr4 } FailOverPohcy = Load
Load = 40 )
AutoStart Operation
As mentioned above, application groups can be placed in a queue as soon as they are started on a system For the purposes of this example, application groups are placed into the queue in the same order that the application groups are described, Gl through G8
Gl is started on the system with the highest AvailableCapacity Since the systems are equal, Svrl is chosen smce it is canomcally first G2-G4 start on Svr2 through Svr4 At this time, with the first 4 group startup decisions made, the cluster looks as follows
Svrl
AvaιlableCapacιty=80
Svr2 A vailableCapac ιty=60
Svr3 AvaιlableCapacιty=70
Svr4
AvaιlableCapacιty=90
As the remaining application groups are brought online, G5 starts on Svr4, as it has the highest AvailableCapacity G6 are brought starts on Svi 1, with 80 remaining G7 starts on Svr3, with AvaιlableCapacιty=70 G8 starts on Svr2, with AvaιlableCapacιty=60
Normal Opei atwn
The final cluster configuration (assuming the original queue of G1-G8) is shown below
Svrl
AvaιlableCapacιty=50 (Groups Gl and G6)
Svr2
AvaιlableCapacιty=20 (Groups G2 and G8) Svr3
AvaιlableCapacιty=50 (Groups G3 and G7)
Svr4 AvaιlableCapacιty=40
(Groups G4 and G5)
In this configuration, an overload warning is provided for Svr2 after the default 900 seconds since Svr2 has a default LoadWarningLevel of 80%
Faihtr e Scenario
In the first failure scenario, assume Svr4 fails, immediately queuing G4 and G5 for failure decision G4 starts on Svrl, as Svrl and Svr3 have AvaιlableCapacιty=50 and Svrl is cano cally first G5 goes online on Svr3 Svrl Failure decisions are made serially, actual online and offline operations are not Senahzing the failover choice allows complete load-based control, and, in one embodiment, adds less than one second to total failover time
Following the first failure, the cluster configuration is shown below
Svrl
AvaιlableCapacιty=40 (Groups Gl, G6 and G4)
Svr2 AvaιlableCapacιty=20
(Groups G2 and G8)
Svr3
AvailableCapacity=0 (Groups G3, G7 and G5) In this configuration, an overload warning is provided for Svr3 to notify an operator or administrator that Svr3 is overloaded The opeiator can switch G7 to Svrl to balance loading across Gl and G3 As soon as Svr4 is repaired, Svr4 rejoins the cluster with an AvaιlableCapacιty=100 Svι4 can then server as a failovei target for further failures
Cascading Failui es
Assuming Svr4 is not immediately repaired, further failures are possible For this example, assume Svr3 now fails Each application group G3 G5 and G7 is re-started on respective server Svrl , Svr2, and Svrl These re-starts result in the following configuration
Figure imgf000033_0001
AvaιlableCapacιty= -10 (Groups G 1 , G6, G4, G3 and G7)
Svr2 AvaιlableCapacιty= -30
(Groups G2 and G8 and G5)
This example shows that AvailableCapacity is a soft limit, and can fall below zero
Complex 4-system Example
The following example shows a 4-system cluster using multiple system Capacities and various Limits The cluster consists of two large Enterprise servers (LgSvrl and LgSvr2) and two Medium servers (MedSvrl and MedSvr2) Four application groups, Gl through G4, are provided with various Loads and Prerequisites Gl and G2 are database application groups, with specific shared memory and semaphore requirements G3 and G4 are middle-tier application groups with no specific memory or semaphore requirements and simply add load to a given system
Example Configuration File
include "types cf ' cluster Demo ( ) system LgSvrl (
Capacity = 200
Limits = { ShrMemSeg=20, Semaphores= 100, Processors=12} LoadWarningLevel = 90 LoadTimeThreshold = 600
) system LgSvr2 (
Capacity = 200
Limits = { ShrMemSeg=20, Semaphores= 100, Processors=12 } LoadWarnιngLevel=70 LoadTιmeThreshold=300 ) system MedSvrl (
Capacity = 100
Limits = { ShrMemSeg=10, Semaphores=50, Processors=6}
) system MedSvr2 (
Capacity = 100
Limits = { ShrMemSeg=10, Semaphores=50, Processors=6 }
) gioup Gl (
SystemList = j LgSvi l, LgSvr2, MedSvrl , MedSvr2 j SystemZones = { LgSvrl =0, LgSvr2=0, MedSvrl = l , MedSvr2=l } AutoStartPohcy = Load AutoStartList = { LgSvrl , LgSvr2 }
FailOverPohcy = Load Load = 100
Prerequisites = { ShrMemSeg= 10, Semaphores=50, Processors=6 } ) gioup G2 (
SystemList = { LgSvrl, LgSvr2, MedSvrl, MedSvr2 } SystemZones = { LgSvrl=0, LgSvr2=0, MedSvrl=l, MedSvr2=l } AutoStartPohcy = Load AutoStartList = { LgSvrl, LgSvr2 } FailOverPohcy = Load
Load = 100
Prerequisites = { ShrMemSeg=10, Semaphores=50, Processors=6 } ) group G3 ( SystemList = { LgSvrl, LgSvr2, MedSvrl, MedSvr2 }
SystemZones = { LgSvrl=0, LgSvr2=0, MedSvrl = 1, MedSvr2=l }
AutoStartPohcy = Load
AutoStartList = { MedSvrl, MedSvr2 }
FailOverPohcy = Load Load = 30
) gioup G4 (
SystemList = { LgSvrl, LgSvr2, MedSvrl, MedSvr2 } SystemZones = { LgSvrl=0, LgSvr2=0, MedSvrl =1, MedSvr2=l } AutoStartPohcy = Load
AutoStartList = { MedSvrl, MedSvr2 } FailOverPohcy = Load Load = 20 ) AutoStart Operation
Using the main cf example above, the following is one possible outcome of the AutoStart operation
Gl - LgSvrl G2 - LgSvr2 G3 - MedSvrl
G4 - MedSvr2
All application groups are assigned to a system when the cluster starts Application groups Gl and G2 have an AutoStartList of LgSvrl and LgSvr2 Gl and G2 are queued to go online on one of these seivers, based on highest AvailableCapacity Assuming Gl starts fust, Gl is started on LgSvrl because LgSvrl and LgSvι2 both have an initial AvailableCapacity of 200, and LgSvrl is lexically first
Application groups G3 and G4 are started, respectively, on MedSvrl and MedSvr2
Normal Opei ation
After starting application groups Gl through G4, the resulting configuration is shown below
LgSvrl
AvaιlableCapacιty=100
CurrentLimits = { ShrMemSeg=10, Semaphoi es=50, Processors=6 }
LgSvr2 AvatlableCapacιty=100
CurrentLimits = { ShrMemSeg=10, Semaphores=50, Processors=6}
MedSvrl
AvaιlableCapacιty=70
CurrentLimits = { ShrMemSeg=10, Semaphores=50, Processors=6 } MedSvr2
AvaιlableCapacιty=80
CurrentLimits = { ShrMemSeg=10, Semaphores=50, Pιocessoιs=6}
Failui e Scenai ω
For the first failure example, assume system LgSvr2 fails The cluster management application scans available systems in G2's SystemList having the same SystemZones grouping as
LgSvr2 The cluster management application then creates a subset of systems meeting the application group's Prerequisites In this case, LgSvrl meets all necessary Limits G2 is brought online on LgSvrl, resulting in the following configuration
LgSvrl AvailableCapacity=0
CurrentLimits = { ShrMemSeg=0, Semaphoi es=0, Processors=0 }
MedSvrl
AvaιlableCapacιty=70
CuirenfLimits = { ShrMemSeg=10, Semaphores=50, Processors=6 } MedSvr2
AvaιlableCapacιty=80
CurrentLimits = { ShrMemSeg=10, Semaphores=50, Processors=6}
After 10 minutes, (LoadTimeThreshold = 600) the oveiload warning on LgSvrl is provided because LoadWarningLevel exceeds 90% Ca cadmg Failure Scenai 10
In this scenario, a further failure of a system can be toleiated, as each system has remaining Limits sufficient to accommodate the application group running on the peer system
For example, if a failure were to occur with either MedSvrl or MedSvr2, the other system would be selected as a failover target, as application groups running on the failed system have MedSvrl and MedSvr2 in their respective SystemZones
If a failure instead occmred with LgSvrl, with LgSvr2 still offline, the failover of the application groups Gl and G2 are serialized for the failover decision process In this case, no systems exist in the database zone The first group canomcally, G 1 , will be started on MedSvr2, as MedSvr2 meets all Limits and has the highest AvailableCapacity Group G2 will be started on MedSvrl, as MedSvrl is the only remaining system meeting the Limits
Server Consolidation Example
The following example shows a complex 8-node cluster running multiple applications and several large databases The database servers are all large enterprise systems, LgSvrl, LgSvr2 and LgSvr3 The middle-tier servers running multiple applications are MedSvi 1 , MedSvr2, MedSvr3, MedSvr4 and MedSvr5
Example Configuration File include "types cf ' cluster Demo ( ) system LgSvrl (
Capacity = 200
Limits = { SlιrMemSeg=15, Semaphores=30, Processors=18} LoadWarningLevel = 80 LoadTimeThreshold = 900
) system LgSvr2 (
Capacity = 200
Limits = { ShrMemSeg=15, Semaphores=30, Processors=18 } LoadWaιnιngLevel=80
LoadTιmeThreshold=900 ) system LgS vi 3 (
Capacity = 200 Limits = { ShrMemSeg=15, Semaphores=30, Processors=18 }
LoadWarnιngLevel=80 LoadTιmeThreshold=900 ) system MedSvrl (
Capacity = 100
Limits = j ShrMemSeg=5, Semaphoi es= 10, Processoιs=6 j ) system MedSvr2 (
Capacity = 100
Limits = { ShrMemSeg=5, Semaphores= 10, Processors=6
) system MedSvr3 ( Capacity = 100
Limits = { ShrMemSeg=5, Semaphores= 10, Processors=6 } ) system MedSvr4 (
Capacity = 100 Limits = { ShrMemSeg=5, Semaphores=10, Processors=6 }
) system MedSvr5 (
Capacity = 100
Limits = { ShrMemSeg=5, Semaphores=10, Processors=6 } ) group Database 1 (
SystemList = { LgSvrl , LgSvr2, LgSvr3, MedSvrl, MedSvr2, MedSvr3,
MedSvr4, MedSvr5 } SystemZones = { LgSvrl=0, LgSvr2=0, LgSvr3=0, MedSvrl=l, MedSvr2=l, MedSvr3=l, MedSvr4=l, MedSvr5=l }
AutoStartPohcy = Load AutoStartList = { LgSvrl, LgSvr2, LgSvr3 } FailOverPohcy = Load Load = 100 Prerequisites = { ShrMemSeg=5, Semaphores=10, Processors=6 }
}
) group Database2 (
SystemList = { LgSvrl, LgSvr2, LgSvι3, MedSvrl, MedSvr2, MedSvr3, MedSvr4, MedSvι5 }
SystemZones = { LgSvrl=0, LgSvr2=0, LgSvr3=0, MedSvrl = l, MedSvr2=l,
MedSvr3=l, MedSvι4=l, MedSvr5=l } AutoStartPohcy = Load AutoStartList = { LgSvrl, LgSvr2, LgSvι3 } FailOverPohcy = Load
Load = 100
Preiequisites = { ShrMemSeg=5, Semaphoi es= 10, Processors=6 } }
) jroup Database3 (
SystemList = { LgSvrl, LgSvr2, LgSvr3, MedSvrl . MedSvr2, MedSvr3,
MedSvr4, MedSvi 5 } SystemZones = { LgSvrl=0, LgSvr2=0, LgSvr3=0, MedSvrl = l , MedSvr2=l,
MedSvr3=l, MedSvr4=l , MedSvr5=
AutoStartPohcy = Load AutoStartList = { LgSvrl, LgSvr2, LgSvr3 } FailOverPohcy = Load Load = 100 Prerequisites = { ShrMemSeg=5, Semaphores=10, Processors=6 }
}
) group Application 1 (
SystemList = { LgSvrl, LgSvr2, LgSvr3, MedSvrl , MedSvr2, MedSvr3, MedSvr4, MedSvr5 }
SystemZones = { LgSvrl=0, LgSvr2=0, LgSvr3=0, MedSvrl=l , MedSvr2=l,
MedSvr3=l, MedSvr4=l, MedSvr5=l { AutoStartPohcy = Load
AutoStartList = { MedSvrl, MedSvr2, MedSvr3, MedSvrf, MedSvr5 } FailOverPohcy = Load
Load = 50 ) group Application (
SystemList = { LgSvrl , LgSvr2, LgSvr3, MedSvrl , MedSvr2, MedSvr3, MedSvr4, MedSvr5 }
SystemZones = { LgSvrl=0, LgSvι2=0, LgSvr3=0, MedSvrl=l, MedSvr2=l,
MedSvr3=l, MedSvι4=l, MedSvr5=l } AutoStartPohcy = Load
AutoStartList = { MedSvrl, MedSvr2, MedSvr3, MedSvr4, MedSvr5 } FailOverPohcy = Load
Load = 50 ) group Application (
SystemList = { LgSvrl, LgSvr2, LgSvr3, MedSvrl , MedSvr2, MedSvr3, MedSvr4, MedSvr5 }
SystemZones = { LgSvrl=0, LgSvr2=0, LgSvr3=0, MedSvrl=l, MedSvr2=l,
MedSvr3=l, MedSvr4=l, MedSvr5=l } AutoStartPohcy = Load
AutoStartList = { MedSvrl, MedSvr2, MedSvr3, MedSvr4, MedSvr5 } FailOverPohcy = Load
Load = 50 ) group Apphcatιon4 (
SystemList = { LgSvrl, LgSvr2, LgSvr3, MedSvrl, MedSvr2, MedSvr3, MedSvr4, MedSvr5 }
SystemZones = { LgSvrl=0, LgSvr2=0, LgSvr3=0, MedSvrl=l, MedSvr2=l,
MedSvr3=l, MedSvr4=l, MedSvr5=l } AutoStartPohcy = Load
AutoStartList = { MedSvrl, MedSvr2, MedSvr3, MedSvr4, MedSvr5 } FailOverPohcy = Load
Load = 50 ) group Apphcatιon5 (
SystemList = { LgSvrl, LgSvr2, LgSvr3, MedSvrl , MedSvr2, MedSvr3,
MedSvr4, MedSvr5 } SystemZones = { LgSvrl=0, LgSvr2=0, LgSvr3=0, MedSvrl = l , MedSvr2=l, MedS vr3= 1 , MedSvr4= 1 , MedSvr5= 1 J
AutoStartPohcy = Load
AutoStartList = { MedSvrl, MedSvr2, MedSvr3, MedSvr4, MedSvr5 } FailOverPohcy = Load Load = 50 )
AutoStart Opetation
Using the example configuration file above, the following AutoStart Sequence is possible
Database 1 - LgSvrl
Database2 - LgSvr2 Database3 - LgSvr3
Apphcationl - MedSvrl
Application - MedSvr2
Application - MedSvr3
Apphcatιon4 - MedSvr4 Apphcatιon5 - MedSvi 5
Normal Opeuilion
Assuming the above configuration, the following can be determined
LgSvrl
AvaιlableCapacιty=100 CurrentLimits = j ShrMemSeg=10, Semaphores=20, Processors=12 }
LgSvr2
AvaιlableCapacιty=100
CurrentLimits = { ShrMemSeg=10, Semaphores=20, Processoιs=12 }
LgSvr3 AvaιlableCapacιty=100
CuiTentLimits = { ShrMemSeg=10, Semaphores=20, Processoιs=12 }
MedSvrl
A vai lableCapacιty=50
CurrentLimits = { ShrMemSeg=5, Semaphores=10, Processoιs=6 } MedSvr2
AvaιlableCapacιty=50
CurrentLimits = { ShrMemSeg=5, Semaphores=10, Processoιs=6 (
MedSvr3
AvaιlableCapacιty=50 CιπrentLιmιts = { ShrMemSeg=5, Semaphores=10, Processoιs=6 |
MedSvr4
AvaιlableCapacιty=50
Cm rentLimits = { ShrMemSeg=5, Semaphores=10, Processoιs=6 } MedSvr5
AvaιlableCapacιty=50
CurrentLimits = ' ShrMemSeg=5, Semaphores=10, Processors=6 J
Failui e Scenai to
The configuration above shows FaιlOverPohcy=Load and SystemZones The database zone
(System Zone 0) is capable of handling up to two failures Each server has adequate Limits to support up to three database application groups (with an expected performance drop when all database application groups are running on one server) Similarly, the application zone has excess capacity built into each system
In this example, each of MedSvrl through MedSvr5 specifies Limits to support one database, even though the application groups G4 through G8 do not specify Prerequisites This configuration allows a database to fail across SystemZones if absolutely necessary and run on the least loaded application zone machine
For the first failure example, assume system LgSvτ3 fails The cluster management application scans all available systems in Database2's SystemList, with the same SystemZones grouping as LgSvr3 The cluster management application then creates a subset of systems meeting the application group's Prerequisites In this case, LgSvrl and LgSvr2 meet all necessary Limits, and Database 1 is brought online on LgSvrl The following configuration for the database zone is produced
LgSvrl
AvailableCapacity=0
CurrentLimits = { ShrMemSeg=5, Semaphores=10, Pιocessors=6 }
LgSvr2
AvaιlableCapacιty= 100 CurrentLimits = { ShιMemSeg=10, Semaphores=15, Processors=12 }
In this scenario, a further failure of a database can be tolerated, as each system has remaining Limits sufficient to accommodate the database application group miming on the peer system
Cascading Failure Scenai to
If the performance of a specific database is unacceptable with two database groups running on one server (or three following a second failure), the SystemZones policy has another helpful effect Failing a database group into the application zone has the effect of resetting its preferred zone For example, in the above scenai 10, Database 1 has been moved to LgSvrl The administrator could reconfigure the application zone to move two application groups to one system Then the database application can be switched to the empty application server (MedSvrl -MedSvrS) This will place Databasel in Zonel (the application zone) If a failure occurs in Databasel , the least-loaded server in the Application zone meeting its Prerequisites is selected as the failover target
System Suitable for Implementing the Present Invention
Fig 17 depicts a block diagram of a computer system 10 suitable for implementing the present invention Computer system 10 includes a bus 12 which interconnects major subsystems of computer system 10 such as a central processor 14, a system memory 16 (typically RAM, but which may also include ROM, flash RAM, or the like), an input/output controller 18, an external audio device such as a speaker system 20 via an audio output interface 22, an external device such as a display screen 24 via display adapter 26, serial ports 28 and 30, a keyboard 32 (interfaced with a keyboard controller 33), a storage interface 34, a floppy disk drive 36 operative to receive a floppy disk 38, and a CD-ROM drive 40 operative to receive a CD-ROM 42 Also included are a mouse 46 (or other point-and-chck device, coupled to bus 12 via serial port 28), a modem 47 (coupled to bus 12 via serial port 30) and a network interface 48 (coupled directly to bus 12)
Bus 12 allows data communication between central processor 14 and system memory 16, which may include both read only memory (ROM) or flash memory (neither shown), and random access memory (RAM) (not shown), as pieviously noted The RAM is generally the main memory into which the operating system and application programs are loaded and typically affords at least 16 megabytes of memory space The ROM or flash memory may contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with peripheral components Applications resident with computer system 10 are generally stored on and accessed via a computer readable medium, such as a hard disk drive (e g , fixed disk 44), an optical drive (e g , CD-ROM drive 40), floppy disk unit 36 or other storage medium Additionally, applications may be in the form of electronic signals modulated in accordance with the application and data communication technology when accessed via network modem 47 or interface 48
Storage interface 34, as with the other storage interfaces of computer system 10, may connect to a standard computer readable medium for storage and or retπeval of information, such as a fixed disk drive 44 Fixed disk drive 44 may be a part of computer system 10 or may be separate and accessed through other interface systems Many other devices can be connected such as a mouse 46 connected to bus 12 via serial port 28, a modem 47 connected to bus 12 via serial port 30 and a network interface 48 connected directly to bus 12 Modem 47 may provide a direct connection to a remote server via a telephone link or to the Internet via an internet service provider (ISP) Network interface 48 may piovide a direct connection to a remote server via a direct network link to the Internet via a POP (point of presence) Network interface 48 may provide such connection using wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like Many other devices or subsystems (not shown) may be connected in a similar manner (e g bar code leaders, document scanneis, digital cameras and so on) Conversely, it is not necessary for all of the devices shown in Fig 17 to be present to practice the piesent invention The devices and subsystems may be interconnected in different ways from that shown in Fig 17 The operation of a computer system such as that shown in Fig 17 is readily known in the art and is not discussed in detail in this application Code to implement the present invention may be stored in computer-readable storage media such as one or more of system memory 16, fixed disk 44, CD-ROM 42, or floppy disk 38 Additionally, computer system 10 may be any kind of computing device, and so includes personal data assistants (PDAs), network appliances, X-window terminals or other such computing devices The operating system provided on computer system 10 may be MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, Linux® or other known operating system Computer system 10 also supports a number of Internet access tools, including, for example, an HTTP-compliant web browser having a lavaScπpt interpreter, such as Netscape Navigator® 3 0, Microsoft Explorer® 3 0 and the like
Moreover, regarding the messages and/or data signals described herein, those skilled in the art will recognize that a signal may be directly transmitted from a first block to a second block, or a signal may be modified (e g , amplified, attenuated, delayed, latched, buffered, inverted, filtered or otherwise modified) between the blocks Although the signals of the above described embodiment are characterized as transmitted from one block to the next, other embodiments of the present invention may include modified signals in place of such directly transmitted signals as long as the informational and or functional aspect of the signal is tiansmitted between blocks To some extent, a signal input at a second block may be conceptualized as a second signal derived from a first signal output from a first block due to physical limitations of the circuitry involved (e g , there will inevitably be some attenuation and delay) Therefore, as used heiein, a second signal derived from a first signal mcludes the first signal or any modifications to the first signal, whether due to circuit limitations or due to passage through other circuit elements which do not change the infoimational and/or final functional aspect of the first signal
Other Embodiments
The present invention is well adapted to attain the advantages mentioned as well as others inherent therein While the present invention has been depicted, described, and is defined by reference to particular embodiments of the invention, such references do not imply a limitation on the invention, and no such limitation is to be mfeπed The invention is capable of considerable modification, alteration, and equivalents in form and function, as will occur to those ordinarily skilled in the pertinent aits The depicted and described embodiments are examples only, and are not exhaustive of the scope of the invention
The foregoing described embodiments include components contained within other components It is to be understood that such architectures are merely examples, and that in fact many other architectures can be implemented which achieve the same functionality In an abstract but still definite sense any arrangement of components to achieve the same functionality is effectively "associated" such that the desired functionality is achieved Hence, any two components herein combined to achieve a particular functionality can be seen as "associated with" each other such that the desired functionality is achieved, irrespective of architectures or intermediate components Likewise, any two components so associated can also be viewed as being "operably connected," or "operably coupled," to each other to achieve the desired functionality
The foregoing detailed description has set forth various embodiments of the present invention via the use of block diagrams, flowcharts, and examples It will be understood by those within the art that each block diagram component, flowchart step, operation and/or component illustrated by the use of examples can be implemented, individually and/or collectively, by a wide range of hardware, software, fn mware, or any combination thereof
The present invention has been described in the context of fully functional computer systems, however, those skilled in the art will appreciate that the present mvention is capable of being distributed as a program product in a variety of forms, and that the present invention applies equally regardless of the particular type of signal bearing media used to actually carry out the distribution Examples of signal bearing media include recordable media such as floppy disks and CD-ROM, transmission type media such as digital and analog communications links, as well as media storage and distribution systems developed in the future
The above-discussed embodiments may be implemented by software modules that perform certain tasks The software modules discussed herein may include script, batch, or other executable files The software modules may be stored on a machine-readable or computer-readable storage medium such as a disk drive Storage devices used for storing software modules in accordance with an embodiment of the invention may be magnetic floppy disks, hard disks, or optical discs such as CD- ROMs oi CD-Rs, for example A storage device used for storing firmware or hardwaie modules in accordance with an embodiment of the invention may also include a semiconductor-based memory, which may be permanently, removably or remotely coupled to a microprocessor/memory system Thus, the modules may be stored within a computer system memory to configure the computer system to perform the functions of the module Other new and various types of computer-readable storage media may be used to store the modules discussed herein
The above descnption is intended to be illustrative of the invention and should not be taken to be limiting Other embodiments within the scope of the present invention aie possible Those skilled in the art will readily implement the steps necessary to provide the stmctures and the methods disclosed herein, and will understand that the process parameters and sequence of steps are given by way of example only and can be varied to achieve the desired structure as well as modifications that are within the scope of the invention Variations and modifications of the embodiments disclosed herein can be made based on the description set forth herein, without departing from the scope of the invention
Consequently, the invention is intended to be limited only by the scope of the appended claims, giving full cognizance to equivalents in all respects.

Claims

WHAT IS CLAIMED IS: 1 A method comprising identifying a set of systems of a plurality of systems, wherein each system in the set of systems meets a requirement for hosting a first application of a plurality of applications, and the systems form at least one cluster, and when the set of systems is empty, using a respective pπoπty for each of the applications for identifying a resource to free, wherein the resource is one of a plurality of resources, and each resource is associated with at least one of the systems
2 The method of claim 1 wherein the identifying the resource further comprises using a respective capacity for each of the systems for identifying the resource
3 The method of claim 1 further comprising freeing the resource such that an associated system of the systems meets the requirement for hosting the first application
4 The method of claim 3 further comprising starting the first application on the associated system
5 The method of claim 3 wheiein the freeing the resource comprises stopping a second application that is using the resource, wherein the second application has a lower respective priority than a respective priority of the first application
6 The method of claim 3 wherein the freeing the resource comprises moving a second application that is using the resource to a second system of the systems, wherein the second application has a lower respective priority than a respective priority of the first application
7 The method of claim 1 further comprising determining that the first application is to be started
8 The method of claim 7 wherein the determining that the first application is to be started comprises detecting that the first application failed 9 The method of claim 7 wherein the determining that the first application is to be started comprises comparing a respective pnoπty of the first application with each of a set of respective priorities for a set of the applications mnmng on the systems, and determining that the first application is to be started when the respective priority of the first application is higher than one of the set of respective pπonties for the set of applications mnmng on the systems
10 The method of claim 1 wherein the identifying the set of systems comprises including a selected system in the set of systems when the selected system meets a prerequisite for the first application
11 The method of claim 1 wherein the identifying the set of systems compπses including a selected system in the set of systems when the first application does not exceed a limit for the selected system
12 An apparatus compnsing an identifying module to identify a set of systems of a plurality of systems, wherein each system in the set of systems meets a requirement for hosting a first application of a plurality of applications, and the systems form at least one cluster, and a priority module to use a respective priority for each of the applications for identifying a resource to free when the set of systems is empty, wherein the resource is one of a plurality of resources, and each resource is associated with at least one of the systems
13 The apparatus of claim 12 wherein the priority module further uses a respective capacity for each of the systems for identifying the resource
14 The apparatus of claim 12 further comprising a freeing module to free the resource such that an associated system of the systems meets the requirement for hosting the first application
15 The apparatus of claim 14 further comprising a starting module to start the first application on the associated system 16 The apparatus of claim 14 wherein the freeing module comprises a stopping module to stop a second application that is using the resource, wherein the second application has a lower respective priority than a respective priority of the first application
17 The apparatus of claim 14 wherein the freeing module comprises a moving module to move a second application that is using the resource to a second system of the systems, wherein the second application has a lower respective priority than a respective pπonty of the first application
18 The apparatus of claim 12 further compnsing a determining module to determine that the first application is to be started
19 The apparatus of claim 18 wherem the determining module comprises a detectmg module to detect that the first application failed
20 The apparatus of claim 18 wherein the determining module comprises a comparing module to compare a respective pπoπty of the first application with each of a set of respective priorities for a set of the applications n ng on the systems, wherein the determining module determines that the first application is to be started when the respective priority of the first application is higher than one of the set of respective priorities for the set of applications mnmng on the systems
21 The apparatus of claim 12 wherem the identifying module comprises an including module to include a selected system in the set of systems when the selected system meets a prerequisite for the first application
22 The apparatus of claim 12 wherein the identifying module compnses an including module to include a selected system in the set of systems when the first application does not exceed a limit for the selected system
PCT/US2003/017189 2002-05-31 2003-05-30 Business continuation policy for server consolidation environment WO2003102772A2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN038165287A CN1669001B (en) 2002-05-31 2003-05-30 Method and device for business continuation policy for server consolidation environment
JP2004509790A JP4620455B2 (en) 2002-05-31 2003-05-30 Business continuity policy for server-linked environments
AU2003249673A AU2003249673A1 (en) 2002-05-31 2003-05-30 Business continuation policy for server consolidation environment
DE60325055T DE60325055D1 (en) 2002-05-31 2003-05-30 BUSINESS RESOLUTION POLICY FOR SERVER CONSOLIDATION ENVIRONMENT
CA2486998A CA2486998C (en) 2002-05-31 2003-05-30 Business continuation policy for server consolidation environment
EP03756324A EP1516252B1 (en) 2002-05-31 2003-05-30 Business continuation policy for server consolidation environment

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/159,366 US7529822B2 (en) 2002-05-31 2002-05-31 Business continuation policy for server consolidation environment
US10/159,366 2002-05-31

Publications (2)

Publication Number Publication Date
WO2003102772A2 true WO2003102772A2 (en) 2003-12-11
WO2003102772A3 WO2003102772A3 (en) 2004-11-11

Family

ID=29709668

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2003/017189 WO2003102772A2 (en) 2002-05-31 2003-05-30 Business continuation policy for server consolidation environment

Country Status (8)

Country Link
US (2) US7529822B2 (en)
EP (1) EP1516252B1 (en)
JP (1) JP4620455B2 (en)
CN (1) CN1669001B (en)
AU (1) AU2003249673A1 (en)
CA (1) CA2486998C (en)
DE (1) DE60325055D1 (en)
WO (1) WO2003102772A2 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005073852A1 (en) * 2004-02-02 2005-08-11 Fujitsu Siemens Computers Gmbh Method for operating an arrangement of several computers in case of a computer failure
JP2007011426A (en) * 2005-06-28 2007-01-18 Nec Electronics Corp Processor
CN100345460C (en) * 2004-04-05 2007-10-24 华为技术有限公司 Smoothing releasing method
WO2011095953A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget Lm Ericsson (Publ) Load and backup assignment balancing in high availability systems
US8326990B1 (en) * 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
WO2016048874A3 (en) * 2014-09-22 2016-06-09 Netapp, Inc. System and method for handling multi-node failures in a disaster recovery cluster
EP2344970A4 (en) * 2008-10-30 2017-06-14 Hewlett-Packard Enterprise Development LP Data center and data center design
CN108885563A (en) * 2016-03-22 2018-11-23 三菱电机株式会社 Information processing system, information processing unit and information processing method
WO2020018221A1 (en) * 2018-07-20 2020-01-23 Microsoft Technology Licensing, Llc Opportunistic offlining for faulty devices in datacenters

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7124320B1 (en) * 2002-08-06 2006-10-17 Novell, Inc. Cluster failover via distributed configuration repository
US7127637B2 (en) * 2003-03-19 2006-10-24 Lucent Technologies Inc. Method and apparatus for high availability distributed processing across independent networked computer fault groups
US7149918B2 (en) * 2003-03-19 2006-12-12 Lucent Technologies Inc. Method and apparatus for high availability distributed processing across independent networked computer fault groups
US7219254B2 (en) * 2003-03-19 2007-05-15 Lucent Technologies Inc. Method and apparatus for high availability distributed processing across independent networked computer fault groups
US7134046B2 (en) * 2003-03-19 2006-11-07 Lucent Technologies Inc. Method and apparatus for high availability distributed processing across independent networked computer fault groups
WO2004093391A1 (en) * 2003-04-10 2004-10-28 Fujitsu Limited Relation management control program, device, and system
EP1634176B1 (en) * 2003-06-18 2014-07-02 Fujitsu Technology Solutions Intellectual Property GmbH Cluster arrangement
US7302477B2 (en) * 2003-07-31 2007-11-27 International Business Machines Corporation Administration tool for gathering information about systems and applications including the feature of high availability
US20060064400A1 (en) 2004-09-21 2006-03-23 Oracle International Corporation, A California Corporation Methods, systems and software for identifying and managing database work
US7747717B2 (en) * 2003-08-14 2010-06-29 Oracle International Corporation Fast application notification in a clustered computing system
US7664847B2 (en) * 2003-08-14 2010-02-16 Oracle International Corporation Managing workload by service
US7668935B2 (en) * 2003-08-29 2010-02-23 Kabushiki Kaisha Toshiba Computer system and method for service load distributing
US7612903B2 (en) 2003-09-08 2009-11-03 Castelle Line utilization in integrated document delivery method and apparatus
US7757033B1 (en) 2004-02-13 2010-07-13 Habanero Holdings, Inc. Data exchanges among SMP physical partitions and I/O interfaces enterprise servers
US7843906B1 (en) 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway initiator for fabric-backplane enterprise servers
US7685281B1 (en) 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
US7633955B1 (en) 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
US8868790B2 (en) 2004-02-13 2014-10-21 Oracle International Corporation Processor-memory module performance acceleration in fabric-backplane enterprise servers
US7873693B1 (en) 2004-02-13 2011-01-18 Habanero Holdings, Inc. Multi-chassis fabric-backplane enterprise servers
US7900206B1 (en) * 2004-03-31 2011-03-01 Symantec Operating Corporation Information technology process workflow for data centers
US7872989B1 (en) * 2004-07-12 2011-01-18 Habanero Holdings, Inc. Full mesh optimization for spanning tree protocol
US8713295B2 (en) 2004-07-12 2014-04-29 Oracle International Corporation Fabric-backplane enterprise servers with pluggable I/O sub-system
US7904910B2 (en) * 2004-07-19 2011-03-08 Hewlett-Packard Development Company, L.P. Cluster system and method for operating cluster nodes
US7543020B2 (en) * 2005-02-10 2009-06-02 Cisco Technology, Inc. Distributed client services based on execution of service attributes and data attributes by multiple nodes in resource groups
US8051170B2 (en) * 2005-02-10 2011-11-01 Cisco Technology, Inc. Distributed computing based on multiple nodes with determined capacity selectively joining resource groups having resource requirements
US9361156B2 (en) * 2005-03-14 2016-06-07 2236008 Ontario Inc. Adaptive partitioning for operating system
US20060248371A1 (en) * 2005-04-28 2006-11-02 International Business Machines Corporation Method and apparatus for a common cluster model for configuring, managing, and operating different clustering technologies in a data center
US8195976B2 (en) * 2005-06-29 2012-06-05 International Business Machines Corporation Fault-tolerance and fault-containment models for zoning clustered application silos into continuous availability and high availability zones in clustered systems during recovery and maintenance
US7823029B2 (en) * 2005-09-07 2010-10-26 International Business Machines Corporation Failure recognition, notification, and prevention for learning and self-healing capabilities in a monitored system
US8082545B2 (en) * 2005-09-09 2011-12-20 Oracle America, Inc. Task dispatch monitoring for dynamic adaptation to system conditions
US7933987B2 (en) * 2005-09-30 2011-04-26 Lockheed Martin Corporation Application of virtual servers to high availability and disaster recovery solutions
US7577868B2 (en) * 2005-09-30 2009-08-18 Lockheed Martin Corporation No data loss IT disaster recovery over extended distances
US7934116B2 (en) * 2005-09-30 2011-04-26 Lockheed Martin Corporation Disaster recover/continuity of business adaptive solution framework
US7702789B2 (en) * 2005-11-03 2010-04-20 International Business Machines Corporation Apparatus, system, and method for reassigning a client
EP1955235A4 (en) * 2005-11-25 2010-11-10 Continuity Software Ltd System and method of managing data protection resources
DE102006001257A1 (en) * 2005-12-30 2007-07-12 Advanced Micro Devices, Inc., Sunnyvale Automated state estimation system for cluster assets and method for operating the system
JP4920391B2 (en) * 2006-01-06 2012-04-18 株式会社日立製作所 Computer system management method, management server, computer system and program
JP2007249445A (en) * 2006-03-15 2007-09-27 Hitachi Ltd Load distribution control method and its device for cluster system
US9485151B2 (en) * 2006-04-20 2016-11-01 International Business Machines Corporation Centralized system management on endpoints of a distributed data processing system
WO2009070178A1 (en) * 2007-11-30 2009-06-04 Idt Corporation Optimization of consolidating entities
US8209405B1 (en) * 2006-06-12 2012-06-26 Juniper Networks, Inc. Failover scheme with service-based segregation
US8291042B2 (en) * 2006-07-31 2012-10-16 Lenovo (Singapore) Pte. Ltd. On-demand groupware computing
US7743244B2 (en) * 2006-10-31 2010-06-22 Hewlett-Packard Development Company, L.P. Computer system model generation with tracking of actual computer system configuration
US9043391B2 (en) 2007-02-15 2015-05-26 Citrix Systems, Inc. Capturing and restoring session state of a machine without using memory images
US20080201414A1 (en) * 2007-02-15 2008-08-21 Amir Husain Syed M Transferring a Virtual Machine from a Remote Server Computer for Local Execution by a Client Computer
US8713186B2 (en) * 2007-03-13 2014-04-29 Oracle International Corporation Server-side connection resource pooling
US7802128B2 (en) * 2007-03-26 2010-09-21 Oracle International Corporation Method to avoid continuous application failovers in a cluster
US20090063501A1 (en) * 2007-08-31 2009-03-05 International Business Machines Corporation Systems, methods and computer products for generating policy based fail over configuration for darabase clusters
US7730091B2 (en) * 2007-08-31 2010-06-01 International Business Machines Corporation Systems, methods and computer products for database cluster modeling
US8683033B2 (en) * 2007-09-17 2014-03-25 International Business Machines Corporation Apparatus, system, and method for server failover to standby server during broadcast storm or denial-of-service attack
US8230446B2 (en) * 2007-11-28 2012-07-24 International Business Machines Corporation Providing a computing system with real-time capabilities
US8171501B2 (en) 2007-12-12 2012-05-01 International Business Machines Corporation Use of modes for computer cluster management
JP2009238114A (en) * 2008-03-28 2009-10-15 Hitachi Ltd Storage management method, storage management program, storage management apparatus, and storage management system
US7930489B2 (en) * 2008-03-28 2011-04-19 Symantec Corporation Techniques for optimizing configuration partitioning
US8370679B1 (en) * 2008-06-30 2013-02-05 Symantec Corporation Method, apparatus and system for improving failover within a high availability disaster recovery environment
JP2010086363A (en) * 2008-10-01 2010-04-15 Fujitsu Ltd Information processing apparatus and apparatus configuration rearrangement control method
US8793529B2 (en) * 2008-11-04 2014-07-29 Verizon Patent And Licensing Inc. Congestion control method for session based network traffic
JP4648447B2 (en) * 2008-11-26 2011-03-09 株式会社日立製作所 Failure recovery method, program, and management server
US8117487B1 (en) * 2008-12-29 2012-02-14 Symantec Corporation Method and apparatus for proactively monitoring application health data to achieve workload management and high availability
JP5625243B2 (en) * 2009-02-26 2014-11-19 日本電気株式会社 Information processing system, disaster recovery method, and disaster recovery program
US8533533B2 (en) * 2009-02-27 2013-09-10 Red Hat, Inc. Monitoring processes via autocorrelation
US8145838B1 (en) 2009-03-10 2012-03-27 Netapp, Inc. Processing and distributing write logs of nodes of a cluster storage system
US8327186B2 (en) * 2009-03-10 2012-12-04 Netapp, Inc. Takeover of a failed node of a cluster storage system on a per aggregate basis
US8595740B2 (en) * 2009-03-31 2013-11-26 Microsoft Corporation Priority-based management of system load level
US8069366B1 (en) 2009-04-29 2011-11-29 Netapp, Inc. Global write-log device for managing write logs of nodes of a cluster storage system
US8195685B2 (en) * 2009-06-03 2012-06-05 International Business Machines Corporation Service grouping and allocation method and system
JP5460145B2 (en) * 2009-07-01 2014-04-02 キヤノン株式会社 Data processing apparatus, data processing apparatus control method, and program
US7992031B2 (en) * 2009-07-24 2011-08-02 International Business Machines Corporation Automated disaster recovery planning
US8805983B2 (en) * 2009-10-19 2014-08-12 Dell Products L.P. Local externally accessible managed virtual network interface controller
US9734034B2 (en) * 2010-04-09 2017-08-15 Hewlett Packard Enterprise Development Lp System and method for processing data
JP5470177B2 (en) * 2010-07-06 2014-04-16 株式会社日立製作所 Trace system
US8424000B2 (en) * 2010-07-30 2013-04-16 Symantec Corporation Providing application high availability in highly-available virtual machine environments
US8413144B1 (en) * 2010-07-30 2013-04-02 Symantec Corporation Providing application-aware high availability of virtual machines
US9858133B2 (en) * 2010-09-20 2018-01-02 Netflix, Inc. Techniques for assessing the resiliency of a distribution computing service provided by a collection of interacting servers
US8589728B2 (en) * 2010-09-20 2013-11-19 International Business Machines Corporation Job migration in response to loss or degradation of a semi-redundant component
JP5601587B2 (en) * 2011-02-15 2014-10-08 Necソリューションイノベータ株式会社 Process restart device, process restart method, and process restart program
KR101894282B1 (en) * 2011-07-29 2018-09-03 삼성전자 주식회사 Thermal Controlling Method And Portable Device supporting the same
US8554919B2 (en) 2011-09-09 2013-10-08 Microsoft Corporation Automatic preemption in multiple computer systems
US9154367B1 (en) * 2011-12-27 2015-10-06 Google Inc. Load balancing and content preservation
JP2013205859A (en) * 2012-03-27 2013-10-07 Hitachi Solutions Ltd Distributed computing system
US9438642B2 (en) * 2012-05-01 2016-09-06 Google Technology Holdings LLC Methods for coordinating communications between a plurality of communication devices of a user
US8984325B2 (en) 2012-05-30 2015-03-17 Symantec Corporation Systems and methods for disaster recovery of multi-tier applications
US20130326053A1 (en) * 2012-06-04 2013-12-05 Alcatel-Lucent Usa Inc. Method And Apparatus For Single Point Of Failure Elimination For Cloud-Based Applications
US9560108B2 (en) 2012-09-13 2017-01-31 Google Technology Holdings LLC Providing a mobile access point
CN103716411B (en) * 2014-01-07 2017-06-23 国家电网公司 A kind of 230 MHz power information acquisition terminal remote communication methods based on SGWM
WO2016043635A1 (en) * 2014-09-16 2016-03-24 Telefonaktiebolaget L M Ericsson (Publ) Sensor system of master and slave sensors, and method therein
US10896464B2 (en) * 2014-09-19 2021-01-19 Trading Technologies International, Inc. System, method, and tool for synthetic order recovery
US9880818B2 (en) * 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
FR3031203B1 (en) * 2014-12-24 2017-03-24 Bull Sas METHOD FOR THE ORDERING OF TASKS AT THE KNOB LEVELS OF A COMPUTER CLUSTER, ORDERER OF TASKS AND CLUSTER ASSOCIATED
CN105786550B (en) * 2014-12-26 2020-07-24 联想(北京)有限公司 Memory application processing method and device
TWI562567B (en) * 2015-03-23 2016-12-11 Ind Tech Res Inst Method of automatically managing applications on digital convergence gateways, system therefor and apparatus therewith
US9948711B2 (en) * 2015-06-15 2018-04-17 International Business Machines Corporation Allocating and managing cloud computing resources for disaster recovery
FR3038751B1 (en) * 2015-07-07 2018-05-11 Thales METHOD FOR INTEGRATING A CONSTRAINED ROAD OPTIMIZATION APPLICATION IN AN OPEN ARCHITECTURE AIRCRAFT SYSTEM OF CLIENT-TYPE SERVER
CN105007336B (en) * 2015-08-14 2018-06-29 深圳市云舒网络技术有限公司 The load-balancing method and its system of server
US9952932B2 (en) * 2015-11-02 2018-04-24 Chicago Mercantile Exchange Inc. Clustered fault tolerance systems and methods using load-based failover
JP6143981B1 (en) * 2016-03-22 2017-06-07 三菱電機株式会社 Information processing system, information processing apparatus, and information processing method
US10936289B2 (en) 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10474653B2 (en) 2016-09-30 2019-11-12 Oracle International Corporation Flexible in-memory column store placement
CN106776038B (en) * 2016-12-30 2019-12-27 Oppo广东移动通信有限公司 Hot application resource allocation method and mobile terminal
US10635981B2 (en) * 2017-01-18 2020-04-28 Microsoft Technology Licensing, Llc Automated movement orchestration
US20190034254A1 (en) * 2017-07-31 2019-01-31 Cisco Technology, Inc. Application-based network anomaly management
US10635334B1 (en) 2017-09-28 2020-04-28 EMC IP Holding Company LLC Rule based data transfer model to cloud
US10942779B1 (en) 2017-10-27 2021-03-09 EMC IP Holding Company LLC Method and system for compliance map engine
US10754368B1 (en) * 2017-10-27 2020-08-25 EMC IP Holding Company LLC Method and system for load balancing backup resources
US10834189B1 (en) 2018-01-10 2020-11-10 EMC IP Holding Company LLC System and method for managing workload in a pooled environment
US10509587B2 (en) 2018-04-24 2019-12-17 EMC IP Holding Company LLC System and method for high priority backup
US10769030B2 (en) 2018-04-25 2020-09-08 EMC IP Holding Company LLC System and method for improved cache performance
JP7065686B2 (en) * 2018-05-08 2022-05-12 三菱電機株式会社 Information processing systems, information processing equipment and programs
US10365964B1 (en) * 2018-05-31 2019-07-30 Capital One Services, Llc Data processing platform monitoring

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442791A (en) * 1992-03-31 1995-08-15 Aggregate Computing, Inc. Integrated remote execution system for a heterogenous computer network environment
US6088727A (en) * 1996-10-28 2000-07-11 Mitsubishi Denki Kabushiki Kaisha Cluster controlling system operating on a plurality of computers in a cluster system
US6212562B1 (en) * 1997-03-28 2001-04-03 Honeywell International Inc. Criticality and quality of service (QoS) based resource management
US20010003831A1 (en) * 1998-05-29 2001-06-14 Vernon K. Boland Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63200257A (en) * 1987-02-16 1988-08-18 Mitsubishi Electric Corp Program loading system for computer
JPH0675774A (en) * 1992-08-25 1994-03-18 Mutoh Ind Ltd Cad processing method/device
JP3658420B2 (en) * 1994-04-14 2005-06-08 株式会社日立製作所 Distributed processing system
US5680610A (en) * 1995-01-19 1997-10-21 Unisys Corporation Method and apparatus for testing recovery scenarios in global transaction processing systems
US5737514A (en) * 1995-11-29 1998-04-07 Texas Micro, Inc. Remote checkpoint memory system and protocol for fault-tolerant computer system
US6128657A (en) * 1996-02-14 2000-10-03 Fujitsu Limited Load sharing system
JP3437364B2 (en) * 1996-02-23 2003-08-18 キヤノン株式会社 Printing device and printing system
JPH1097435A (en) * 1996-09-20 1998-04-14 Nec Corp Resource allocation system
US6363497B1 (en) * 1997-05-13 2002-03-26 Micron Technology, Inc. System for clustering software applications
US6145089A (en) * 1997-11-10 2000-11-07 Legato Systems, Inc. Server fail-over system
US6243825B1 (en) * 1998-04-17 2001-06-05 Microsoft Corporation Method and system for transparently failing over a computer name in a server cluster
DE69941670D1 (en) * 1998-08-01 2010-01-07 Ibm COMPUTER-CONTROLLED METHOD AND SYSTEM FOR IMPLEMENTING DISTRIBUTED APPLICATIONS
US6910210B1 (en) * 1998-11-24 2005-06-21 Microsoft Corp. System and method for terminating applications
US6430570B1 (en) * 1999-03-01 2002-08-06 Hewlett-Packard Company Java application manager for embedded device
US6401120B1 (en) * 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
JP2000293386A (en) * 1999-04-12 2000-10-20 Hitachi Ltd Memory management system
US7076783B1 (en) * 1999-05-28 2006-07-11 Oracle International Corporation Providing figure of merit vote from application executing on a partitioned cluster
US6553401B1 (en) * 1999-07-09 2003-04-22 Ncr Corporation System for implementing a high volume availability server cluster including both sharing volume of a mass storage on a local site and mirroring a shared volume on a remote site
US6874145B1 (en) * 1999-07-13 2005-03-29 Sun Microsystems, Inc. Methods and apparatus for implementing an application lifecycle design for applications
US20040205414A1 (en) * 1999-07-26 2004-10-14 Roselli Drew Schaffer Fault-tolerance framework for an extendable computer architecture
US6594784B1 (en) * 1999-11-17 2003-07-15 International Business Machines Corporation Method and system for transparent time-based selective software rejuvenation
US6662219B1 (en) * 1999-12-15 2003-12-09 Microsoft Corporation System for determining at subgroup of nodes relative weight to represent cluster by obtaining exclusive possession of quorum resource
US6799208B1 (en) * 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US6865591B1 (en) * 2000-06-30 2005-03-08 Intel Corporation Apparatus and method for building distributed fault-tolerant/high-availability computed applications
BR0112170A (en) * 2000-07-05 2004-07-27 Ernst & Young Llp Apparatus providing one or more multi-client computer services, combining a first apparatus and a second apparatus substantially identical to said first apparatus, and processes for providing one or more multi-customer computer services for operating a real computer on behalf of customers, and to provide one or more computer services to multiple customers
GB0020488D0 (en) * 2000-08-18 2000-10-11 Hewlett Packard Co Trusted status rollback
US20020147966A1 (en) * 2001-02-14 2002-10-10 Ncr Corporation Operating software performance monitor
US6922791B2 (en) * 2001-08-09 2005-07-26 Dell Products L.P. Failover system and method for cluster environment
US6823382B2 (en) * 2001-08-20 2004-11-23 Altaworks Corporation Monitoring and control engine for multi-tiered service-level management of distributed web-application servers
US6934880B2 (en) * 2001-11-21 2005-08-23 Exanet, Inc. Functional fail-over apparatus and method of operation thereof
US7392421B1 (en) * 2002-03-18 2008-06-24 Symantec Operating Corporation Framework for managing clustering and replication
US9137324B2 (en) * 2002-04-10 2015-09-15 International Business Machines Corporation Capacity on-demand in distributed computing environments
US6996728B2 (en) * 2002-04-26 2006-02-07 Hewlett-Packard Development Company, L.P. Managing power consumption based on utilization statistics

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442791A (en) * 1992-03-31 1995-08-15 Aggregate Computing, Inc. Integrated remote execution system for a heterogenous computer network environment
US6088727A (en) * 1996-10-28 2000-07-11 Mitsubishi Denki Kabushiki Kaisha Cluster controlling system operating on a plurality of computers in a cluster system
US6212562B1 (en) * 1997-03-28 2001-04-03 Honeywell International Inc. Criticality and quality of service (QoS) based resource management
US20010003831A1 (en) * 1998-05-29 2001-06-14 Vernon K. Boland Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
EPEMA D H J ET AL: "A worldwide flock of Condors: Load sharing among workstation clusters" FUTURE GENERATIONS COMPUTER SYSTEMS, ELSEVIER SCIENCE PUBLISHERS. AMSTERDAM, NL, vol. 12, no. 1, 1 May 1996 (1996-05-01), pages 53-65, XP004018257 ISSN: 0167-739X *
MAO Z M ET AL: "Achieving service portability in ICEBERG" SERVICE PORTABILITY AND VIRTUAL CUSTOMER ENVIRONMENTS, 2000 IEEE SAN FRANCISCO, CA, USA 1 DEC. 2000, PISCATAWAY, NJ, USA,IEEE, US, 2001, pages 20-28, XP010551459 ISBN: 0-7803-7133-X *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7574620B2 (en) 2004-02-02 2009-08-11 Fujitsu Siemens Computers Gmbh Method for operating an arrangement of a plurality of computers in the event of a computer failure
WO2005073852A1 (en) * 2004-02-02 2005-08-11 Fujitsu Siemens Computers Gmbh Method for operating an arrangement of several computers in case of a computer failure
CN100345460C (en) * 2004-04-05 2007-10-24 华为技术有限公司 Smoothing releasing method
US9342416B2 (en) 2005-06-28 2016-05-17 Renesas Electronics Corporation Processor and method of controlling execution of processes
JP2007011426A (en) * 2005-06-28 2007-01-18 Nec Electronics Corp Processor
US8296602B2 (en) 2005-06-28 2012-10-23 Renesas Electronics Corporation Processor and method of controlling execution of processes
US10235254B2 (en) 2005-06-28 2019-03-19 Renesas Electronics Corporation Processor and method of controlling execution of processes
US8984334B2 (en) 2005-06-28 2015-03-17 Renesas Electronics Corporation Processor and method of controlling execution of processes
US8326990B1 (en) * 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
EP2344970A4 (en) * 2008-10-30 2017-06-14 Hewlett-Packard Enterprise Development LP Data center and data center design
WO2011095953A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget Lm Ericsson (Publ) Load and backup assignment balancing in high availability systems
US8695012B2 (en) 2010-02-05 2014-04-08 Telefonaktiebolaget L M Ericsson (Publ) Load and backup assignment balancing in high availability systems
EP2677721A1 (en) * 2010-02-05 2013-12-25 Telefonaktiebolaget L M Ericsson (Publ) Load and backup assignment balancing in high availability systems
WO2016048874A3 (en) * 2014-09-22 2016-06-09 Netapp, Inc. System and method for handling multi-node failures in a disaster recovery cluster
US9811428B2 (en) 2014-09-22 2017-11-07 Netapp Inc. System and method for handling multi-node failures in a disaster recovery cluster
CN108885563A (en) * 2016-03-22 2018-11-23 三菱电机株式会社 Information processing system, information processing unit and information processing method
WO2020018221A1 (en) * 2018-07-20 2020-01-23 Microsoft Technology Licensing, Llc Opportunistic offlining for faulty devices in datacenters
US10901824B2 (en) 2018-07-20 2021-01-26 Microsoft Technology Licensing, Llc Opportunistic offlining for faulty devices in datacenters

Also Published As

Publication number Publication date
US7478149B2 (en) 2009-01-13
CN1669001A (en) 2005-09-14
US20090024868A1 (en) 2009-01-22
CA2486998A1 (en) 2003-12-11
CA2486998C (en) 2012-05-01
AU2003249673A1 (en) 2003-12-19
JP2005528691A (en) 2005-09-22
EP1516252A2 (en) 2005-03-23
CN1669001B (en) 2010-11-17
WO2003102772A3 (en) 2004-11-11
JP4620455B2 (en) 2011-01-26
US7529822B2 (en) 2009-05-05
US20040153708A1 (en) 2004-08-05
DE60325055D1 (en) 2009-01-15
AU2003249673A8 (en) 2003-12-19
EP1516252B1 (en) 2008-12-03

Similar Documents

Publication Publication Date Title
CA2486998C (en) Business continuation policy for server consolidation environment
US7900206B1 (en) Information technology process workflow for data centers
US7496646B2 (en) System and method for management of a storage area network
US7062674B2 (en) Multiple computer system and method for assigning logical computers on the same system
US8464092B1 (en) System and method for monitoring an application or service group within a cluster as a resource of another cluster
CN111371857B (en) Load balancing access to replicated databases
US7574620B2 (en) Method for operating an arrangement of a plurality of computers in the event of a computer failure
US6839752B1 (en) Group data sharing during membership change in clustered computer system
US20070061379A1 (en) Method and apparatus for sequencing transactions globally in a distributed database cluster
EP1410229B1 (en) HIGH-AVAILABILITY CLUSTER VIRTUAL SERVER SYSTEM and method
US7716373B2 (en) Method, apparatus, and computer product for updating software
US7979862B2 (en) System and method for replacing an inoperable master workload management process
JPH06202978A (en) Logical route schedule device and method of execution
CN106951559B (en) Data recovery method in distributed file system and electronic equipment
CN112671928B (en) Equipment centralized management architecture, load balancing method, electronic equipment and storage medium
CN112948128A (en) Target terminal selection method, system and computer readable medium
CN111988347B (en) Data processing method of board hopping machine system and board hopping machine system
WO2003054711A9 (en) A system and method for management of a storage area network
US11544162B2 (en) Computer cluster using expiring recovery rules
CN111367711A (en) Safety disaster recovery method based on super fusion data
CN113032107B (en) Resource management method, device and system of cloud database
CN112269693B (en) Node self-coordination method, device and computer readable storage medium
WO2007028249A1 (en) Method and apparatus for sequencing transactions globally in a distributed database cluster with collision monitoring
EP3129878B1 (en) Elasticity engine for availability management framework (amf)
US6966010B1 (en) Application container that allows concurrent execution on multiple Nodes in a Cluster

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2486998

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 2004509790

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2003756324

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 20038165287

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 2003756324

Country of ref document: EP