US20040054943A1 - Method and system for improving the availability of software processes utilizing configurable finite state tables - Google Patents

Method and system for improving the availability of software processes utilizing configurable finite state tables Download PDF

Info

Publication number
US20040054943A1
US20040054943A1 US10/216,104 US21610402A US2004054943A1 US 20040054943 A1 US20040054943 A1 US 20040054943A1 US 21610402 A US21610402 A US 21610402A US 2004054943 A1 US2004054943 A1 US 2004054943A1
Authority
US
United States
Prior art keywords
finite state
state table
high availability
server
computer readable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/216,104
Inventor
Adrian Hall
Craig Fellenstein
Jean-Marc Berthaud
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US10/216,104 priority Critical patent/US20040054943A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BERTHAUD, JEAN-MARC, FELLENSTEIN, CRAIG W., HALL, ADRIAN R.
Publication of US20040054943A1 publication Critical patent/US20040054943A1/en
Priority to US11/845,545 priority patent/US7779129B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems

Definitions

  • the invention relates, generally, to a technique for creating high-availability system solutions utilizing user criteria wherein said criteria includes pluggable finite state tables, fail safe monitoring processes and checking routines for said finite state tables.
  • HA High Availability
  • Low-cost HA software packages generally do not meet the operating requirements or provide the flexibility required for many different solution architectures; making them unsuitable for all but a limited number of qualified situations. These limited situations include those where conditions and requirements match assumptions built into the software (including concurrency vs. outage, pre-emptive vs. wait'n'see, and fast-failover vs. resource depletion trade-off decisions).
  • High function HA software packages by contrast, are typically able to meet stringent operating requirements. However, they usually are only available for a single vendor's platforms, mandate highly structured and complex clustered architectures, require redundant hardware adapters, and have purchase and maintenance costs that are inappropriate for many solutions.
  • One aspect of the present invention is a method of providing a high availability application at low cost for a wide range of solution architectures.
  • a user runs a simplistic web-based wizard to install the high availability application. Then, a user designs the high availability application's logic for an individual process or process-group using a finite state table.
  • an extension to the standard UNIX init process spawner subsystem is used to implement the high availability application as a property of a process.
  • the logic from the finite state table is used to make each process or process-group highly available.
  • Another aspect of the present invention is a system for providing a high availability application at low cost for a wide range of solution architectures, comprising means for running a simplistic web-based wizard to install the high availability application and means for designing the high availability application logic for an individual process or process-group using a finite state table.
  • the system also includes means for extending the standard UNIX init process spawner subsystem to implement the high availability application as a property of a process and means for using the logic from the finite state table to make each process or process-group highly available.
  • Another aspect of the present invention is a computer usable medium storing a program for providing a high availability application at low cost for a wide range of solution architectures, comprising computer readable code for running a simplistic web-based wizard to install the high availability application and means for designing the high availability application logic for an individual process or process-group using a finite state table.
  • the medium also includes computer readable code for extending a standard UNIX init process spawner subsystem to implement the high availability application as a property of a process and computer readable code for using the logic from the finite state table to make each process or process-group highly available.
  • FIG. 1 is a diagram illustrating one embodiment of a system for providing a high availability application at low cost for a wide range of solution architectures in accordance with the present invention
  • FIG. 2 is a flow chart illustrating one embodiment of a method for providing a high availability application at low cost for a wide range of solution architectures for the system in FIG. 1, in accordance with the present invention.
  • FIG. 3 is a chart representation of one embodiment of a design for a finite state table for the system of FIG. 1, in accordance with the present invention.
  • system 10 is illustrated in accordance with one embodiment of the present invention.
  • system 10 may be implemented as a system running HA-lite (HAL).
  • HAL is one embodiment of a high availability software that overcomes the aforementioned disadvantages of other high availability software applications.
  • High availability software applications provide a framework in which processes and other resources are controlled, and made highly available.
  • FIG. 1 represents a typical, client-server architecture that HAL may be capable of supporting.
  • System 10 is a network-based system.
  • the network-based system may provide communication links between various devices and computers connected together within this environment.
  • the network-based system may include permanent connections, such as wire or fiber optic cables, or temporary connections made through telephone or wireless communications.
  • the network-based system may contain clients 11 , 12 , and 13 .
  • the clients may be personal or user computers and may be operated by end-users performing daily tasks.
  • Clients 11 , 12 , and 13 may access a database server 14 via switches 15 and 16 .
  • Clients 11 , 12 , and 13 may also access servers 17 and 18 via switches 15 and 16 .
  • Any system 10 may include any number and combination of clients, switches, and servers.
  • switches 15 and 16 are devices that filter and forward packets between network segments. Switches operate at the data link layer and sometimes the network layer and therefore support any packet protocol. Switches 15 and 16 may be used by clients 11 , 12 , and 13 to access database server 14 .
  • Database server 14 may be running UNIX operating system or any of its variants and is a data repository for information used by servers and clients within the network. Switches 15 and 16 may also be used by clients 11 , 12 , and 13 to access servers 17 and 18 .
  • Servers 17 and 18 may be running UNIX operating system or any of its variants and may also be running one or more processes to be used by clients 11 , 12 , and 13 . These processes may be applications or running programs.
  • HAL may be installed on servers 17 and 18 to control availability of the applications running on each server.
  • Twinituner a simplistic web-based wizard, may be used to install HAL on servers 17 and 18 .
  • Twinituner may be accessed via a CD or from a network server.
  • Twinituner may be run once to install HAL and then whenever necessary to reconfigure HAL.
  • the finite state table is a pluggable logic model that directs system roles. The user can also dry run or simulate the new configurations and continue to make changes until HAL operates as required.
  • Twinituner also allows the user to evaluate his/her configuration changes within the finite state table prior to deployment.
  • Twinituner may also be used to monitor deployed twinit processes (see below) and their associated HAL operations.
  • Twinituner is able to accommodate any suitable hardware or software configuration, or combination thereof.
  • HAL can be associated with a process or process-group, using HA property extensions to the standard UNIX init process spawner subsystem running on those servers.
  • twinit is used to implement such process specific, HA property extensions, so forming the association between the process and HAL.
  • HAL can be utilized to control the process or process-groups' availability in response to the failure of the system and/or the process or process-group.
  • the HAL application includes a finite state table for each process.
  • the finite state table allows the user to design the HAL logic for each individual process.
  • One example of configurations to the finite state table is shown in FIG. 3. This configuration utilizes HAL to minimize system outages. This configuration is suitable when it is not a problem to have more than one active primary application, but outages are to be reduced to a minimum.
  • Another configuration includes utilizing HAL to ensure that there is never more than one active application. This configuration is suitable when it is a problem to have more than one active primary application, but it is less of a problem to have windows of time with no active primary applications. Yet another configuration would be suitable when it is not a problem to have more than one active primary application, but it is not necessary to reduce outages to a minimum.
  • the configurations made to the finite state table are stored on each server running HAL.
  • FIG. 1 and FIG. 2 one embodiment of a method for providing a high availability application at low cost for a wide range of solution architectures is generally shown at numeral 20 .
  • a specific embodiment of the present invention is HA-lite (HAL).
  • twinituner a simplistic web-based wizard, may be run to install HAL, (Block 21 ).
  • HAL can be installed on any system running the UNIX operating system or any of its variants.
  • HAL may be installed on servers 17 and 18 of system 10 .
  • HAL Once HAL is installed, it must be configured.
  • the HAL logic may be designed for each process or process-group on which HAL is implemented using the finite state table, (Block 22 ).
  • a process-group is comprised of processes having common HAL property values, such as user-designated values ‘other’ and ‘port.’ All processes in a process-group will be controlled by a single HAL application.
  • Designing the HAL logic includes editing the finite state table. Designing the HAL logic can also include simulating the configuration changes to the finite state table on a server where HAL is installed and then evaluating the configuration changes to the finite state table. Twinituner can also be used to monitor deployed twinit processes and their associated HAL operations.
  • twinit may be used to implement HAL as a property of one or more of the processes running on servers 17 and 18 , (Block 23 ). Twinit enables HAL to become part of the settings of the process.
  • HAL After being installed, configured, and then associated with a process or process-group, HAL then is able to use the logic from the finite state table for each process or process-group to make each process or process-group highly available for system 10 , (Block 24 ).
  • one instance of an email application, A may be installed on server 17 and another instance of the same email application, B, may be installed on server 18 .
  • HAL may be installed as a property of applications A and B in order to make highly available the email application to clients 11 , 12 , and 13 .
  • chart 30 may represent a finite state table of a HAL application utilized to minimize outages of system 10 .
  • This configuration will ensure that the needed application, for example an email application, is running on at least one of the servers 17 or 18 . With this configuration, there may be times when the email application is running on both server 17 and server 18 at the same time.
  • Another embodiment may be configured to ensure that there are never times when more than one active email application is running at a time.
  • Finite state table 30 incorporates two servers, a first server 31 referred to as the ‘this’ server and a second server 32 referred to as the ‘other’ server.
  • ‘This’ server 31 may be in one of eight states. First, it may be in a primary role (P), able to ping a reference server (Ping Ref or PR), and healthy (H). Second, it may be in a primary role, able to ping a reference server, but unhealthy (!H). Third, it may be in a primary role, unable to ping a reference server (!PR), but healthy. Fourth, it may be in a primary role, unable to ping a reference server, and unhealthy.
  • S secondary role
  • it may be in a secondary role (S), able to ping a reference server, and healthy.
  • Sixth it may be in a secondary role, able to ping a reference server, but unhealthy.
  • Seventh it may be in a secondary role, unable to ping a reference server, but healthy.
  • Eighth it may be in a secondary role, unable to ping a reference server, and unhealthy.
  • ‘Other’ server 32 may also be in one of the eight states listed, or it may be in an unknown state (?).
  • the finite state table is configured to control what state ‘this’ server 31 will remain in or become in relation to the state of ‘other’ server 32 .
  • ‘this’ server 31 may be server 17 and ‘other’ server 32 may be server 18 . Both servers 17 and 18 may be running the same email application for use by clients 11 , 12 , and 13 .
  • ‘This’ server will maintain communication with ‘other’ server 32 to check the status of the ‘other’ server 32 .
  • Knowledge of the status of ‘other’ server 32 along with configurations in the finite state table, allow HAL to control the role of ‘this’ server 31 , and to ensure the high availability of the email application for clients 11 , 12 , and 13 .
  • the implementation of this communication can be achieved in any of several ways well known in the art. For example, the communication may be achieved using broadcasts, RPC handshaking, bespoke socket client-server software, and the like.
  • test conditions are used by the finite state table to help define the status of ‘this’ server 31 and ‘other’ server 32 .
  • One test condition used by the finite state table is ‘pinging a reference server.’
  • PR able to ping a reference server
  • !PR unable to ping a reference server
  • Health may represent some user-specified set of tests that return a Boolean, ‘healthy’ (H) or ‘not healthy’ (!H).
  • H healthy
  • !H not healthy
  • An example may be a check to see that certain processes are running, or that operating system capacities are not exceeded (e.g. disk partitions are not full and that paging space is not critically low).
  • this’ server 31 may be able to check the health of ‘other’ server 32 .
  • ‘this’ server 31 is primary (P), unable to ping a reference server (!PR), and unhealthy (!H).
  • ‘this’ server 31 obtains knowledge of ‘other’ server's state, which is secondary (S), able to ping a reference server (PR), and healthy (H). Configured to minimize outages, the finite state table will direct ‘this’ server 31 to become secondary, but ‘this’ server will wait to yield from primary to secondary until ‘other’ server 32 has taken over as primary (deferred-yield or DY), shown at 33 .
  • ‘this’ server 31 is secondary (S), able to ping a reference server (PR), and healthy (H).
  • S secondary
  • PR reference server
  • H healthy server
  • P primary
  • PR able to ping a reference server
  • H healthy
  • DT deferred-takeover
  • Another role is ‘?ip ⁇ ,’ where ‘this’ server will check the IP address of ‘other’ server, and if ‘this’ server's IP address is less than the IP address of ‘other’ server, ‘this’ server will become or remain secondary, else it will become primary.
  • Yet another role is ‘?ip>,’ where ‘this’ server will check the IP address of ‘other’ server, and if ‘this’ server's IP address is greater than the IP address of ‘other’ server, ‘this’ server will become or remain primary, else it will become or remain secondary.
  • SPICE Stay Primary if Communications Error’

Abstract

The invention provides a system and method for providing a high availability application at low cost for a wide range of solution architectures. A user runs a simplistic web-based wizard to install the high availability application. Then, a user designs the high availability application's logic for an individual process or process-group using a finite state table. Next, a standard UNIX init process spawner subsystem is extended to implement the high availability application as a property of a process. Finally, the logic from the finite state table is used to make each process or process-group highly available.

Description

    FIELD OF THE INVENTION
  • The invention relates, generally, to a technique for creating high-availability system solutions utilizing user criteria wherein said criteria includes pluggable finite state tables, fail safe monitoring processes and checking routines for said finite state tables. [0001]
  • BACKGROUND OF THE INVENTION
  • Commercial High Availability (HA) solutions conventionally provide an umbrella framework in which processes and other resources are controlled, and made highly available, across a range of systems that reside under the control of the umbrella (cluster). [0002]
  • Low-cost HA software packages generally do not meet the operating requirements or provide the flexibility required for many different solution architectures; making them unsuitable for all but a limited number of qualified situations. These limited situations include those where conditions and requirements match assumptions built into the software (including concurrency vs. outage, pre-emptive vs. wait'n'see, and fast-failover vs. resource depletion trade-off decisions). [0003]
  • High function HA software packages, by contrast, are typically able to meet stringent operating requirements. However, they usually are only available for a single vendor's platforms, mandate highly structured and complex clustered architectures, require redundant hardware adapters, and have purchase and maintenance costs that are inappropriate for many solutions. [0004]
  • Therefore, there is a need to provide an HA software solution that overcomes the aforementioned disadvantages. [0005]
  • SUMMARY OF THE INVENTION
  • One aspect of the present invention is a method of providing a high availability application at low cost for a wide range of solution architectures. A user runs a simplistic web-based wizard to install the high availability application. Then, a user designs the high availability application's logic for an individual process or process-group using a finite state table. Next, an extension to the standard UNIX init process spawner subsystem is used to implement the high availability application as a property of a process. Finally, the logic from the finite state table is used to make each process or process-group highly available. [0006]
  • Another aspect of the present invention is a system for providing a high availability application at low cost for a wide range of solution architectures, comprising means for running a simplistic web-based wizard to install the high availability application and means for designing the high availability application logic for an individual process or process-group using a finite state table. The system also includes means for extending the standard UNIX init process spawner subsystem to implement the high availability application as a property of a process and means for using the logic from the finite state table to make each process or process-group highly available. [0007]
  • Another aspect of the present invention is a computer usable medium storing a program for providing a high availability application at low cost for a wide range of solution architectures, comprising computer readable code for running a simplistic web-based wizard to install the high availability application and means for designing the high availability application logic for an individual process or process-group using a finite state table. The medium also includes computer readable code for extending a standard UNIX init process spawner subsystem to implement the high availability application as a property of a process and computer readable code for using the logic from the finite state table to make each process or process-group highly available. [0008]
  • The foregoing and other features and advantages of the invention will become further apparent from the following detailed description of the presently preferred embodiment, read in conjunction with the accompanying drawings. The detailed description and drawings are merely illustrative of the invention rather than limiting, the scope of the invention being defined by the appended claims and equivalents thereof.[0009]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a diagram illustrating one embodiment of a system for providing a high availability application at low cost for a wide range of solution architectures in accordance with the present invention; [0010]
  • FIG. 2 is a flow chart illustrating one embodiment of a method for providing a high availability application at low cost for a wide range of solution architectures for the system in FIG. 1, in accordance with the present invention; and [0011]
  • FIG. 3 is a chart representation of one embodiment of a design for a finite state table for the system of FIG. 1, in accordance with the present invention.[0012]
  • DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EMBODIMENTS
  • In FIG. 1, a [0013] system 10 is illustrated in accordance with one embodiment of the present invention. In one embodiment, system 10 may be implemented as a system running HA-lite (HAL). HAL is one embodiment of a high availability software that overcomes the aforementioned disadvantages of other high availability software applications. High availability software applications provide a framework in which processes and other resources are controlled, and made highly available.
  • FIG. 1 represents a typical, client-server architecture that HAL may be capable of supporting. [0014] System 10 is a network-based system. The network-based system may provide communication links between various devices and computers connected together within this environment. The network-based system may include permanent connections, such as wire or fiber optic cables, or temporary connections made through telephone or wireless communications.
  • In this embodiment, the network-based system may contain [0015] clients 11, 12, and 13. The clients may be personal or user computers and may be operated by end-users performing daily tasks. Clients 11, 12, and 13 may access a database server 14 via switches 15 and 16. Clients 11, 12, and 13 may also access servers 17 and 18 via switches 15 and 16. One of ordinary skill in the art will recognize that any system 10 may include any number and combination of clients, switches, and servers.
  • In [0016] system 10, switches 15 and 16 are devices that filter and forward packets between network segments. Switches operate at the data link layer and sometimes the network layer and therefore support any packet protocol. Switches 15 and 16 may be used by clients 11, 12, and 13 to access database server 14. Database server 14 may be running UNIX operating system or any of its variants and is a data repository for information used by servers and clients within the network. Switches 15 and 16 may also be used by clients 11, 12, and 13 to access servers 17 and 18. Servers 17 and 18 may be running UNIX operating system or any of its variants and may also be running one or more processes to be used by clients 11, 12, and 13. These processes may be applications or running programs.
  • HAL may be installed on [0017] servers 17 and 18 to control availability of the applications running on each server. Twinituner, a simplistic web-based wizard, may be used to install HAL on servers 17 and 18. Twinituner may be accessed via a CD or from a network server. Twinituner may be run once to install HAL and then whenever necessary to reconfigure HAL. By running twinituner, the user will be able to edit the finite state table. The finite state table is a pluggable logic model that directs system roles. The user can also dry run or simulate the new configurations and continue to make changes until HAL operates as required. Twinituner also allows the user to evaluate his/her configuration changes within the finite state table prior to deployment. Twinituner may also be used to monitor deployed twinit processes (see below) and their associated HAL operations. Twinituner is able to accommodate any suitable hardware or software configuration, or combination thereof.
  • Once HAL is installed and configured on [0018] servers 17 and 18, HAL can be associated with a process or process-group, using HA property extensions to the standard UNIX init process spawner subsystem running on those servers. In one embodiment, twinit is used to implement such process specific, HA property extensions, so forming the association between the process and HAL. After being installed, configured, and then associated with a process or process-group, HAL can be utilized to control the process or process-groups' availability in response to the failure of the system and/or the process or process-group.
  • The HAL application includes a finite state table for each process. The finite state table allows the user to design the HAL logic for each individual process. One example of configurations to the finite state table is shown in FIG. 3. This configuration utilizes HAL to minimize system outages. This configuration is suitable when it is not a problem to have more than one active primary application, but outages are to be reduced to a minimum. Another configuration includes utilizing HAL to ensure that there is never more than one active application. This configuration is suitable when it is a problem to have more than one active primary application, but it is less of a problem to have windows of time with no active primary applications. Yet another configuration would be suitable when it is not a problem to have more than one active primary application, but it is not necessary to reduce outages to a minimum. The configurations made to the finite state table are stored on each server running HAL. [0019]
  • Referring now to FIG. 1 and FIG. 2, one embodiment of a method for providing a high availability application at low cost for a wide range of solution architectures is generally shown at [0020] numeral 20. A specific embodiment of the present invention is HA-lite (HAL).
  • In one embodiment, twinituner, a simplistic web-based wizard, may be run to install HAL, (Block [0021] 21). HAL can be installed on any system running the UNIX operating system or any of its variants. For example, HAL may be installed on servers 17 and 18 of system 10.
  • Once HAL is installed, it must be configured. The HAL logic may be designed for each process or process-group on which HAL is implemented using the finite state table, (Block [0022] 22). A process-group is comprised of processes having common HAL property values, such as user-designated values ‘other’ and ‘port.’ All processes in a process-group will be controlled by a single HAL application.
  • Designing the HAL logic includes editing the finite state table. Designing the HAL logic can also include simulating the configuration changes to the finite state table on a server where HAL is installed and then evaluating the configuration changes to the finite state table. Twinituner can also be used to monitor deployed twinit processes and their associated HAL operations. [0023]
  • Once HAL is installed and configured, twinit may be used to implement HAL as a property of one or more of the processes running on [0024] servers 17 and 18, (Block 23). Twinit enables HAL to become part of the settings of the process.
  • After being installed, configured, and then associated with a process or process-group, HAL then is able to use the logic from the finite state table for each process or process-group to make each process or process-group highly available for [0025] system 10, (Block 24). For example, one instance of an email application, A, may be installed on server 17 and another instance of the same email application, B, may be installed on server 18. HAL may be installed as a property of applications A and B in order to make highly available the email application to clients 11, 12, and 13.
  • Referring now to FIG. 3, a chart representation of one embodiment of a design for a finite state table for the system of FIG. 1, is shown generally at [0026] 30. In one example, chart 30 may represent a finite state table of a HAL application utilized to minimize outages of system 10. This configuration will ensure that the needed application, for example an email application, is running on at least one of the servers 17 or 18. With this configuration, there may be times when the email application is running on both server 17 and server 18 at the same time. Another embodiment may be configured to ensure that there are never times when more than one active email application is running at a time.
  • Finite state table [0027] 30 incorporates two servers, a first server 31 referred to as the ‘this’ server and a second server 32 referred to as the ‘other’ server. ‘This’ server 31 may be in one of eight states. First, it may be in a primary role (P), able to ping a reference server (Ping Ref or PR), and healthy (H). Second, it may be in a primary role, able to ping a reference server, but unhealthy (!H). Third, it may be in a primary role, unable to ping a reference server (!PR), but healthy. Fourth, it may be in a primary role, unable to ping a reference server, and unhealthy. Fifth, it may be in a secondary role (S), able to ping a reference server, and healthy. Sixth, it may be in a secondary role, able to ping a reference server, but unhealthy. Seventh, it may be in a secondary role, unable to ping a reference server, but healthy. Eighth, it may be in a secondary role, unable to ping a reference server, and unhealthy.
  • ‘Other’ [0028] server 32 may also be in one of the eight states listed, or it may be in an unknown state (?). The finite state table is configured to control what state ‘this’ server 31 will remain in or become in relation to the state of ‘other’ server 32. In our example, ‘this’ server 31 may be server 17 and ‘other’ server 32 may be server 18. Both servers 17 and 18 may be running the same email application for use by clients 11, 12, and 13.
  • ‘This’ server will maintain communication with ‘other’ [0029] server 32 to check the status of the ‘other’ server 32. Knowledge of the status of ‘other’ server 32, along with configurations in the finite state table, allow HAL to control the role of ‘this’ server 31, and to ensure the high availability of the email application for clients 11, 12, and 13. The implementation of this communication can be achieved in any of several ways well known in the art. For example, the communication may be achieved using broadcasts, RPC handshaking, bespoke socket client-server software, and the like.
  • Many test conditions are used by the finite state table to help define the status of ‘this’ [0030] server 31 and ‘other’ server 32. One test condition used by the finite state table is ‘pinging a reference server.’ By pinging a reference server, located within system 30, different types of system failures on ‘this’ server 31 and ‘other’ server 32 may be differentiated. By adding either ‘able to ping a reference server’ (PR) or ‘unable to ping a reference server’ (!PR), a better informed guess can be made as to the cause of the system failure and therefore a better decision can be made as to which role ‘this’ server 31 should adopt.
  • An additional test condition used by the finite state table is health. Health may represent some user-specified set of tests that return a Boolean, ‘healthy’ (H) or ‘not healthy’ (!H). An example may be a check to see that certain processes are running, or that operating system capacities are not exceeded (e.g. disk partitions are not full and that paging space is not critically low). To facilitate dependence, ‘this’ [0031] server 31 may be able to check the health of ‘other’ server 32.
  • In one example of a finite state table design illustrated in [0032] chart 30, ‘this’ server 31 is primary (P), unable to ping a reference server (!PR), and unhealthy (!H). By communicating with ‘other’ server 32, ‘this’ server 31 obtains knowledge of ‘other’ server's state, which is secondary (S), able to ping a reference server (PR), and healthy (H). Configured to minimize outages, the finite state table will direct ‘this’ server 31 to become secondary, but ‘this’ server will wait to yield from primary to secondary until ‘other’ server 32 has taken over as primary (deferred-yield or DY), shown at 33.
  • In another example of the finite state table design illustrated in [0033] chart 30, ‘this’ server 31 is secondary (S), able to ping a reference server (PR), and healthy (H). By communicating with ‘other’ server 32, ‘this’ server 31 obtains knowledge of ‘other’ server's state, which is primary (P), able to ping a reference server (PR), and healthy (H). Configured to minimize outages, the finite state table will direct ‘this’ server 31 to become secondary (S), shown at 34.
  • Other examples of roles used by the finite state table include deferred-takeover (DT), which is the tactic of deferring change from secondary to primary until ‘other’ server has yielded from primary to secondary. Another role is ‘?ip<,’ where ‘this’ server will check the IP address of ‘other’ server, and if ‘this’ server's IP address is less than the IP address of ‘other’ server, ‘this’ server will become or remain secondary, else it will become primary. Yet another role is ‘?ip>,’ where ‘this’ server will check the IP address of ‘other’ server, and if ‘this’ server's IP address is greater than the IP address of ‘other’ server, ‘this’ server will become or remain primary, else it will become or remain secondary. Lastly, another role is ‘Stay Primary if Communications Error’ (SPICE), where ‘this’ server will remain primary when the role of ‘other’ server is unknown and ‘this’ server is not able to ping the reference server. [0034]
  • While the embodiments of the present invention disclosed herein are presently considered to be preferred, various changes and modifications can be made without departing from the spirit and scope of the invention. The scope of the invention is indicated in the appended claims, and all changes that come within the meaning and range of equivalents are intended to be embraced therein. [0035]

Claims (12)

We claim:
1. A method of providing a high availability application for use with a plurality of solution architectures, the method comprising:
providing a finite state table as part of the high availability application; and
configuring the finite state table based on one of the plurality of solution architectures.
2. The method of claim 1 further comprising:
editing the finite state table.
3. The method of claim 1 further comprising:
simulating configuration changes of the finite state table; and
evaluating configuration changes of the finite state table.
4. The method of claim 1 wherein the finite state table is a pluggable logic model that directs system roles.
5. A method of providing a high availability application for use with a plurality of solution architectures, the method comprising:
implementing the high availability application as a property of at least one process or at least one process group; and
using logic from a finite state table to make the process or the process group highly available.
6. The method of claim 5 further comprising:
monitoring an extended UNIX init process spawner subsystem processes and associated high availability application operations.
7. A computer usable medium containing computer readable code for providing a high availability application for use with a plurality of solution architectures, the medium comprising:
computer readable code for providing a finite state table as part of the high availability application; and
computer readable code for configuring the finite state table based on one of the plurality of solution architectures.
8. The medium of claim 7 further comprising:
computer readable code for editing the finite state table.
9. The medium of claim 7 further comprising:
computer readable code for simulating configuration changes of the finite state table; and
computer readable code for evaluating configuration changes of the finite state table.
10. The medium of claim 7 wherein the computer readable code for the finite state table consists of computer readable code that directs system roles.
11. A computer usable medium containing computer readable code for providing a high availability application for use with a plurality of solution architectures, the medium comprising:
computer readable code for implementing the high availability application as a property of at least one process or at least one process group; and
computer readable code for using logic from a finite state table to make the process or the process group highly available.
12. The medium of claim 11 further comprising:
computer readable code for monitoring an extended UNIX init process spawner subsystem processes and their associated high availability application operations.
US10/216,104 2002-08-08 2002-08-08 Method and system for improving the availability of software processes utilizing configurable finite state tables Abandoned US20040054943A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US10/216,104 US20040054943A1 (en) 2002-08-08 2002-08-08 Method and system for improving the availability of software processes utilizing configurable finite state tables
US11/845,545 US7779129B2 (en) 2002-08-08 2007-08-27 Method and system for improving the availability of software processes utilizing configurable finite state tables

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/216,104 US20040054943A1 (en) 2002-08-08 2002-08-08 Method and system for improving the availability of software processes utilizing configurable finite state tables

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/845,545 Division US7779129B2 (en) 2002-08-08 2007-08-27 Method and system for improving the availability of software processes utilizing configurable finite state tables

Publications (1)

Publication Number Publication Date
US20040054943A1 true US20040054943A1 (en) 2004-03-18

Family

ID=31990307

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/216,104 Abandoned US20040054943A1 (en) 2002-08-08 2002-08-08 Method and system for improving the availability of software processes utilizing configurable finite state tables
US11/845,545 Expired - Fee Related US7779129B2 (en) 2002-08-08 2007-08-27 Method and system for improving the availability of software processes utilizing configurable finite state tables

Family Applications After (1)

Application Number Title Priority Date Filing Date
US11/845,545 Expired - Fee Related US7779129B2 (en) 2002-08-08 2007-08-27 Method and system for improving the availability of software processes utilizing configurable finite state tables

Country Status (1)

Country Link
US (2) US20040054943A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060282831A1 (en) * 2005-05-31 2006-12-14 Maria Toeroe Method and hardware node for customized upgrade control
US20080168358A1 (en) * 2007-01-08 2008-07-10 Microsoft Corporation Single-page web signup facility
US8688787B1 (en) * 2002-04-26 2014-04-01 Zeronines Technology, Inc. System, method and apparatus for data processing and storage to provide continuous e-mail operations independent of device failure or disaster

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860196A (en) * 1986-12-01 1989-08-22 Siemens Aktiengesellschaft High-availability computer system with a support logic for a warm start
US4975831A (en) * 1988-05-09 1990-12-04 Intel Corporation High-availability computer system with a predefinable configuration of the modules
US5063523A (en) * 1989-11-16 1991-11-05 Racal Data Communications Inc. Network management system with event rule handling
US5278390A (en) * 1993-03-18 1994-01-11 The Lincoln Electric Company System and method for controlling a welding process for an arc welder
US5544077A (en) * 1994-01-19 1996-08-06 International Business Machines Corporation High availability data processing system and method using finite state machines
US5644720A (en) * 1995-07-31 1997-07-01 West Publishing Company Interprocess communications interface for managing transaction requests
US5828847A (en) * 1996-04-19 1998-10-27 Storage Technology Corporation Dynamic server switching for maximum server availability and load balancing
US6134673A (en) * 1997-05-13 2000-10-17 Micron Electronics, Inc. Method for clustering software applications
US20010047400A1 (en) * 2000-03-03 2001-11-29 Coates Joshua L. Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US20020095524A1 (en) * 2000-06-07 2002-07-18 Sanghvi Ashvinkumar J. Method and apparatus for applying policies
US20020107966A1 (en) * 2001-02-06 2002-08-08 Jacques Baudot Method and system for maintaining connections in a network
US20030126473A1 (en) * 2001-07-30 2003-07-03 Maciorowski David R. Computer system with multiple backup management processors for handling embedded processor failure
US6948088B1 (en) * 2001-06-13 2005-09-20 Cisco Technology, Inc. Methods and apparatus for efficient transaction processing on redundant systems
US6963995B2 (en) * 2002-04-24 2005-11-08 Mci, Inc. Network restoration using refreshed switch state tables

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2001100A (en) * 1934-05-03 1935-05-14 Kaplan Alexander Spool holder
US6249801B1 (en) * 1998-07-15 2001-06-19 Radware Ltd. Load balancing
US7299294B1 (en) * 1999-11-10 2007-11-20 Emc Corporation Distributed traffic controller for network data
US6594786B1 (en) * 2000-01-31 2003-07-15 Hewlett-Packard Development Company, Lp Fault tolerant high availability meter
US6732186B1 (en) * 2000-06-02 2004-05-04 Sun Microsystems, Inc. High availability networking with quad trunking failover
US6772226B1 (en) * 2000-08-15 2004-08-03 Avaya Technology Corp. VPN device clustering using a network flow switch and a different mac address for each VPN device in the cluster
US20020129146A1 (en) * 2001-02-06 2002-09-12 Eyal Aronoff Highly available database clusters that move client connections between hosts
WO2002079905A2 (en) * 2001-04-02 2002-10-10 Akamai Technologies, Inc. Scalable, high performance and highly available distributed storage system for internet content
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
US7404000B2 (en) * 2001-09-28 2008-07-22 Emc Corporation Protocol translation in a storage system
US7421509B2 (en) * 2001-09-28 2008-09-02 Emc Corporation Enforcing quality of service in a storage network
US7035858B2 (en) * 2002-04-29 2006-04-25 Sun Microsystems, Inc. System and method dynamic cluster membership in a distributed data system

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860196A (en) * 1986-12-01 1989-08-22 Siemens Aktiengesellschaft High-availability computer system with a support logic for a warm start
US4975831A (en) * 1988-05-09 1990-12-04 Intel Corporation High-availability computer system with a predefinable configuration of the modules
US5063523A (en) * 1989-11-16 1991-11-05 Racal Data Communications Inc. Network management system with event rule handling
US5278390A (en) * 1993-03-18 1994-01-11 The Lincoln Electric Company System and method for controlling a welding process for an arc welder
US5544077A (en) * 1994-01-19 1996-08-06 International Business Machines Corporation High availability data processing system and method using finite state machines
US5644720A (en) * 1995-07-31 1997-07-01 West Publishing Company Interprocess communications interface for managing transaction requests
US5828847A (en) * 1996-04-19 1998-10-27 Storage Technology Corporation Dynamic server switching for maximum server availability and load balancing
US6134673A (en) * 1997-05-13 2000-10-17 Micron Electronics, Inc. Method for clustering software applications
US20010047400A1 (en) * 2000-03-03 2001-11-29 Coates Joshua L. Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US20020095524A1 (en) * 2000-06-07 2002-07-18 Sanghvi Ashvinkumar J. Method and apparatus for applying policies
US20020107966A1 (en) * 2001-02-06 2002-08-08 Jacques Baudot Method and system for maintaining connections in a network
US6948088B1 (en) * 2001-06-13 2005-09-20 Cisco Technology, Inc. Methods and apparatus for efficient transaction processing on redundant systems
US20030126473A1 (en) * 2001-07-30 2003-07-03 Maciorowski David R. Computer system with multiple backup management processors for handling embedded processor failure
US6963995B2 (en) * 2002-04-24 2005-11-08 Mci, Inc. Network restoration using refreshed switch state tables

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8688787B1 (en) * 2002-04-26 2014-04-01 Zeronines Technology, Inc. System, method and apparatus for data processing and storage to provide continuous e-mail operations independent of device failure or disaster
US20060282831A1 (en) * 2005-05-31 2006-12-14 Maria Toeroe Method and hardware node for customized upgrade control
US20080168358A1 (en) * 2007-01-08 2008-07-10 Microsoft Corporation Single-page web signup facility

Also Published As

Publication number Publication date
US7779129B2 (en) 2010-08-17
US20070294573A1 (en) 2007-12-20

Similar Documents

Publication Publication Date Title
US7171654B2 (en) System specification language for resource management architecture and corresponding programs therefore
US20020178262A1 (en) System and method for dynamic load balancing
US6671746B1 (en) Execution of application process using registry having binding methods
US7543305B2 (en) Selective event registration
US20030084088A1 (en) Dynamic allocation of processing tasks using variable performance hardware platforms
US20080183876A1 (en) Method and system for load balancing
GB2407887A (en) Automatically modifying fail-over configuration of back-up devices
WO2006054573A1 (en) Information processing device, program thereof, modular type system operation management system, and component selection method
US20020147823A1 (en) Computer network system
AU2001281598A1 (en) A network component management system
US20020161902A1 (en) Allocating computer resources for efficient use by a program
US7779129B2 (en) Method and system for improving the availability of software processes utilizing configurable finite state tables
CN111404757A (en) Cloud-based cross-network application integration system
Vallath Oracle real application clusters
US20060230098A1 (en) Routing requests to destination application server partitions via universal partition contexts
US20030023810A1 (en) Method and apparatus for validating and ranking disk units for switching
CN100544369C (en) A kind of message based distributed system and method for communicating therein
CN115225642A (en) Elastic load balancing method and system of super-fusion system
US20040049516A1 (en) Computer system using a queuing system and method for managing a queue and heterogeneous data structures
US11010349B2 (en) File system with distributed entity state
EP1296482A2 (en) A system and method for managing one or more domains
CN110389821A (en) More account processing methods, processing unit, application program and electronic device
US11782490B2 (en) Software-defined fail-safe power draw control for rack power distribution units
KR102426132B1 (en) Apparatus and method for containers arrangement in cloud computing
CN117008951A (en) Node debugging method, device and storage medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HALL, ADRIAN R.;FELLENSTEIN, CRAIG W.;BERTHAUD, JEAN-MARC;REEL/FRAME:013197/0232;SIGNING DATES FROM 20020729 TO 20020805

STCB Information on status: application discontinuation

Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION