More than one server across multiple datacenters is the only way. The use either a load balancer (which brings its own problems) or some kind of status aware DNS scheme to route traffic to live servers.
I wish linode would offer some kind of high availability load balancing like amazon ec2 does, that really is a killer feature.
I wouldn't be so sure that ELB's are actually failing whole IP addresses across availability zones. Given the current ELB architecture is heavily dependent on dynamic DNS resolution, I am pretty suspicious that they are using DNS for failover. The separate set of DNS servers specifically for elb.amazonaws.com and the 60 second TTLs on the CNAMEs they generate seem to indicate this. Of course, there is no documentation to either confirm, or deny this. Amazon simply states in vague terms that it's highly available, but doesn't state how it's designed, or even possible failure outcomes.
Hmmm. Interesting point. However, if that were the case, why would ELBs be restricted to single AWS regions?
Anyway, its a nice feature that it just works without me needing to set it up.
Simple: distribute your application across two isolated datacenters. I'm not trying to downplay the complexity of doing this, as I fully understand the amount of effort required. If the cost of being down for an hour or two isn't significant enough to warrant this level of effort, then a power outage caused by Linode's datacenter vendor probably isn't going to really cost you much either.