LAN Mirroring technologies are an important HA technology now, and will remain a key ingredient in many inexpensive HA systems. They allow two machines to mirror a filesystem between themselves with only two NICs and a crossover cable - yielding a system with no SPOFs for a very low price.
DRBD: system by Philipp Reisner and LarsEllenberg for mirroring filesystems across the LAN. It is RAID and LAN aware with a quick sync option for bringing the mirror up to date quickly. Recent versions even have a very fast full-sync option. This is the general replication technology which is most commonly used by members of the Linux-HA community, because it provides a complete solution, is sensitive to data integrity issues, and integrates easily with Linux-HA.
Enhanced Network Block Device project by P.T. Breuer. ENBD is a project to make the NBD work right. It doesn't combine the NBD and RAID together like DRBD does.
Linux Journal article by P.T. Breuer, A. Marin Lopez and Artuo Garcia Ares on The Network Block Device A network block device (NBD) driver makes a remote resource look like a local device in Linux, allowing a cheap and safe real-time mirror to be constructed.
NBD server software - the complement to the in-kernel NBD driver.
Sistina's LVM: Linux Volume Manager. LVM allows the growth and shrinkage of partitions, as one would expect, but also allows the creation of snapshot partitions, enabling consistent online backups or recovery in filesystems and database systems.
IBM's EVMS Enterprise volume management system. The EVMS Project has the goal of providing unparalleled flexibility and extensibility in managing storage. It represents a new approach to logical volume management, as the architecture introduces a plug-in model that allows for easy expansion or customization of various levels of volume management. See information about the combined setup of Heartbeat v2 on the Xensource Wiki page on a SAN based EVMS-HA Xen solution
Three types of filesystem technologies are important for Linux-HA: Journalling filesystems, Cluster filesystems and Mirror filesystems. Journalling filesystems allow takeover of shared/mirrored filesystems to occur rapidly in cases of failover. Cluster filesystems allow disks to be shared read-write between all members of a cluster simultaneously - which is highly desirable for many parallel applications. Mirror file system can write the same file to two or more different systems on the network in real time, breaks through the barrier that formally confined computer system to the single standalone resources model and enables single system to be integrated into the Cloud or geographically dispersed network cluster systems.
Reiserfs: A tree-structured filesystem which journals updates. It is available with most 2.4 and later kernels.
Ext3: Stephen Tweedie's journalling version of the ext2 filesystem. It is available with most 2.4 and later kernels.
JFS: IBM's journalled filesystem technology. It is available with many Linux distributions.
XFS: SGI's journalled filesystem technology.
LinLogFS: A log structured filesystem for Linux
Intermezzo: A distributed file system which lets systems replicate directory trees. It is a standard part of 2.4 and later kernels. It isn't precisely what most people would call a cluster filesystem, but it's related.
Lustre: Lustre is a novel storage and file system architecture and implementation which does not follow the block device paradigm. The central target in this project is the development of a next-generation cluster file system which can serve clusters with 10,000's of nodes, petabytes of storage, move 100's of GB/sec. Lustre is in trial production in several sites across the world.
GFS: The Global Filesystem - fault tolerant, distributed, very cool, etc. GFS is both a cluster filesystem and a journalled filesystem.
The CODA distributed, fault-tolerant filesystem
Oracle Cluster File System (OCFS): enterprise-class open-source cluster file system
MFS: All conventional file systems developed until now, like ext*, ufs, gfs and NFS, are only able to write the file on a single standalone system. MFS is the only file system that can write the file on two geographically-dispersed systems simultaneously and bidirectionally. When a file is created or updated on one system, the changed portion of the file is replicated to the same copy on another remote system in real time. Both copies of the same file are live and can be used immediately. MFS is a new solution for HA, load balancing, Disaster Prevention (not just DR), online file backup and Cloud Computing that built on top of local file systems and NFS. The new technology enables many good things for the IT world and Computer Science.
Below is a list of projects with complementary goals to those of the Linux-HA project.
The Linux Virtual Server project (LVS includes Network Address Translation, tunneling, and direct routing). LVS recommends using the Linux-HA "heartbeat" code. There is a document describing how to configure them together.
UltraMonkey: LVS and Heartbeat and a GUI put together with nice documentation. Created and supported by long-time Linux-HA contributor horms.
HA-OSCAR High Availability Open Source Cluster Application Resources is an open source project aims to provide a combined power of High Availability and Performance Computing solution. Our goal is to enhance a Beowulf cluster system for mission critical grade applications. To achieve high availability, component redundancy is adopted in HA OSCAR cluster to eliminate this single point of failure. HA-OSCAR incorporates a self-healing mechanism; failure detection & recovery, automatic failover and fail-back. (HA-OSCAR uses Linux-HA technology)
High Availability RAID from Software RAID HOWTO
The Linux Scalability Project. The primary goal of this research is to improve the scalability and robustness of the Linux operating system to support greater network server workloads more reliably. We are specifically interested in single-system scalability, performance, and reliability of network server infrastructure products running on Linux, such as LDAP directory servers, IMAP electronic mail servers, and web servers, among others.
OSCAR Open Source Cluster Application Resources. The OSCAR is a snapshot of the best known methods for building, programming, and using clusters. It will hopefully bring some form of uniformity to clusters, foster commercial versions of the cluster software, and make clusters more broadly acceptable.
The Linux/IR project
Linux Enterprise Computing overview
IP Channel Bonding for Linux. Channel bonding is the technique of using more than one ethernet link to increase bandwidth and availability on IP networks. See IpFailoverChannelBonding for how to use this with Linux-HA.
lm-sensors: hardware health monitoring project.
safte-monitor. SAFTE stands for SCSI Accessed Fault-Tolerant Enclosure device. If you have a SAF-TE compatible storage enclosure, safte-monitor will let read the enclosure configuration fetching things such as the number of fans, power supplies, slots, and also the mapping of slots to scsi ids. safte-monitor reads disk enclosure status information from SAF-TE capable enclosures (SCSI Accessible Fault Tolerant Enclosures). SAF-TE is a component of SES (SCSI Enclosure Services) which is common on most SCSI disk enclosures these days. saftemon can monitor multiple SAF-TE devices and will automatically probe and detect them. The information retreived includes power supply and fan status, temperature, audible alarm, drive faults, array critical / failed / rebuilding state and door lock status. saftemon logs changes in the status of these enclosure elements to syslog and can optionally execute an alert help program with details of the component failure. This could send a pager message for example. Temperature alert limits also be set.
The SAF-TE spec is on the web and an addendum is at this location. More information about the specification here.
Linux RAS project. Ambitious. Mailing list information can be found on the web.
Nmon graphs lots of things for Linux and AIX machines.
Linux RAM ECC monitoring with a corresponding Mailing list.
Chris Brady's x86 Memory Testing program (memtest86). This ships with newer versions of SuSE Linux.
Mon: service monitoring daemon.
HAPM: another service monitoring daemon. High Availability Port Monitor (HAPM) is a local port status check. It is a simple, light and fast daemon to check TCP/UDP ports. If one or more monitored ports (per IP) downs then the primary Heartbeat will be killed by HAPM.
OpenNMS is an open-source project dedicated to the creation of an enterprise grade network management platform.
Spumoni enables any program which can be queried via local commands to be health-checked via SNMP. This allows admins to use enterprise-level monitoring programs such as OpenNMS, Tivoli, OpenView, MRTG and RRDTool for even non-SNMP-enabled applications.
Monit: Monit is a utility for monitoring daemons or similar programs running on a Unix system. It will start specified programs if they are not running and restart programs not responding.
VACM: VA Cluster Manager. VACM provides cluster monitoring and control at a very fundamental level.
PIKT: Problem Informant Killer Tool
NOCOL/SNIPS - system and network monitoring tool
Big Brother - Systems and Network monitor. It monitor both network and system information.
Big Sister - a real time system and network health monitoring application
Nagios - Network monitor (formerly Netsaint)
MAT - Monitoring and Administration Tool. MAT is an easy to use network enabled UNIX configuration and monitoring tool. It provides an integrated tool for many common system administration tasks, including Backups, and Replication
WebRAT - a web based administration tool, to administer several nodes on a network, from a central host (administration server). The main purpose of WebRAT is to administer a network with many nodes, remotely. The more the nodes on the network, the more WebRAT will seem to be irreplaceable.
xCAT (Extreme Cluster Administration Toolkit) - A tool kit that can be used for the deployment and administration of (primarily high-performance) Linux clusters.
dwatch - daemon watching program -- last updated in 2001 -- appears to be dead
The Transis group communications system - providing efficient group multicast for high-availability applications.
SCTP Stream Control Transmission Protocol (RFC 2960). From Joe Grimm: The HA features of SCTP revolve around using multi-homed hosts to provide failover paths implemented at the transport layer, essentially this becomes a transparent issue to SCTP applications. This is just one of the features in SCTP but one network standard being driving by the Carrier Grade community to provide 5 nines networking on top of the Internet. The linux kernel project to implement this can be found at: http://www.sf.net/projects/lksctp.
The IETF's Reliable Server Pools working group. The purpose of the working group is to develop an architecture and protocols for the management and operation of server pools supporting highly reliable applications, and for client access mechanisms to a server pool
Werner Almesberger's TCP Connection Passing project. tcpcp is a mechanism that allows cooperating applications to pass ownership of TCP connection endpoints from one Linux host to another one. Such functionality should be useful in load-balancing and failover applications. tcpcp can be used between hosts using different architectures and does not need the other endpoint of the connection to cooperate (or even to know what's going on).
Extended Transmission Control Protocol (ETCP). ETCP helps within migration clusters because by using it, it becomes possible to have a network connection follow a process, instead of tcp IO being relayed through the original node. Given application state synchronization, this technique could also useful for failover clusters as well.
UCARP - Common Address Redundancy Protocol (CARP) for Unix. UCARP allows a couple of hosts to share common virtual IP addresses in order to provide automatic failover.
VRRP (Virtual Router Redundancy Protocol) is a redundancy protocol designed to increase the availability of the default gateway.
Beowulf (Linux supercomputing clusters) home page
OSCAR Open Source Cluster Application Resources. The OSCAR is a snapshot of the best known methods for building, programming, and using clusters. It will hopefully bring some form of uniformity to clusters, foster commercial versions of the cluster software, and make clusters more broadly acceptable.
HA-OSCAR High Availability Open Source Cluster Application Resources is an open source project aims to provide a combined power of High Availability and Performance Computing solution. Our goal is to enhance a Beowulf cluster system for mission critical grade applications. To achieve high availability, component redundancy is adopted in HA OSCAR cluster to eliminate this single point of failure. HA-OSCAR incorporates a self-healing mechanism; failure detection & recovery, automatic failover and fail-back. (HA-OSCAR builds on Linux-HA).
Scyld Computing. The original Beowulf team providing second generation Beowulf Clustering.
OpenMosix (scalable computing clusters, including process migration). Unfortunately, it's not HA :-(.
Amata high-availability for Beowulf clusters.
Grid Engine. The Grid Engine project provides distributed resource management software for wide ranging requirements from compute farms to grid computing.
Joe Greenseid's excellent Linux Clustering Information Center
IEEE Task Force On Cluster Computing High Availability Information Page
High Performance Cluster Computing resource page. High Performance Cluster Computing is a book edited by Dr. Rajkumar Buyya of Monash University's School of Computer Science and Software Engineering.
Linux Cluster Project a community project sponsored by Red Hat. Includes a DLM, a clustered file system (GFS) and a High-Availability component.
Keepalived: keepalive facility for LVS. The main goal of the keepalived project is to add a strong and robust keepalive facility to the Linux Virtual Server project. This project is similar to the MON project, but it is in C with multilayer TCP/IP stack checks. Keepalived implements a framework based on three family checks : Layer3, Layer4 & Layer5.
EZHA: open HA clustering package. An "easy to use" cluster HA tool, able to manage up to 16 nodes, using network links or raw devices for heartbeat links, working fine on Linux and SUN Solaris. It has a small GUI.
Linux Replicated High Availability Manager (freshmeat). Linuxha.net is a toolset that attempts to allow two node high availability clusters to be built under Linux using simple inexpensive hardware. Rather than using a single data image (made available via SCSI or Fibre Channel connected storage) Linuxha.net instead replicates the data between the two machines.
Mission Critical Linux's Kimberlite Open Source High-Availability system.
Jerome Etienne's VRRP implementation. Jerome implemented VRRPv2 as specfied by rfc2338.
Fake: Redundant server switch software home page
SGI's Linux FailSafe project. Linux FailSafe is the most complete and functional open source HA software. Unfortunately, it's pretty much dead on Linux
HP's Cluster Infrastructure for Linux. This project is developing a kernel-based infrastructure for Linux clustering by extending the Cluster Membership and Internode Communication Subsystems from HP's NonStop Clusters for SCO Unixware code base.
HP's Single System Image (SSI) Clusters for Linux. The SSI project incorporates HP's NonStop Clusters for SCO Unixware technology and other open source technology to provide a full, highly available SSI environment for Linux.
HAPPI High Availability Peer-to-Peer Implementation. HAPPI is a simple Perl-based high availability clustering technology that uses IP aliasing for IP-failover across a number of machines.
Dominque Chabord's Shaman-X software - providing opensource and free high-availability disaster tolerance, and crisis management software.
Ericsson's Eddie open source High-Availability Server farm project. It is written in Ericsson's own programming language Erlang/OTP.
Mnesia is a distributed Database Management System designed to handle failovers as part of Eddie.
Clusterit: parallel clustering software for *BSD systems.
Andreas Muller's HA-failover project. It seems like a nice implementation, mainly targeted at Solaris. Here is a summary from email he sent me:
Andrew Barnett's pl-cluster software. Andrew wasn't happy with heartbeat, so he wrote his own version. It uses multicast, and can run in listen-only mode. According to Andrew "It is alpha at best, YMMV".
Life (LInux Failover Extension) software for the Linux Virtual Server.
SRRD is the Service Routing Redundancy Daemon. SRRD was designed and developed starting September 2002 by Amir Guindehi <amir@srrd.org> as a master thesis at the Swiss Federal Institute of Technology in Zurich.
Failoverd (discontinued): Failover daemon home page. Failoverd is now VRRP-based.
Ninja: Highly Available, Scaleable Computing Environment.
Below is a list of white papers which have been brought to our attention. We don't agree with everything said here, but they are still probably interesting to many people.
There are current High Availability reports, white papers, product literature, webcasts, and case studies at Bitpipe
A High-Availability Cluster Checklist A Linux Journal Article by Tim Burke
A High-Availability Cluster for Linux A Linux Journal Article by Phil Lewis
Linux Journal #55 (November, 1998) article: High Availability Linux Web Servers by Aaron Gowatch
MontaVista HA white paper. by John Mehaffey <mehaf@mvista.com>
Ron Resnick's Taxonomy of High-Availability (originally prepared for Nortel). Basic definitions, and discussion of a few technologies.