1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
|
Author: Yi Zhu.
linux-ha -.
|-- cts : Cluster Testing System (Python)
|-- include : linux-ha header files directory
|-- ldirectord : Linux Director Daemon (Perl) which monitors real services like http, https and ftp
|-- replace : replacement implementations for some common library (inet_pton, setenv, strerror, etc)
\-- lib -.
|-- apphb : client side application heartbeat library
|-- pils : Plugin system library
|-- recoverymgr : recovery manager client library
|-- clplumbing : cluster plumbing library (IPC, CPU, realtime, etc)
|-- plugins -.
| |-- AppHBNotification : Recovery manager client plug-in implementation
| |-- HBauth : heartbeat authentication (CRC, MD5 and SHA1)
| |-- HBcomm : heartbeat communication method (mcast, ucast, serial, etc)
| |-- InterfaceMgr : Generic interface (implementation) manager
| \-- stonith : stonith plugins
|-- stonith : stonith library and utility
|-- snmp_subagent : SNMP remote management for Linux-HA cluster
|-- doc : linux-ha documentation
|-- libltdl : GNU libltdl, a system independent dlopen wrapper for GNU libtool
|-- membership -. Directory for membership implementations
\-- ccm : Consensus Cluster Manager
|-- heartbeat : heartbeat framework
|-- contrib -.
| \-- ipfail : IP Failover plugin for Linux-HA
\-- telecom -.
|-- apphbd : application heartbeat daemon
\-- recoverymgrd : Recovery manager (apphbd error recovery only)
==============================================================================================================
OBSOLETE OR UNUSED DIRECTORIES:
|-- proc-ha : (at top level) Linux-HA /proc interface
|-- lib/tinyxml : XML parse library
|-- stonith (at top level) : OLD stonith library and utility
=============================================================================
A little more complete explanation of each of these directories, in non-pictorial
form:
-----------------------------------------------------------------------------
/contrib: A place to hold contributed code not yet part of the main system
..........................................................................
-----------------------------------------------------------------------------
/contrib/ipfail : IP Failover plugin for Linux-HA
.................................................
This code is a heartbeat client which forces failovers when IP connectivity
becomes compromised. It uses voting techniques to ensure that services
are being moved to a better node. It could be voting on anything which
we don't control and which is intrinsic to the local node. This is
my vision of its possible future. This code is reasonably mature at this
point, and really deserves to be moved out of the contrib directory.
-----------------------------------------------------------------------------
/cts : Cluster Testing System (Python)
......................................
CTS is how the majority of the testing for Linux-HA is done. This combined
with the BasicSanityCheck tool does all our automated testing. CTS generates
random cluster events and sees if the system recovers from them.
If you think we ought to test it, it needs to go in here or in the
BasicSanityCheck tool -- or it won't likely get done.
-----------------------------------------------------------------------------
/doc : linux-ha documentation
.............................
This is where various interesting READMEs and documents like the
GettingStarted and FAQ document live.
-----------------------------------------------------------------------------
/heartbeat : heartbeat framework
................................
This is the heartbeat program. It is one of the main things which people
currently use out of the Linux-HA project. It provides basic failover
services, a reasonable API, and some nice communication facilities.
The API is documented in the doc directory.
There is a paper on heartbeat dated Summer 2000 which can be found here:
http://linux-ha.org/comm/
-----------------------------------------------------------------------------
/include : linux-ha header files directory and subdirectories
.............................................................
-----------------------------------------------------------------------------
/ldirectord : Linux Director Daemon (Perl) which monitors real services
like http, https and ftp
.......................................................................
This code allows us to manage LVS instances for high-availability.
-----------------------------------------------------------------------------
/lib/apphb : Application heartbeat client library
.......................................................................
This code is what clients of the Application Heartbeat daemon in
telecom/apphbd link against to get application heartbeat services.
-----------------------------------------------------------------------------
/lib/clplumbing : cluster plumbing library (IPC, CPU, realtime, etc)
.......................................................................
There is a TON of really useful things in here. Although they're in one
directory, developers should really know about most of them. Headers
for these services can be found in the /include/clplumbing/ directory.
cl_log:
IPC code: abstraction for fast nonblocking sockets-like communication
manages queuing and other details quite nicely includes
an authentication API as part of it.
proctrack: child process tracking code
longclock: 64-bit timing services which don't move when clock is reset
GSource: functions to make high-level Glib mainloop sources
cl_poll: low-latency poll(2) call replacement code
realtime: manage realtime processes -- locking, priorities, etc.
uids: privilege management (become nobody, return to root, etc.)
cl_signal: signal wrapper code
Gmain_timeout
integrates longclock timers into Glib mainloop paradigm
base64: conversion to/from base64 for making strings from binary
cpulimits: provide limits on CPU consumption to keep realtime systems
from destroying the system if they run amok
mkstemp_mode:
safe(r) version of mkstemp(3)
timers: provides some simple millisecond resolution timer services
to use instead of alarm(2) and friends.
-----------------------------------------------------------------------------
/lib/pils: PILS plugin loading and interface management system
..............................................................
Reasonably nice plugin management software. It is documented by slides and
a paper. They can be found here:
http://linux-ha.org/heartbeat/PILS.pdf -- slides from PILS talk
http://linux-ha.org/heartbeat/pils.pdf -- paper on PILS
-----------------------------------------------------------------------------
/lib/plugins/ : Various kinds of PILS plugins
.............................................
-----------------------------------------------------------------------------
/lib/plugins/AppHBNotification : Recovery manager client plug-in implementation
...............................................................................
The apphb API provides for notification when HA-aware clients stop heartbeating
or exit abnormally. This notification is accomplished by providing and
configuring plugins which notify anyone you want any way you want. We
currently only have one such plugin -- one which notifies the recovery manager
daemon.
-----------------------------------------------------------------------------
/lib/plugins/HBauth : heartbeat authentication (CRC, MD5 and SHA1)
..................................................................
These plugins are used to generate and validate digital signatures for
heartbeat packets.
-------------------------------------------------------------------------------
/lib/plugins/HBcomm : heartbeat communication method (mcast, ucast, serial, etc)
................................................................................
These plugins are used to send and recieve packets for heartbeat.
-----------------------------------------------------------------------------
/lib/plugins/InterfaceMgr : PILS generic interface (implementation) manager
...........................................................................
These plugins are by PILS applications to load and manage other plugins.
-----------------------------------------------------------------------------
/lib/plugins/stonith : stonith implementation plugins
.....................................................
STONITH stands for Shoot The Other Node In The Head. Stonith is a method
of ensuring that misbehaving machines have really stopped using resources
by killing (shooting) them. It takes the speculation "I think node X is
dead", and makes it into a certainty. This directory contains the plugins
for implementing the STONITH API for various kinds of hardware which
actually carry out the dirty deed.
-----------------------------------------------------------------------------
/lib/recoverymgr : recovery manager client library
..................................................
This library provides services which send event notifications to the recovery
manager. It is used by the recovery manager plugin in AppHBNotification.
-----------------------------------------------------------------------------
/lib/stonith : stonith library and utility
..........................................
This is the library which people link against who want STONITH services.
There is also a "stonith" program used for testing the implementations.
-----------------------------------------------------------------------------
/libltdl : GNU libltdl, a system independent dlopen wrapper for GNU libtool
...........................................................................
Magic libtool stuff. We need it -- even if I don't understand it ;-)
-----------------------------------------------------------------------------
/membership: Membership implementations
.......................................
Implementations of membership APIs. Perhaps we should have a common API
library or plugin set that folks could use to avoid duplicating and fixing
that for each implementation.
-----------------------------------------------------------------------------
/membership/ccm : Consensus Cluster Membership (CCM) implementation
...................................................................
Ram Pai's consensus cluster membership implementation. Includes a quorum
capability. Built on top of the heartbeat API.
-----------------------------------------------------------------------------
/replace : replacement implementations for some common library functions
(inet_pton, setenv, strerror, etc)
.......................................................................
autoconf portability stuff.
-----------------------------------------------------------------------------
/snmp_subagent : SNMP remote management for Linux-HA cluster
............................................................
We have an SNMP MIB reserved for Linux-HA. This code is supposed to implement
various kinds of SNMP queries and traps. It was written by Yixiong Zou.
------------------------------------------------------------------------------
/telecom : telecommunication type functions required for HA-aware applications
..............................................................................
Things here aren't *strictly* for telecom type applications, but I had to
name it something... ;-)
-----------------------------------------------------------------------------
/telecom/apphbd: application heartbeat daemon
.............................................
The application heartbeat daemon. Processes register with apphbd, and then
when they fail to heartbeat "often enough", or they die without unregistering,
various interested parties are notified according to the configured set
of plugins. Currently, we only have a plugin for the recovery manager
daemon.
-----------------------------------------------------------------------------
/telecom/recoverymgrd : Recovery manager (apphbd error recovery only)
.....................................................................
This program takes configured actions to recover from problems that apphbd
notifies it of. This typically involves killing and restarting the errant
processes.
|