People are really creative in ways that you wouldn't believe, in order to get clusters running and reliable.
When it comes to clustering (or at least HA-clustering), there are shared-storage clusters and shared-nothing clusters. Shared storage clusters typically use cluster-aware filesystems on a centralized array, like a SAN. They use OCFS, GFS, or something similar.
Services running on these are sometimes Active/Active, where both machines are fully capable of providing a full range of services to clients, and typically use weighted or round-robin style load balancing, but could also be setup as Active/Passive, where the "preferred" machine acts as a server until it fails, in which case another cluster member takes over.
Shared-nothing clusters have been typically Active/Passive, since there needed to be a state change to activate the passive member. This is changing with the advent of things like DRBD, which uses block-level filesystem replication over the network.
Between one of these two methods, pretty much every service that I can think of can be replicated across an array of servers, especially if you don't care much where you put your state files. Even NFS can be replicated without clients freezing if everything including the lock files are referenced from the centralized storage.
Enterprise computing in general has been very dedicated to the mindset that single-machine uptime doesn't matter as much as service availability. To that end, services have been engineered such that one machine failure doesn't mean disruption to the users.