The venerable Pfister [1] gives a very good survey of the overall state of clustering on commodity machines. From his definitions, we will be concentrating exclusively on High Availability (HA) and excluding any form of clustering to achieve greater computational throughput (Usually referred to as High Performance Computing [HPC]).
The type of HA cluster plays a role in cluster selection (see section 2) since that governs its speed and recoverability but the primary thing to consider is service availability: availability is often measured as the ratio of down time[*] to up time [2]. Thus, in its crudest sense, High Availability is anything that increases Availability to a given level (often called the class of nines).
There are two ways to increase Availability: improve up time and reduce down time. The former can often be achieved by carefully planning the implementation of your application/cluster. The latter often requires the implementation of some type of clustering software.
So, the real question is what do you need to do to increase Availability.