# Linux-HA Phase I Requirements

This document describes a set of general Linux-HA requirements which have been presented to the list, and no objections were made. Of course, it would have been nice to have had a good discussion, but I take silence to mean assent :-)

## Linux-HA Phase I General Goals

- Simple
- Reliable
- Easy to configure
- Easy to test
- Easy to monitor
- Redundant hardware and software are verified for working condition

## Linux-HA Phase I Requirements

The short-term goal of Phase I is to provide a more realistic demonstration of Linux-HA, in a form that will actually be usable to a certain set of customers (users) in a production sense.

This demonstration is focused on providing High-Availability web service. The rationale for providing web service is simple: It is well-understood, and Linux has a significant presence in the web server market. This will provide more initial users and testers than most other applications.

The following minimal requirements on the web service are considered sufficient for this demonstration:

- An active/standby methodology is acceptable. Load sharing need not be explicitly supported
- Data on standby nodes must be continually replicated from their paired active nodes over dedicated LANs. I am referring specifically to application data, not cluster config data.

- Comment: It is expected that we will use "poor man's replication" between the active and standby nodes

- IP address takeover between active and standby hosts. Ability to start and stop applications as IP addresses move around the cluster.
- Basic cluster monitoring capabilities via /proc-like interface
- Simple configuration and installation documentation
- Basic support for either resource groups or dependencies

## Restrictions Allowed for Demonstration

The following restrictions are considered acceptable for the demonstration.

- It is not necessary to provide load sharing between members of the cluster (An active/standby methodology is acceptable)
- A single active/standby pair is sufficient at the beginning
- No application level notification of cluster transitions need be provided (though see the stop/start requirement above)
- No hardware diagnostics need be provided

## Post-Demonstration Requirement Candidates

After these demonstration requirements have been met, it is expected that the following capabilities will be added (not listed in priority order):

- Integration of hardware and software diagnostics into the architecture
- Support for in-node IP interface failover (failing between NICs within a single host)
- Application notification of cluster transitions (support for arbitrary application failover)
- Plug-in modules interface available for cluster management

- {allowing support for: active/standby, n+1, load sharing, etc.}

- Cluster management uses diagnostic information in failover strategy
- Arbitrary number of nodes in cluster.
- Multiple pairs of active/standby servers in the cluster
- Easily configured support for common servers like these: ftp, smtp, pop3, imap, DNS, others (?)
This is intended to be something more sophisticated than changing run levels. Changing run levels only supports the active/standby model. Note that these kinds of services may be started and stopped with /etc/rc.d/init.d scripts, but will not likely be tied to run levels.
- Load sharing between the active/replicator servers via NFS (?)
- Support for other replication configurations. For example:

- Shared SCSI
- GFS
- User-defined replication methods

- Sophisticated, cool GUI monitoring capabilities
- Cool GUI configuration tools
- Other cool and feasible things such as people are moved to do them :-)
- I have a bias against making the customer to write shell scripts to move resources around for "normal" cases. This is in harmony with "easy to configure" and Cool GUI configuration tools.